1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-09 17:45:00 +02:00
openwrt-xburst/package/mac80211/patches/561-ath9k_fix_flush.patch
nbd 10c40322a2 ath9k: rework radio stop/start cleanup, avoid duplicate rx/tx stop, avoid early phy stop
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29132 3c298f89-4303-0410-b956-a3cf2f4a3e73
2011-11-14 21:21:03 +00:00

46 lines
978 B
Diff

--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -2251,9 +2251,6 @@ static void ath9k_flush(struct ieee80211
return;
}
- if (drop)
- timeout = 1;
-
for (j = 0; j < timeout; j++) {
bool npend = false;
@@ -2271,21 +2268,22 @@ static void ath9k_flush(struct ieee80211
}
if (!npend)
- goto out;
+ break;
}
- ath9k_ps_wakeup(sc);
- spin_lock_bh(&sc->sc_pcu_lock);
- drain_txq = ath_drain_all_txq(sc, false);
- spin_unlock_bh(&sc->sc_pcu_lock);
+ if (drop) {
+ ath9k_ps_wakeup(sc);
+ spin_lock_bh(&sc->sc_pcu_lock);
+ drain_txq = ath_drain_all_txq(sc, false);
+ spin_unlock_bh(&sc->sc_pcu_lock);
- if (!drain_txq)
- ath_reset(sc, false);
+ if (!drain_txq)
+ ath_reset(sc, false);
- ath9k_ps_restore(sc);
- ieee80211_wake_queues(hw);
+ ath9k_ps_restore(sc);
+ ieee80211_wake_queues(hw);
+ }
-out:
ieee80211_queue_delayed_work(hw, &sc->tx_complete_work, 0);
mutex_unlock(&sc->mutex);
}