diff options
author | sam <sam@FreeBSD.org> | 2005-03-26 07:11:31 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2005-03-26 07:11:31 +0000 |
commit | 262d2351824b888de35991ddaa533e69ab510076 (patch) | |
tree | 654466f53cc1e9ee60ce271af14a21e47dff82b5 /sys/net80211 | |
parent | 43981486c2b741116e1d7d2f92ec4e43329292e3 (diff) | |
download | FreeBSD-src-262d2351824b888de35991ddaa533e69ab510076.zip FreeBSD-src-262d2351824b888de35991ddaa533e69ab510076.tar.gz |
don't include wme ie in probe request frames; it was meant for probe response
frames--move it there
Noticed by: Ghislain Mary
Submitted by: Michael Wong
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_output.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index e8e59fd..919b413 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -944,14 +944,12 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni, * [tlv] ssid * [tlv] supported rates * [tlv] extended supported rates - * [tlv] WME (optional) * [tlv] user-specified ie's */ m = ieee80211_getmgtframe(&frm, 2 + IEEE80211_NWID_LEN + 2 + IEEE80211_RATE_SIZE + 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE) - + sizeof(struct ieee80211_wme_param) + (ic->ic_opt_ie != NULL ? ic->ic_opt_ie_len : 0) ); if (m == NULL) @@ -961,8 +959,6 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni, mode = ieee80211_chan2mode(ic, ni->ni_chan); frm = ieee80211_add_rates(frm, &ic->ic_sup_rates[mode]); frm = ieee80211_add_xrates(frm, &ic->ic_sup_rates[mode]); - if (ic->ic_flags & IEEE80211_F_WME) - frm = ieee80211_add_wme_param(frm, &ic->ic_wme); if (ic->ic_opt_ie != NULL) { memcpy(frm, ic->ic_opt_ie, ic->ic_opt_ie_len); frm += ic->ic_opt_ie_len; @@ -987,6 +983,7 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni, * [tlv] extended rate phy (ERP) * [tlv] extended supported rates * [tlv] WPA + * [tlv] WME (optional) */ m = ieee80211_getmgtframe(&frm, 8 @@ -1001,6 +998,7 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni, /* XXX !WPA1+WPA2 fits w/o a cluster */ + (ic->ic_flags & IEEE80211_F_WPA ? 2*sizeof(struct ieee80211_ie_wpa) : 0) + + sizeof(struct ieee80211_wme_param) ); if (m == NULL) senderr(ENOMEM, is_tx_nobuf); @@ -1053,6 +1051,8 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni, if (ic->ic_curmode == IEEE80211_MODE_11G) frm = ieee80211_add_erp(frm, ic); frm = ieee80211_add_xrates(frm, &ni->ni_rates); + if (ic->ic_flags & IEEE80211_F_WME) + frm = ieee80211_add_wme_param(frm, &ic->ic_wme); m->m_pkthdr.len = m->m_len = frm - mtod(m, u_int8_t *); break; |