Commit 01d4ab96 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville

ath9k: limit tx path hang check to normal data queues

The beacon and multicast-buffer queues are managed by the beacon
tasklet, and the generic tx path hang check does not help in any way
here. Running it on those queues anyway can introduce some race
conditions leading to unnecessary chip resets.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 74632d11
...@@ -28,21 +28,21 @@ void ath_tx_complete_poll_work(struct work_struct *work) ...@@ -28,21 +28,21 @@ void ath_tx_complete_poll_work(struct work_struct *work)
int i; int i;
bool needreset = false; bool needreset = false;
for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) for (i = 0; i < IEEE80211_NUM_ACS; i++) {
if (ATH_TXQ_SETUP(sc, i)) { txq = sc->tx.txq_map[i];
txq = &sc->tx.txq[i];
ath_txq_lock(sc, txq); ath_txq_lock(sc, txq);
if (txq->axq_depth) { if (txq->axq_depth) {
if (txq->axq_tx_inprogress) { if (txq->axq_tx_inprogress) {
needreset = true; needreset = true;
ath_txq_unlock(sc, txq); ath_txq_unlock(sc, txq);
break; break;
} else { } else {
txq->axq_tx_inprogress = true; txq->axq_tx_inprogress = true;
}
} }
ath_txq_unlock_complete(sc, txq);
} }
ath_txq_unlock_complete(sc, txq);
}
if (needreset) { if (needreset) {
ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, ath_dbg(ath9k_hw_common(sc->sc_ah), RESET,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment