diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-11-20 03:08:47 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-11-22 15:19:31 -0500 |
commit | d47844a014fada1a788719f6426bc7044f2a0fd8 (patch) | |
tree | d494b2054a2b02e2cf0e3bdfdac16131f1a492c8 | |
parent | 3bf30b56c4f0a1c4fae34050b7db4527c92891e8 (diff) | |
download | lwn-d47844a014fada1a788719f6426bc7044f2a0fd8.tar.gz lwn-d47844a014fada1a788719f6426bc7044f2a0fd8.zip |
ath9k: fix timeout on stopping rx dma
It seems that using ath9k_hw_stoppcurecv to stop rx dma is not enough.
When it's time to stop DMA, the PCU is still busy, so the rx enable
bit never clears.
Using ath9k_hw_abortpcurecv helps with getting rx stopped much faster,
with this change, I cannot reproduce the rx stop related WARN_ON anymore.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index c76ea53c20ce..1a62e351ec77 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -518,7 +518,7 @@ bool ath_stoprecv(struct ath_softc *sc) bool stopped; spin_lock_bh(&sc->rx.rxbuflock); - ath9k_hw_stoppcurecv(ah); + ath9k_hw_abortpcurecv(ah); ath9k_hw_setrxfilter(ah, 0); stopped = ath9k_hw_stopdmarecv(ah); |