X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/a2c8edeafcd46654b20aa3a3aa7d516246d80c36..31a40f97ef54e10e2b3dc3cacb9cff436657c586:/package/madwifi/patches/451-ibss_race_fix.patch?ds=inline diff --git a/package/madwifi/patches/451-ibss_race_fix.patch b/package/madwifi/patches/451-ibss_race_fix.patch index 9be3311fd..27e1b47da 100644 --- a/package/madwifi/patches/451-ibss_race_fix.patch +++ b/package/madwifi/patches/451-ibss_race_fix.patch @@ -43,7 +43,7 @@ } } iwspy_event(vap, ni, rssi); -@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3553,8 +3546,8 @@ ieee80211_recv_mgmt(struct ieee80211vap (((vap->iv_opmode == IEEE80211_M_HOSTAP) || (vap->iv_opmode == IEEE80211_M_WDS)) && (scan.capinfo & IEEE80211_CAPINFO_ESS))) { @@ -53,13 +53,13 @@ int found = 0; IEEE80211_LOCK_IRQ(vap->iv_ic); -@@ -3568,14 +3561,12 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3570,14 +3563,12 @@ ieee80211_recv_mgmt(struct ieee80211vap } } if (found) - ni = ni_or_null = avp->iv_wdsnode; + tni = ieee80211_ref_node(avp->iv_wdsnode); - } else if (vap->iv_opmode == IEEE80211_M_WDS) { + } else if ((vap->iv_opmode == IEEE80211_M_WDS) && vap->iv_wdsnode) { found = 1; - ni = ni_or_null = vap->iv_wdsnode; - } else if (vap->iv_opmode == IEEE80211_M_IBSS) { @@ -72,7 +72,7 @@ found = 1; } IEEE80211_UNLOCK_IRQ(vap->iv_ic); -@@ -3583,20 +3574,21 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3585,20 +3576,21 @@ ieee80211_recv_mgmt(struct ieee80211vap if (!found) break; @@ -100,7 +100,7 @@ } else { /* * Copy data from beacon to neighbor table. -@@ -3604,39 +3596,38 @@ ieee80211_recv_mgmt(struct ieee80211vap +@@ -3606,39 +3598,38 @@ ieee80211_recv_mgmt(struct ieee80211vap * ieee80211_add_neighbor(), so we just copy * everything over to be safe. */ @@ -194,17 +194,6 @@ } IEEE80211_ADDR_COPY(ni->ni_bssid, vap->iv_myaddr); -@@ -429,8 +425,8 @@ ieee80211_reset_bss(struct ieee80211vap - __func__, ni, MAC_ADDR(vap->iv_myaddr)); - KASSERT(ni != NULL, ("unable to setup inital BSS node")); - -- vap->iv_bss = ieee80211_ref_node(ni); -- KASSERT((atomic_read(&vap->iv_bss->ni_refcnt) == 3), -+ vap->iv_bss = ni; -+ KASSERT((atomic_read(&vap->iv_bss->ni_refcnt) == 2), - ("wrong refcount for new node.")); - - if (obss != NULL) { @@ -647,7 +643,7 @@ ieee80211_sta_join1(struct ieee80211_nod (vap->iv_state == IEEE80211_S_RUN) && bssid_equal(obss, selbs)); */ vap->iv_bss = selbs;