mt76: mt76x02: send no-skb tx status without holding the status lock

Simplifies locking and reduces lock contention

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2019-03-22 13:29:47 +01:00
parent e7bd802cf7
commit 4d8c7e8284
+6 -1
View File
@@ -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();
}