diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-11-15 14:53:21 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-11-15 14:53:21 +0000 |
commit | 5891c99757cbe9e9c322c6e9c5f903481ac44dde (patch) | |
tree | 4a5f777fa4e1a7b8eac129da51325763ecf42438 /package/mac80211/patches/562-ath9k_fix_flush.patch | |
parent | e05e38cbdaca099f4c8653e094f17a6dfed2c73c (diff) | |
download | master-187ad058-5891c99757cbe9e9c322c6e9c5f903481ac44dde.tar.gz master-187ad058-5891c99757cbe9e9c322c6e9c5f903481ac44dde.tar.bz2 master-187ad058-5891c99757cbe9e9c322c6e9c5f903481ac44dde.zip |
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.patch | 45 |
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 0000000000..a5329adc96 --- /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); + } |