diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-03-15 22:24:36 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-03-15 22:24:36 +0000 |
commit | 453d20849b198e9afd015e0009f6ade32db69a52 (patch) | |
tree | bec98de8f0ab0c1d88a76873ba7df281461ffc99 /package | |
parent | d3063b986ada9a588e507de88e05e5b63817d0c2 (diff) | |
download | upstream-453d20849b198e9afd015e0009f6ade32db69a52.tar.gz upstream-453d20849b198e9afd015e0009f6ade32db69a52.tar.bz2 upstream-453d20849b198e9afd015e0009f6ade32db69a52.zip |
ath9k: add a fix to reduce the number of spurious tx hang detections
Backport of r36040
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@36052 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 7cc4569673..ad9c5004a8 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -2071,3 +2071,40 @@ #define ATH_RSSI_LPF_LEN 10 #define RSSI_LPF_THRESHOLD -20 #define ATH_RSSI_EP_MULTIPLIER (1<<7) +--- a/drivers/net/wireless/ath/ath9k/link.c ++++ b/drivers/net/wireless/ath/ath9k/link.c +@@ -31,21 +31,21 @@ void ath_tx_complete_poll_work(struct wo + sc->tx_complete_poll_work_seen++; + #endif + +- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) +- if (ATH_TXQ_SETUP(sc, i)) { +- txq = &sc->tx.txq[i]; +- ath_txq_lock(sc, txq); +- if (txq->axq_depth) { +- if (txq->axq_tx_inprogress) { +- needreset = true; +- ath_txq_unlock(sc, txq); +- break; +- } else { +- txq->axq_tx_inprogress = true; +- } ++ for (i = 0; i < IEEE80211_NUM_ACS; i++) { ++ txq = sc->tx.txq_map[i]; ++ ++ ath_txq_lock(sc, txq); ++ if (txq->axq_depth) { ++ if (txq->axq_tx_inprogress) { ++ needreset = true; ++ ath_txq_unlock(sc, txq); ++ break; ++ } else { ++ txq->axq_tx_inprogress = true; + } +- ath_txq_unlock_complete(sc, txq); + } ++ ath_txq_unlock_complete(sc, txq); ++ } + + if (needreset) { + ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, |