Decode VHTCAP, VHTINFO and BSSLOAD.
BSSLOAD is based on work from Idwer Vollering. Obtained from: Idwer Vollering <vidwer@gmail.com> (bssload)
This commit is contained in:
parent
e426a812db
commit
f6759842d9
@ -2533,6 +2533,45 @@ printwmeinfo(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
printvhtcap(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
|
||||
{
|
||||
printf("%s", tag);
|
||||
if (verbose) {
|
||||
const struct ieee80211_ie_vhtcap *vhtcap =
|
||||
(const struct ieee80211_ie_vhtcap *) ie;
|
||||
uint32_t vhtcap_info = LE_READ_4(&vhtcap->vht_cap_info);
|
||||
|
||||
printf("<cap 0x%08x", vhtcap_info);
|
||||
printf(" rx_mcs_map 0x%x",
|
||||
LE_READ_2(&vhtcap->supp_mcs.rx_mcs_map));
|
||||
printf(" rx_highest %d",
|
||||
LE_READ_2(&vhtcap->supp_mcs.rx_highest) & 0x1fff);
|
||||
printf(" tx_mcs_map 0x%x",
|
||||
LE_READ_2(&vhtcap->supp_mcs.tx_mcs_map));
|
||||
printf(" tx_highest %d",
|
||||
LE_READ_2(&vhtcap->supp_mcs.tx_highest) & 0x1fff);
|
||||
|
||||
printf(">");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
printvhtinfo(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
|
||||
{
|
||||
printf("%s", tag);
|
||||
if (verbose) {
|
||||
const struct ieee80211_ie_vht_operation *vhtinfo =
|
||||
(const struct ieee80211_ie_vht_operation *) ie;
|
||||
|
||||
printf("<chw %d freq1_idx %d freq2_idx %d basic_mcs_set 0x%04x>",
|
||||
vhtinfo->chan_width,
|
||||
vhtinfo->center_freq_seg1_idx,
|
||||
vhtinfo->center_freq_seg2_idx,
|
||||
LE_READ_2(&vhtinfo->basic_mcs_set));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
printhtcap(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
|
||||
{
|
||||
@ -2674,6 +2713,20 @@ do { \
|
||||
#undef MATCHOUI
|
||||
}
|
||||
|
||||
static void
|
||||
printbssload(const char *tag, const uint8_t *ie, size_t ielen, int maxlen)
|
||||
{
|
||||
printf("%s", tag);
|
||||
if (verbose) {
|
||||
const struct ieee80211_bss_load_ie *bssload =
|
||||
(const struct ieee80211_bss_load_ie *) ie;
|
||||
printf("<sta count %d, chan load %d, aac %d>",
|
||||
LE_READ_2(&bssload->sta_count),
|
||||
bssload->chan_load,
|
||||
bssload->aac);
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
wpa_cipher(const u_int8_t *sel)
|
||||
{
|
||||
@ -3154,6 +3207,15 @@ printies(const u_int8_t *vp, int ielen, int maxcols)
|
||||
case IEEE80211_ELEMID_MESHCONF:
|
||||
printmeshconf(" MESHCONF", vp, 2+vp[1], maxcols);
|
||||
break;
|
||||
case IEEE80211_ELEMID_VHT_CAP:
|
||||
printvhtcap(" VHTCAP", vp, 2+vp[1], maxcols);
|
||||
break;
|
||||
case IEEE80211_ELEMID_VHT_OPMODE:
|
||||
printvhtinfo(" VHTOPMODE", vp, 2+vp[1], maxcols);
|
||||
break;
|
||||
case IEEE80211_ELEMID_BSSLOAD:
|
||||
printbssload(" BSSLOAD", vp, 2+vp[1], maxcols);
|
||||
break;
|
||||
default:
|
||||
if (verbose)
|
||||
printie(iename(vp[0]), vp, 2+vp[1], maxcols);
|
||||
|
Loading…
Reference in New Issue
Block a user