diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-12-17 14:28:25 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-12-17 14:28:25 +0000 |
commit | ead4fdf1f14b5c3ecfbc6b88bbf1a0e731d3ea13 (patch) | |
tree | e5b77944e52062f22dbc8a1b8adec193d13b8e8c | |
parent | 5b89536395b532e594232adf388393cdc8143e06 (diff) | |
download | upstream-ead4fdf1f14b5c3ecfbc6b88bbf1a0e731d3ea13.tar.gz upstream-ead4fdf1f14b5c3ecfbc6b88bbf1a0e731d3ea13.tar.bz2 upstream-ead4fdf1f14b5c3ecfbc6b88bbf1a0e731d3ea13.zip |
ath9k: fix a locking issue in the tx path
SVN-Revision: 29560
-rw-r--r-- | package/mac80211/patches/565-ath9k_fix_lockup.patch | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/package/mac80211/patches/565-ath9k_fix_lockup.patch b/package/mac80211/patches/565-ath9k_fix_lockup.patch new file mode 100644 index 0000000000..c1721eba53 --- /dev/null +++ b/package/mac80211/patches/565-ath9k_fix_lockup.patch @@ -0,0 +1,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); + } |