summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSujith <Sujith.Manoharan@atheros.com>2010-01-08 06:06:09 +0100
committerJohn W. Linville <linville@tuxdriver.com>2010-01-12 20:02:06 +0100
commitcc9c378aa57817003a094e4bb9a953337ebf035a (patch)
tree99bc52a7a71dd7699b4fdd787e46a3699aa7b546 /drivers
parentath9k: Cleanup init/deinit routines (diff)
downloadlinux-cc9c378aa57817003a094e4bb9a953337ebf035a.tar.xz
linux-cc9c378aa57817003a094e4bb9a953337ebf035a.zip
ath9k: Fix queue handling
The TX queues have to be stopped during an internal reset. Not handling this would result in packet loss - fix this. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 974de2056b4a..1f7222aef89f 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -944,6 +944,8 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
/* Stop ANI */
del_timer_sync(&common->ani.timer);
+ ieee80211_stop_queues(hw);
+
ath9k_hw_set_interrupts(ah, 0);
ath_drain_all_txq(sc, retry_tx);
ath_stoprecv(sc);
@@ -985,6 +987,8 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
}
}
+ ieee80211_wake_queues(hw);
+
/* Start ANI */
ath_start_ani(common);