linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 3.5 1/4] ath9k: stop rx dma before stopping tx
@ 2012-05-24 12:32 Felix Fietkau
  2012-05-24 12:32 ` [PATCH 3.5 2/4] ath9k: fix a use-after-free-bug when ath_tx_setup_buffer() fails Felix Fietkau
  0 siblings, 1 reply; 6+ messages in thread
From: Felix Fietkau @ 2012-05-24 12:32 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville, mcgrof

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>
---
 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);
-- 
1.7.3.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-05-27 18:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-24 12:32 [PATCH 3.5 1/4] ath9k: stop rx dma before stopping tx Felix Fietkau
2012-05-24 12:32 ` [PATCH 3.5 2/4] ath9k: fix a use-after-free-bug when ath_tx_setup_buffer() fails Felix Fietkau
2012-05-24 12:32   ` [PATCH 3.5 3/4] ath9k_hw: update AR933x initvals to fix issues with high power devices Felix Fietkau
2012-05-24 12:32     ` [PATCH 3.5 4/4] ath9k_hw: apply internal regulator settings on AR933x Felix Fietkau
2012-05-25 15:08     ` [PATCH 3.5 3/4] ath9k_hw: update AR933x initvals to fix issues with high power devices John W. Linville
2012-05-27 18:10       ` Felix Fietkau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).