summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_output.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2003-10-17 22:09:20 +0000
committersam <sam@FreeBSD.org>2003-10-17 22:09:20 +0000
commit45942b2f208f5e94f1b4ff569961c42319eab623 (patch)
tree0649d12cf261d55f6199de032301b3401b4e1129 /sys/net80211/ieee80211_output.c
parentc0c1db86a0e892dec2499bf67d2fc21128dad252 (diff)
downloadFreeBSD-src-45942b2f208f5e94f1b4ff569961c42319eab623.zip
FreeBSD-src-45942b2f208f5e94f1b4ff569961c42319eab623.tar.gz
include FH/DS parameters element in probe response frames
Diffstat (limited to 'sys/net80211/ieee80211_output.c')
-rw-r--r--sys/net80211/ieee80211_output.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index c2c7faa..01b87cd 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -363,6 +363,7 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni,
* [2] cabability information
* [tlv] ssid
* [tlv] supported rates
+ * [tlv] parameter set (FH/DS)
* [tlv] parameter set (IBSS)
* [tlv] extended supported rates
*/
@@ -370,6 +371,7 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni,
8 + 2 + 2 + 2
+ 2 + ni->ni_esslen
+ 2 + IEEE80211_RATE_SIZE
+ + (ic->ic_phytype == IEEE80211_T_FH ? 7 : 3)
+ 6
+ 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE));
if (m == NULL)
@@ -397,6 +399,22 @@ ieee80211_send_mgmt(struct ieee80211com *ic, struct ieee80211_node *ni,
ic->ic_bss->ni_esslen);
frm = ieee80211_add_rates(frm, &ic->ic_bss->ni_rates);
+ if (ic->ic_phytype == IEEE80211_T_FH) {
+ *frm++ = IEEE80211_ELEMID_FHPARMS;
+ *frm++ = 5;
+ *frm++ = ni->ni_fhdwell & 0x00ff;
+ *frm++ = (ni->ni_fhdwell >> 8) & 0x00ff;
+ *frm++ = IEEE80211_FH_CHANSET(
+ ieee80211_chan2ieee(ic, ni->ni_chan));
+ *frm++ = IEEE80211_FH_CHANPAT(
+ ieee80211_chan2ieee(ic, ni->ni_chan));
+ *frm++ = ni->ni_fhindex;
+ } else {
+ *frm++ = IEEE80211_ELEMID_DSPARMS;
+ *frm++ = 1;
+ *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
+ }
+
if (ic->ic_opmode == IEEE80211_M_IBSS) {
*frm++ = IEEE80211_ELEMID_IBSSPARMS;
*frm++ = 2;
OpenPOWER on IntegriCloud