diff options
| author | Felix Fietkau <nbd@openwrt.org> | 2010-11-19 21:08:47 -0500 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2010-11-22 15:19:31 -0500 |
| commit | d47844a014fada1a788719f6426bc7044f2a0fd8 (patch) | |
| tree | d494b2054a2b02e2cf0e3bdfdac16131f1a492c8 /drivers | |
| parent | 3bf30b56c4f0a1c4fae34050b7db4527c92891e8 (diff) | |
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>
Diffstat (limited to 'drivers')
| -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) | |||
| 518 | bool stopped; | 518 | bool stopped; |
| 519 | 519 | ||
| 520 | spin_lock_bh(&sc->rx.rxbuflock); | 520 | spin_lock_bh(&sc->rx.rxbuflock); |
| 521 | ath9k_hw_stoppcurecv(ah); | 521 | ath9k_hw_abortpcurecv(ah); |
| 522 | ath9k_hw_setrxfilter(ah, 0); | 522 | ath9k_hw_setrxfilter(ah, 0); |
| 523 | stopped = ath9k_hw_stopdmarecv(ah); | 523 | stopped = ath9k_hw_stopdmarecv(ah); |
| 524 | 524 | ||
