mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-08-20 09:00:14 +03:00
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13096 3c298f89-4303-0410-b956-a3cf2f4a3e73
69 lines
2.3 KiB
Diff
69 lines
2.3 KiB
Diff
--- a/net80211/ieee80211_beacon.c
|
|
+++ b/net80211/ieee80211_beacon.c
|
|
@@ -542,10 +542,10 @@ ieee80211_beacon_update(struct ieee80211
|
|
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 */
|
|
--- a/net80211/ieee80211_input.c
|
|
+++ b/net80211/ieee80211_input.c
|
|
@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap
|
|
/* 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;
|
|
+ }
|
|
}
|
|
}
|
|
|
|
--- a/net80211/ieee80211_node.c
|
|
+++ b/net80211/ieee80211_node.c
|
|
@@ -2025,8 +2025,12 @@ ieee80211_node_join_11g(struct ieee80211
|
|
}
|
|
|
|
/* 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;
|
|
}
|
|
@@ -2229,6 +2233,8 @@ ieee80211_node_leave_11g(struct ieee8021
|
|
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;
|
|
@@ -2240,7 +2246,9 @@ ieee80211_node_leave_11g(struct ieee8021
|
|
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;
|
|
+ }
|
|
}
|
|
}
|
|
}
|