madwifi: nuke some weird code which is causing NULL nodes to appear
[openwrt/svn-archive/archive.git] / package / madwifi / patches / 312-erpupdate.patch
1 Index: madwifi-dfs-r3053/net80211/ieee80211_beacon.c
2 ===================================================================
3 --- madwifi-dfs-r3053.orig/net80211/ieee80211_beacon.c 2008-01-10 10:51:31.406580318 +0100
4 +++ madwifi-dfs-r3053/net80211/ieee80211_beacon.c 2008-01-10 10:56:54.040966203 +0100
5 @@ -538,9 +538,9 @@
6 vap->iv_flags &= ~IEEE80211_F_XRUPDATE;
7 }
8 #endif
9 - if ((ic->ic_flags_ext & IEEE80211_FEXT_ERPUPDATE) && (bo->bo_erp != NULL)) {
10 + if ((vap->iv_flags_ext & IEEE80211_FEXT_ERPUPDATE) && (bo->bo_erp != NULL)) {
11 (void) ieee80211_add_erp(bo->bo_erp, ic);
12 - ic->ic_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE;
13 + vap->iv_flags_ext &= ~IEEE80211_FEXT_ERPUPDATE;
14 }
15 }
16 /* if it is a mode change beacon for dynamic turbo case */
17 Index: madwifi-dfs-r3053/net80211/ieee80211_input.c
18 ===================================================================
19 --- madwifi-dfs-r3053.orig/net80211/ieee80211_input.c 2008-01-10 10:51:31.558588981 +0100
20 +++ madwifi-dfs-r3053/net80211/ieee80211_input.c 2008-01-10 10:55:51.565405916 +0100
21 @@ -3315,9 +3315,12 @@
22 /* Assume no ERP IE == 11b AP */
23 if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) &&
24 !(ic->ic_flags & IEEE80211_F_USEPROT)) {
25 + struct ieee80211vap *tmpvap;
26
27 ic->ic_flags |= IEEE80211_F_USEPROT;
28 - ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
29 + TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
30 + tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
31 + }
32 }
33 }
34
35 Index: madwifi-dfs-r3053/net80211/ieee80211_node.c
36 ===================================================================
37 --- madwifi-dfs-r3053.orig/net80211/ieee80211_node.c 2008-01-10 10:51:31.622592626 +0100
38 +++ madwifi-dfs-r3053/net80211/ieee80211_node.c 2008-01-10 10:54:58.398376106 +0100
39 @@ -1998,8 +1998,12 @@
40 }
41
42 /* Update ERP element if this is first non ERP station */
43 - if (ic->ic_nonerpsta == 1)
44 - ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
45 + if (ic->ic_nonerpsta == 1) {
46 + struct ieee80211vap *tmpvap;
47 + TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
48 + tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
49 + }
50 + }
51 } else
52 ni->ni_flags |= IEEE80211_NODE_ERP;
53 }
54 @@ -2202,6 +2206,8 @@
55 IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni,
56 "non-ERP station leaves, count now %d", ic->ic_nonerpsta);
57 if (ic->ic_nonerpsta == 0) {
58 + struct ieee80211vap *tmpvap;
59 +
60 IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC,
61 "%s: disable use of protection\n", __func__);
62 ic->ic_flags &= ~IEEE80211_F_USEPROT;
63 @@ -2213,7 +2219,9 @@
64 ic->ic_flags |= IEEE80211_F_SHPREAMBLE;
65 ic->ic_flags &= ~IEEE80211_F_USEBARKER;
66 }
67 - ic->ic_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
68 + TAILQ_FOREACH(tmpvap, &ic->ic_vaps, iv_next) {
69 + tmpvap->iv_flags_ext |= IEEE80211_FEXT_ERPUPDATE;
70 + }
71 }
72 }
73 }