diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-05-24 14:32:19 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-05-29 13:45:22 -0400 |
commit | ceea2a51969f8b578777c99ec2718021427770c3 (patch) | |
tree | df99c019ce82ef67a2944c2b3db34cbc98f28943 | |
parent | 9b4760e301e1cceb0b49bd2b921d6b394d364584 (diff) | |
download | op-kernel-dev-ceea2a51969f8b578777c99ec2718021427770c3.zip op-kernel-dev-ceea2a51969f8b578777c99ec2718021427770c3.tar.gz |
ath9k: stop rx dma before stopping tx
It has been found that active Rx can interfere with stopping tx DMA, which
could result in at least parts of those "Failed to stop Tx DMA!" messages.
Stopping rx before tx should prevent that.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index dfa78e8..4de4473 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -239,7 +239,7 @@ static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) { struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); - bool ret; + bool ret = true; ieee80211_stop_queues(sc->hw); @@ -250,11 +250,12 @@ static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) ath9k_debug_samp_bb_mac(sc); ath9k_hw_disable_interrupts(ah); - ret = ath_drain_all_txq(sc, retry_tx); - if (!ath_stoprecv(sc)) ret = false; + if (!ath_drain_all_txq(sc, retry_tx)) + ret = false; + if (!flush) { if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_rx_tasklet(sc, 1, true); |