tx: restart schedule after sending a BAR, fixes an unlikely race condition

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2015-10-12 14:22:27 +02:00
parent 0169cab3e4
commit 35c24b4db0
+2 -1
View File
@@ -371,6 +371,7 @@ mt76_txq_schedule_list(struct mt76_dev *dev, struct mt76_queue *hwq)
struct mt76_txq *mtxq, *mtxq_last;
int len = 0;
restart:
mtxq_last = list_last_entry(&hwq->swq, struct mt76_txq, list);
while (1) {
bool empty = false;
@@ -385,7 +386,7 @@ mt76_txq_schedule_list(struct mt76_dev *dev, struct mt76_queue *hwq)
ieee80211_send_bar(txq->vif, txq->sta->addr, txq->tid,
mtxq->agg_ssn);
spin_lock_bh(&hwq->lock);
continue;
goto restart;
}
list_del_init(&mtxq->list);