[generic]: 3.0 is out
[openwrt.git] / package / madwifi / patches / 451-ibss_race_fix.patch
index 9be3311..27e1b47 100644 (file)
@@ -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))) {
                        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;
  
                        } 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.
                                 */
        }
  
        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;
This page took 0.030467 seconds and 4 git commands to generate.