huge madwifi update (work in progress, disabled by default, compiles but breaks at...
[openwrt.git] / package / madwifi / patches-r3776 / 304-erp_update.patch
diff --git a/package/madwifi/patches-r3776/304-erp_update.patch b/package/madwifi/patches-r3776/304-erp_update.patch
new file mode 100644 (file)
index 0000000..796406e
--- /dev/null
@@ -0,0 +1,74 @@
+Index: madwifi-trunk-r3776/net80211/ieee80211_beacon.c
+===================================================================
+--- madwifi-trunk-r3776.orig/net80211/ieee80211_beacon.c       2008-07-17 00:21:29.000000000 +0200
++++ madwifi-trunk-r3776/net80211/ieee80211_beacon.c    2008-07-17 01:58:24.000000000 +0200
+@@ -544,10 +544,10 @@
+                       vap->iv_flags &= ~IEEE80211_F_XRUPDATE;
+               }
+ #endif
+-              if ((ic->ic_flags_ext & IEEE80211_FEXT_ERPUPDATE) && 
++              if ((vap->iv_flags_ext & IEEE80211_FEXT_ERPUPDATE) &&
+                               (bo->bo_erp != NULL)) {
+                       (void)ieee80211_add_erp(bo->bo_erp, ic);
+-                      ic->ic_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE;
++                      vap->iv_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE;
+               }
+       }
+       /* if it is a mode change beacon for dynamic turbo case */
+Index: madwifi-trunk-r3776/net80211/ieee80211_input.c
+===================================================================
+--- madwifi-trunk-r3776.orig/net80211/ieee80211_input.c        2008-07-17 01:46:44.000000000 +0200
++++ madwifi-trunk-r3776/net80211/ieee80211_input.c     2008-07-17 01:58:24.000000000 +0200
+@@ -3384,9 +3384,12 @@
+                       /* Assume no ERP IE == 11b AP */
+                       if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) &&
+                               !(ic->ic_flags & IEEE80211_F_USEPROT)) {
++                              struct ieee80211vap *tmpvap;
+                               ic->ic_flags |= IEEE80211_F_USEPROT;
+-                              ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++                              TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
++                                      tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++                              }
+                       }
+               }
+Index: madwifi-trunk-r3776/net80211/ieee80211_node.c
+===================================================================
+--- madwifi-trunk-r3776.orig/net80211/ieee80211_node.c 2008-07-17 01:46:44.000000000 +0200
++++ madwifi-trunk-r3776/net80211/ieee80211_node.c      2008-07-17 01:58:24.000000000 +0200
+@@ -1741,8 +1741,12 @@
+               }
+               /* Update ERP element if this is first non ERP station */
+-              if (ic->ic_nonerpsta == 1)
+-                      ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++              if (ic->ic_nonerpsta == 1) {
++                      struct ieee80211vap *tmpvap;
++                      TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
++                              tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++                      }
++              }
+       } else
+               ni->ni_flags |= IEEE80211_NODE_ERP;
+ }
+@@ -1945,6 +1949,8 @@
+               IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni,
+                       "non-ERP station leaves, count now %d", ic->ic_nonerpsta);
+               if (ic->ic_nonerpsta == 0) {
++                      struct ieee80211vap *tmpvap;
++
+                       IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC,
+                               "%s: disable use of protection\n", __func__);
+                       ic->ic_flags &= ~IEEE80211_F_USEPROT;
+@@ -1956,7 +1962,9 @@
+                               ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
+                               ic->ic_flags &= ~IEEE80211_F_USEBARKER;
+                       }
+-                      ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++                      TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
++                              tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
++                      }
+               }
+       }
+ }
This page took 0.025003 seconds and 4 git commands to generate.