int mt76_mcu_skb_send_and_get_msg(struct mt76_dev *dev, struct sk_buff *skb, int cmd, bool wait_resp, struct sk_buff **ret_skb)
{ unsignedint retry = 0; struct sk_buff *orig_skb = NULL; unsignedlong expires; int ret, seq;
if (mt76_is_sdio(dev)) if (test_bit(MT76_RESET, &dev->phy.state) && atomic_read(&dev->bus_hung)) return -EIO;
if (ret_skb)
*ret_skb = NULL;
mutex_lock(&dev->mcu.mutex);
if (dev->mcu_ops->mcu_skb_prepare_msg) {
orig_skb = skb;
ret = dev->mcu_ops->mcu_skb_prepare_msg(dev, skb, cmd, &seq); if (ret < 0) goto out;
}
retry: /* orig skb might be needed for retry, mcu_skb_send_msg consumes it */ if (orig_skb)
skb_get(orig_skb);
ret = dev->mcu_ops->mcu_skb_send_msg(dev, skb, cmd, &seq); if (ret < 0) goto out;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.