diff --git a/mt76x02_mac.c b/mt76x02_mac.c index 6a899260..66ec3272 100644 --- a/mt76x02_mac.c +++ b/mt76x02_mac.c @@ -474,6 +474,7 @@ void mt76x02_send_tx_status(struct mt76x02_dev *dev, struct mt76x02_sta *msta = NULL; struct mt76_dev *mdev = &dev->mt76; struct sk_buff_head list; + bool status_noskb = false; if (stat->pktid == MT_PACKET_ID_NO_ACK) return; @@ -528,10 +529,14 @@ void mt76x02_send_tx_status(struct mt76x02_dev *dev, if (status.skb) mt76_tx_status_skb_done(mdev, status.skb, &list); else - ieee80211_tx_status_ext(mt76_hw(dev), &status); + status_noskb = true; out: mt76_tx_status_unlock(mdev, &list); + + if (status_noskb) + ieee80211_tx_status_ext(mt76_hw(dev), &status); + rcu_read_unlock(); }