22 lines
686 B
Diff
22 lines
686 B
Diff
|
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||
|
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||
|
@@ -329,6 +329,7 @@ static void ath_tx_complete_aggr(struct
|
||
|
int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0;
|
||
|
bool rc_update = true;
|
||
|
struct ieee80211_tx_rate rates[4];
|
||
|
+ unsigned long flags;
|
||
|
|
||
|
skb = bf->bf_mpdu;
|
||
|
hdr = (struct ieee80211_hdr *)skb->data;
|
||
|
@@ -344,6 +345,10 @@ static void ath_tx_complete_aggr(struct
|
||
|
sta = ieee80211_find_sta_by_hw(hw, hdr->addr1);
|
||
|
if (!sta) {
|
||
|
rcu_read_unlock();
|
||
|
+
|
||
|
+ spin_lock_irqsave(&sc->tx.txbuflock, flags);
|
||
|
+ list_splice_tail_init(bf_q, &sc->tx.txbuf);
|
||
|
+ spin_unlock_irqrestore(&sc->tx.txbuflock, flags);
|
||
|
return;
|
||
|
}
|
||
|
|