summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/562-ath9k_fix_flush.patch
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-11-15 14:53:21 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-11-15 14:53:21 +0000
commitccd11de0ba26fb0f2f95e5936820a382c30ab43a (patch)
tree4a5f777fa4e1a7b8eac129da51325763ecf42438 /package/mac80211/patches/562-ath9k_fix_flush.patch
parente512826d645cf8610454a41755b9671aeb42c827 (diff)
ath9k: reorganize patches, reset hardware after full sleep (fixes #10349)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29155 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/562-ath9k_fix_flush.patch')
-rw-r--r--package/mac80211/patches/562-ath9k_fix_flush.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/package/mac80211/patches/562-ath9k_fix_flush.patch b/package/mac80211/patches/562-ath9k_fix_flush.patch
new file mode 100644
index 000000000..a5329adc9
--- /dev/null
+++ b/package/mac80211/patches/562-ath9k_fix_flush.patch
@@ -0,0 +1,45 @@
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -2268,9 +2268,6 @@ static void ath9k_flush(struct ieee80211
+ return;
+ }
+
+- if (drop)
+- timeout = 1;
+-
+ for (j = 0; j < timeout; j++) {
+ bool npend = false;
+
+@@ -2288,21 +2285,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);
+ }