diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-09-23 17:28:19 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-09-23 17:28:19 +0000 |
commit | a0d42d3cda7aba9b28fbee28c5fcc977ffc5fbf9 (patch) | |
tree | 14265ba8370ca8822eb1936db2e81bd57e30daa5 /package/madwifi/patches/355-eap_auth_disassoc.patch | |
parent | 1e232a2ad2d353f7d125b9e993cd8f6152900937 (diff) |
madwifi: fix locking issues in state machine changes
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12670 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/madwifi/patches/355-eap_auth_disassoc.patch')
-rw-r--r-- | package/madwifi/patches/355-eap_auth_disassoc.patch | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/package/madwifi/patches/355-eap_auth_disassoc.patch b/package/madwifi/patches/355-eap_auth_disassoc.patch index 9b589649ff..7774d6bdd5 100644 --- a/package/madwifi/patches/355-eap_auth_disassoc.patch +++ b/package/madwifi/patches/355-eap_auth_disassoc.patch @@ -5,21 +5,17 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- a/ath/if_ath.c +++ b/ath/if_ath.c -@@ -8328,6 +8328,18 @@ +@@ -8328,6 +8328,14 @@ #endif if (ts->ts_status & HAL_TXERR_XRETRY) { sc->sc_stats.ast_tx_xretries++; -+ if (SKB_CB(bf->bf_skb)->auth_pkt && (ni->ni_vap->iv_opmode == IEEE80211_M_STA)) { -+ struct ieee80211com *ic = &sc->sc_ic; ++ if (SKB_CB(bf->bf_skb)->auth_pkt && ++ (ni->ni_vap->iv_opmode == IEEE80211_M_STA)) { ++ struct ieee80211vap *vap = ni->ni_vap; + + /* if roaming is enabled, try reassociating, otherwise + * disassociate and go back to the scan state */ -+ IEEE80211_VAPS_LOCK_BH(ic); -+ if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) -+ ni->ni_vap->iv_newstate(ni->ni_vap, IEEE80211_S_ASSOC, 1); -+ else -+ ni->ni_vap->iv_newstate(ni->ni_vap, IEEE80211_S_SCAN, 0); -+ IEEE80211_VAPS_UNLOCK_BH(ic); ++ vap->iv_mgtsend.function(vap->iv_mgtsend.data); + } if (ni->ni_flags & IEEE80211_NODE_UAPSD_TRIG) { ni->ni_stats.ns_tx_eosplost++; |