Lines Matching +full:- +full:- +full:retry
1 // SPDX-License-Identifier: ISC
12 const struct mt76_mcu_ops *ops = dev->mcu_ops; in __mt76_mcu_msg_alloc()
16 len = ops->headroom + len + ops->tailroom; in __mt76_mcu_msg_alloc()
22 memset(skb->head, 0, len); in __mt76_mcu_msg_alloc()
23 skb_reserve(skb, ops->headroom); in __mt76_mcu_msg_alloc()
40 timeout = expires - jiffies; in mt76_mcu_get_response()
41 wait_event_timeout(dev->mcu.wait, in mt76_mcu_get_response()
42 (!skb_queue_empty(&dev->mcu.res_q) || in mt76_mcu_get_response()
43 test_bit(MT76_MCU_RESET, &dev->phy.state)), in mt76_mcu_get_response()
45 return skb_dequeue(&dev->mcu.res_q); in mt76_mcu_get_response()
51 skb_queue_tail(&dev->mcu.res_q, skb); in mt76_mcu_rx_event()
52 wake_up(&dev->mcu.wait); in mt76_mcu_rx_event()
61 if (dev->mcu_ops->mcu_send_msg) in mt76_mcu_send_and_get_msg()
62 return dev->mcu_ops->mcu_send_msg(dev, cmd, data, len, wait_resp); in mt76_mcu_send_and_get_msg()
66 return -ENOMEM; in mt76_mcu_send_and_get_msg()
76 unsigned int retry = 0; in mt76_mcu_skb_send_and_get_msg() local
84 mutex_lock(&dev->mcu.mutex); in mt76_mcu_skb_send_and_get_msg()
86 if (dev->mcu_ops->mcu_skb_prepare_msg) { in mt76_mcu_skb_send_and_get_msg()
88 ret = dev->mcu_ops->mcu_skb_prepare_msg(dev, skb, cmd, &seq); in mt76_mcu_skb_send_and_get_msg()
93 retry: in mt76_mcu_skb_send_and_get_msg()
94 /* orig skb might be needed for retry, mcu_skb_send_msg consumes it */ in mt76_mcu_skb_send_and_get_msg()
97 ret = dev->mcu_ops->mcu_skb_send_msg(dev, skb, cmd, &seq); in mt76_mcu_skb_send_and_get_msg()
106 expires = jiffies + dev->mcu.timeout; in mt76_mcu_skb_send_and_get_msg()
110 if (!skb && !test_bit(MT76_MCU_RESET, &dev->phy.state) && in mt76_mcu_skb_send_and_get_msg()
111 orig_skb && retry++ < dev->mcu_ops->max_retry) { in mt76_mcu_skb_send_and_get_msg()
112 dev_err(dev->dev, "Retry message %08x (seq %d)\n", in mt76_mcu_skb_send_and_get_msg()
115 goto retry; in mt76_mcu_skb_send_and_get_msg()
118 ret = dev->mcu_ops->mcu_parse_response(dev, cmd, skb, seq); in mt76_mcu_skb_send_and_get_msg()
123 } while (ret == -EAGAIN); in mt76_mcu_skb_send_and_get_msg()
128 mutex_unlock(&dev->mcu.mutex); in mt76_mcu_skb_send_and_get_msg()
147 len -= cur_len; in __mt76_mcu_send_firmware()
149 if (dev->queue_ops->tx_cleanup) in __mt76_mcu_send_firmware()
150 dev->queue_ops->tx_cleanup(dev, in __mt76_mcu_send_firmware()
151 dev->q_mcu[MT_MCUQ_FWDL], in __mt76_mcu_send_firmware()