1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-25 19:23:20 +02:00
openwrt-xburst/package/mac80211/patches/561-ath9k_fix_flush.patch
nbd db6dd42004 ath9k: add some fixes for radio reinit and frame flush
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28772 3c298f89-4303-0410-b956-a3cf2f4a3e73
2011-11-05 19:51:32 +00:00

46 lines
978 B
Diff

--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -2259,9 +2259,6 @@ static void ath9k_flush(struct ieee80211
return;
}
- if (drop)
- timeout = 1;
-
for (j = 0; j < timeout; j++) {
bool npend = false;
@@ -2279,21 +2276,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);
}