diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-09-23 17:28:19 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-09-23 17:28:19 +0000 |
commit | deb3f959967461c250f5f1d4b6bbcb63911a4b51 (patch) | |
tree | b7ff136c8de38e28c7e6bf9534dde9a4dd4d2d7d /package/madwifi/patches/371-wds_sta_separation.patch | |
parent | 216c6cd8a9cc2afff60d833dd462c3801a3e1bb2 (diff) | |
download | mtk-20170518-deb3f959967461c250f5f1d4b6bbcb63911a4b51.zip mtk-20170518-deb3f959967461c250f5f1d4b6bbcb63911a4b51.tar.gz mtk-20170518-deb3f959967461c250f5f1d4b6bbcb63911a4b51.tar.bz2 |
madwifi: fix locking issues in state machine changes
SVN-Revision: 12670
Diffstat (limited to 'package/madwifi/patches/371-wds_sta_separation.patch')
-rw-r--r-- | package/madwifi/patches/371-wds_sta_separation.patch | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/package/madwifi/patches/371-wds_sta_separation.patch b/package/madwifi/patches/371-wds_sta_separation.patch index 9178594..a37ebd4 100644 --- a/package/madwifi/patches/371-wds_sta_separation.patch +++ b/package/madwifi/patches/371-wds_sta_separation.patch @@ -486,25 +486,6 @@ /* Locking */ /* NB: beware, spin_is_locked() is not usefully defined for !(DEBUG || SMP) * because spinlocks do not exist in this configuration. Instead IRQs -@@ -167,6 +196,18 @@ - IEEE80211_VAPS_LOCK_ASSERT(_ic); \ - spin_unlock_bh(&(_ic)->ic_vapslock); \ - } while (0) -+#define IEEE80211_VAPS_LOCK_IRQ(_ic) do { \ -+ unsigned long __vlockflags; \ -+ IEEE80211_VAPS_LOCK_CHECK(_ic); \ -+ spin_lock_irqsave(&(_ic)->ic_vapslock, __vlockflags); -+#define IEEE80211_VAPS_UNLOCK_IRQ(_ic) \ -+ IEEE80211_VAPS_LOCK_ASSERT(_ic); \ -+ spin_unlock_irqrestore(&(_ic)->ic_vapslock, __vlockflags); \ -+} while (0) -+#define IEEE80211_VAPS_UNLOCK_IRQ_EARLY(_ic) \ -+ IEEE80211_VAPS_LOCK_ASSERT(_ic); \ -+ spin_unlock_irqrestore(&(_ic)->ic_vapslock, __vlockflags); -+ - - #if (defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)) && defined(spin_is_locked) - #define IEEE80211_VAPS_LOCK_ASSERT(_ic) \ --- a/net80211/ieee80211_proto.c +++ b/net80211/ieee80211_proto.c @@ -1081,6 +1081,8 @@ @@ -550,18 +531,6 @@ ieee80211_new_state(vap, IEEE80211_S_INIT, -1); if (dev->flags & IFF_RUNNING) { dev->flags &= ~IFF_RUNNING; /* mark us stopped */ -@@ -1342,9 +1366,9 @@ - struct ieee80211com *ic = vap->iv_ic; - int rc; - -- IEEE80211_VAPS_LOCK_BH(ic); -+ IEEE80211_VAPS_LOCK_IRQ(ic); - rc = vap->iv_newstate(vap, nstate, arg); -- IEEE80211_VAPS_UNLOCK_BH(ic); -+ IEEE80211_VAPS_UNLOCK_IRQ(ic); - return rc; - } - @@ -1630,6 +1654,7 @@ */ if (ni->ni_authmode != IEEE80211_AUTH_8021X) |