ath9k: Fix TX queue stuck issue.
authorSenthil Balasubramanian <senthilkumar@atheros.com>
Wed, 23 Mar 2011 17:37:22 +0000 (23:07 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 23 Mar 2011 19:22:05 +0000 (15:22 -0400)
commit 86271e460a66003dc1f4cbfd845adafb790b7587 introduced a
regression that caused mac80211 queues in stopped state.

ath_drain_all_txq is called in driver flush which would reset
the stopped flag and the mac80211 queues were never started
after that. iperf traffic is completely stalled due to this issue.

Restart the mac80211 queues in driver flush only if the txqs were
drained.

Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index 115f162c617a92e56397be609b3e55d79913ac82..524825720a09dfcb930d132109ad1cef6391670e 100644 (file)
@@ -2160,6 +2160,8 @@ static void ath9k_flush(struct ieee80211_hw *hw, bool drop)
        if (!ath_drain_all_txq(sc, false))
                ath_reset(sc, false);
 
+       ieee80211_wake_queues(hw);
+
 out:
        ieee80211_queue_delayed_work(hw, &sc->tx_complete_work, 0);
        mutex_unlock(&sc->mutex);