package/kernel: create package for the RT305x dwc_otg driver
[openwrt.git] / package / madwifi / patches / 441-fix_ibss_node_handling.patch
index a98fe42..20d59de 100644 (file)
@@ -44,8 +44,8 @@
                        if (dir != IEEE80211_FC1_DIR_NODS) {
                                IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
                                        wh, "data", "invalid dir 0x%x", dir);
                        if (dir != IEEE80211_FC1_DIR_NODS) {
                                IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY,
                                        wh, "data", "invalid dir 0x%x", dir);
-@@ -3552,6 +3557,11 @@ ieee80211_recv_mgmt(struct ieee80211vap 
-                       } else if (vap->iv_opmode == IEEE80211_M_WDS) {
+@@ -3558,6 +3563,11 @@ ieee80211_recv_mgmt(struct ieee80211vap
+                       } 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) {
                                found = 1;
                                ni = ni_or_null = vap->iv_wdsnode;
 +                      } else if (vap->iv_opmode == IEEE80211_M_IBSS) {
@@ -56,7 +56,7 @@
                        }
                        IEEE80211_UNLOCK_IRQ(vap->iv_ic);
  
                        }
                        IEEE80211_UNLOCK_IRQ(vap->iv_ic);
  
-@@ -3676,19 +3686,8 @@ ieee80211_recv_mgmt(struct ieee80211vap 
+@@ -3686,19 +3696,8 @@ ieee80211_recv_mgmt(struct ieee80211vap
                        vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/
                        return;
                }
                        vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/
                        return;
                }
                        allocbs = 1;
 --- a/net80211/ieee80211_node.c
 +++ b/net80211/ieee80211_node.c
                        allocbs = 1;
 --- a/net80211/ieee80211_node.c
 +++ b/net80211/ieee80211_node.c
-@@ -601,6 +601,7 @@ ieee80211_ibss_merge(struct ieee80211_no
+@@ -601,6 +601,8 @@ ieee80211_ibss_merge(struct ieee80211_no
                ic->ic_flags & IEEE80211_F_SHPREAMBLE ? "short" : "long",
                ic->ic_flags & IEEE80211_F_SHSLOT ? "short" : "long",
                ic->ic_flags & IEEE80211_F_USEPROT ? ", protection" : "");
                ic->ic_flags & IEEE80211_F_SHPREAMBLE ? "short" : "long",
                ic->ic_flags & IEEE80211_F_SHSLOT ? "short" : "long",
                ic->ic_flags & IEEE80211_F_USEPROT ? ", protection" : "");
-+      ieee80211_node_table_reset(&vap->iv_ic->ic_sta, vap);
++      if (!IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bssid))
++              ieee80211_node_table_reset(&vap->iv_ic->ic_sta, vap);
        return ieee80211_sta_join1(ieee80211_ref_node(ni));
  }
  EXPORT_SYMBOL(ieee80211_ibss_merge);
        return ieee80211_sta_join1(ieee80211_ref_node(ni));
  }
  EXPORT_SYMBOL(ieee80211_ibss_merge);
This page took 0.025665 seconds and 4 git commands to generate.