summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/565-ath9k_fix_lockup.patch
blob: c1721eba53ebfeadbdd33ddbff01eb3a7326f08d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -189,8 +189,11 @@ static void ath_tx_flush_tid(struct ath_
 		tid->state &= ~AGGR_CLEANUP;
 	}
 
-	if (sendbar)
+	if (sendbar) {
+		spin_unlock_bh(&txq->axq_lock);
 		ath_send_bar(tid, tid->seq_start);
+		spin_lock_bh(&txq->axq_lock);
+	}
 }
 
 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
@@ -566,7 +569,9 @@ static void ath_tx_complete_aggr(struct 
 
 	if (bar_index >= 0) {
 		u16 bar_seq = ATH_BA_INDEX2SEQ(seq_first, bar_index);
+		spin_unlock_bh(&txq->axq_lock);
 		ath_send_bar(tid, ATH_BA_INDEX2SEQ(seq_first, bar_index + 1));
+		spin_lock_bh(&txq->axq_lock);
 		if (BAW_WITHIN(tid->seq_start, tid->baw_size, bar_seq))
 			tid->bar_index = ATH_BA_INDEX(tid->seq_start, bar_seq);
 	}