summaryrefslogtreecommitdiff
path: root/package/madwifi/patches/355-eap_auth_disassoc.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-09-23 17:28:19 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-09-23 17:28:19 +0000
commitdeb3f959967461c250f5f1d4b6bbcb63911a4b51 (patch)
treeb7ff136c8de38e28c7e6bf9534dde9a4dd4d2d7d /package/madwifi/patches/355-eap_auth_disassoc.patch
parent216c6cd8a9cc2afff60d833dd462c3801a3e1bb2 (diff)
downloadmtk-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/355-eap_auth_disassoc.patch')
-rw-r--r--package/madwifi/patches/355-eap_auth_disassoc.patch14
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 9b58964..7774d6b 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++;