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>
This commit is contained in:
parent
9b4760e301
commit
ceea2a5196
1 changed files with 4 additions and 3 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue