aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-11-13 17:38:22 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-11-13 17:38:22 +0000
commit5a05cb40ce04154772ab333bc1587beaad68717d (patch)
tree9d5687fe4dc59868af284227d798272c96ca094e /package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch
parentbfcdc8711cc437f836fa529183e35c0e845da4fc (diff)
downloadupstream-5a05cb40ce04154772ab333bc1587beaad68717d.tar.gz
upstream-5a05cb40ce04154772ab333bc1587beaad68717d.tar.bz2
upstream-5a05cb40ce04154772ab333bc1587beaad68717d.zip
ath9k: fix crashes when using shared IRQs
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 43239
Diffstat (limited to 'package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch')
-rw-r--r--package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch b/package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch
new file mode 100644
index 0000000000..c382e5d103
--- /dev/null
+++ b/package/kernel/mac80211/patches/310-ath9k-set-ATH_OP_INVALID-before-disabling-hardware.patch
@@ -0,0 +1,29 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Thu, 13 Nov 2014 18:29:00 +0100
+Subject: [PATCH] ath9k: set ATH_OP_INVALID before disabling hardware
+
+Closes another small IRQ handler race
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -885,6 +885,9 @@ static void ath9k_stop(struct ieee80211_
+ &sc->cur_chan->chandef);
+
+ ath9k_hw_reset(ah, ah->curchan, ah->caldata, false);
++
++ set_bit(ATH_OP_INVALID, &common->op_flags);
++
+ ath9k_hw_phy_disable(ah);
+
+ ath9k_hw_configpcipowersave(ah, true);
+@@ -893,7 +896,6 @@ static void ath9k_stop(struct ieee80211_
+
+ ath9k_ps_restore(sc);
+
+- set_bit(ATH_OP_INVALID, &common->op_flags);
+ sc->ps_idle = prev_idle;
+
+ mutex_unlock(&sc->mutex);