--- sbin/ifconfig/ifieee80211.c (revision 288467) +++ sbin/ifconfig/ifieee80211.c (working copy) @@ -3070,6 +3070,7 @@ case IEEE80211_ELEMID_CFPARMS: return " CFPARMS"; case IEEE80211_ELEMID_TIM: return " TIM"; case IEEE80211_ELEMID_IBSSPARMS:return " IBSSPARMS"; + case IEEE80211_ELEMID_BSSLOAD: return " BSSLOAD"; case IEEE80211_ELEMID_CHALLENGE:return " CHALLENGE"; case IEEE80211_ELEMID_PWRCNSTR: return " PWRCNSTR"; case IEEE80211_ELEMID_PWRCAP: return " PWRCAP"; @@ -3081,6 +3082,7 @@ case IEEE80211_ELEMID_MEASREP: return " MEASREP"; case IEEE80211_ELEMID_QUIET: return " QUIET"; case IEEE80211_ELEMID_IBSSDFS: return " IBSSDFS"; + case IEEE80211_ELEMID_APCHANREP:return " APCHANREP"; case IEEE80211_ELEMID_TPC: return " TPC"; case IEEE80211_ELEMID_CCKM: return " CCKM"; } --- sys/net80211/ieee80211.h (revision 288467) +++ sys/net80211/ieee80211.h (working copy) @@ -706,6 +706,7 @@ IEEE80211_ELEMID_TIM = 5, IEEE80211_ELEMID_IBSSPARMS = 6, IEEE80211_ELEMID_COUNTRY = 7, + IEEE80211_ELEMID_BSSLOAD = 11, IEEE80211_ELEMID_CHALLENGE = 16, /* 17-31 reserved for challenge text extension */ IEEE80211_ELEMID_PWRCNSTR = 32, @@ -723,6 +724,7 @@ IEEE80211_ELEMID_QOS = 46, IEEE80211_ELEMID_RSN = 48, IEEE80211_ELEMID_XRATES = 50, + IEEE80211_ELEMID_APCHANREP = 51, IEEE80211_ELEMID_HTINFO = 61, IEEE80211_ELEMID_TPC = 150, IEEE80211_ELEMID_CCKM = 156, @@ -747,6 +749,7 @@ IEEE80211_ELEMID_MESHGANN = 125, IEEE80211_ELEMID_MESHRANN = 126, /* 127 Extended Capabilities */ + IEEE80211_ELEMID_MESHEXTCAP = 127, /* 128-129 reserved */ IEEE80211_ELEMID_MESHPREQ = 130, IEEE80211_ELEMID_MESHPREP = 131, @@ -781,6 +784,77 @@ #define IEEE80211_COUNTRY_MAX_SIZE \ (sizeof(struct ieee80211_country_ie) + 3*(IEEE80211_COUNTRY_MAX_BANDS-1)) +struct ieee80211_bss_load_ie { + uint8_t ie; + uint8_t len; + uint8_t sta_count; /* station count */ + uint16_t chan_load; /* channel utilization */ + uint16_t aac; /* available admission capacity */ +} __packed; + +struct ieee80211_ap_chan_report_ie { + uint8_t ie; + uint8_t len; + uint8_t class; /* operating class */ + /* Annex E, E.1 Country information and operating classes */ + uint8_t chan_list[64]; +} __packed; + +struct ieee80211_extcap_ie { + uint8_t ie; + uint8_t len; + struct { + int cms; /* 20/40 BSS coexistence management support */ + int rsvd_1; /* reserved */ + int ecs; /* extended channel switching */ + int rsvd_3; + int psmp_cap; /* PSMP capability */ + int rsvd_5; + int s_psmp_support; /* S-PMSP support */ + int event; + int diagnostics; + int multicast_diagnostics; + int location_tracking; + int fms; + int proxy_arp; + int cir; /* collocated interference reporting */ + int civic_location; + int geospatial_loc; + int tfs; + int wnm_sleep_mode; + int tim_broadcast; + int bss_transition; + int qos_traffic_cap; + int ac_sta_count; /* AC station count */ + int m_bssid; /* multiple BSSID field */ + int timing_measurement; + int ch_usage; /* channel usage */ + int ssid_list; + int dms; + int utc_tsf_offset; + int tlds_buf_sta_support; /* TDLS peer U-APSP buffer STA support */ + int tlds_ppsm_support; /* TDLS peer PSM support */ + int tlds_ch_switching; /* TDLS channel switching */ + int interworking; + int qosmap; + int ebr; + int sspn_interface; + int rsvd_35; + int msgcf_cap; + int tlds_sup; /* TDLS support */ + int tlds_prohibited; + int tlds_ch_sw_prohibited; /* TDLS channel switching prohibited */ + int ruf; /* reject unadmitted frame */ + int sig[3]; /* service interval granularity */ + int id_loc; /* identifier location */ + int u_apsd_coex; /* U-APSD coexistence */ + int wnm_notification; + int rsvd_47; + char ssid[IEEE80211_ADDR_LEN]; /* UTF-8 SSID */ + /* 49-n reserved */ + }; +} __packed; + /* * 802.11h Quiet Time Element. */ --- sys/net80211/ieee80211_input.c (revision 288467) +++ sys/net80211/ieee80211_input.c (working copy) @@ -572,6 +572,8 @@ case IEEE80211_ELEMID_IBSSPARMS: case IEEE80211_ELEMID_CFPARMS: case IEEE80211_ELEMID_PWRCNSTR: + case IEEE80211_ELEMID_BSSLOAD: + case IEEE80211_ELEMID_APCHANREP: /* NB: avoid debugging complaints */ break; case IEEE80211_ELEMID_XRATES: @@ -603,6 +605,8 @@ case IEEE80211_ELEMID_MESHCONF: scan->meshconf = frm; break; + case IEEE80211_ELEMID_MESHEXTCAP: + break; #endif case IEEE80211_ELEMID_VENDOR: if (iswpaoui(frm))