ieee802.11: Start adding support for 802.11be.
This is the extra high throughput spec.
This commit is contained in:
parent
93eceb1991
commit
09f020b3f3
|
@ -3745,6 +3745,14 @@ static int hf_ieee80211_he_cci_ac_constraint = -1;
|
||||||
static int hf_ieee80211_he_cci_rdg_more_ppdu = -1;
|
static int hf_ieee80211_he_cci_rdg_more_ppdu = -1;
|
||||||
static int hf_ieee80211_he_cci_sr_ppdu_indic = -1;
|
static int hf_ieee80211_he_cci_sr_ppdu_indic = -1;
|
||||||
static int hf_ieee80211_he_cci_reserved = -1;
|
static int hf_ieee80211_he_cci_reserved = -1;
|
||||||
|
static int hf_ieee80211_he_eht_om_rx_nss_ext = -1;
|
||||||
|
static int hf_ieee80211_he_eht_om_chan_w_ext = -1;
|
||||||
|
static int hf_ieee80211_he_eht_om_tx_nsts_ext = -1;
|
||||||
|
static int hf_ieee80211_he_eht_om_reserved = -1;
|
||||||
|
static int hf_ieee80211_he_srs_ppdu_resp_dur = -1;
|
||||||
|
static int hf_ieee80211_he_srs_reserved = -1;
|
||||||
|
static int hf_ieee80211_he_aar_assisted_ap_bitmap = -1;
|
||||||
|
static int hf_ieee80211_he_aar_reserved = -1;
|
||||||
static int hf_ieee80211_he_btc_avail_chan = -1;
|
static int hf_ieee80211_he_btc_avail_chan = -1;
|
||||||
static int hf_ieee80211_he_btc_reserved = -1;
|
static int hf_ieee80211_he_btc_reserved = -1;
|
||||||
static int hf_ieee80211_he_trigger_common_info = -1;
|
static int hf_ieee80211_he_trigger_common_info = -1;
|
||||||
|
@ -4729,27 +4737,32 @@ static int hf_ieee80211_operat_mode_field_reserved = -1;
|
||||||
static int hf_ieee80211_operat_mode_field_rxnss = -1;
|
static int hf_ieee80211_operat_mode_field_rxnss = -1;
|
||||||
static int hf_ieee80211_operat_mode_field_rxnsstype= -1;
|
static int hf_ieee80211_operat_mode_field_rxnsstype= -1;
|
||||||
|
|
||||||
static int hf_ieee80211_rnr_tbtt_information_field_header = -1;
|
static int hf_ieee80211_tbtt_info = -1;
|
||||||
static int hf_ieee80211_rnr_tbtt_information_field_type = -1;
|
static int hf_ieee80211_tbtt_filtered_nap = -1;
|
||||||
static int hf_ieee80211_rnr_tbtt_information_filtered_neighbor_ap = -1;
|
static int hf_ieee80211_tbtt_info_count = -1;
|
||||||
static int hf_ieee80211_rnr_tbtt_information_reserved = -1;
|
static int hf_ieee80211_tbtt_info_length = -1;
|
||||||
static int hf_ieee80211_rnr_tbtt_information_count = -1;
|
|
||||||
static int hf_ieee80211_rnr_tbtt_information_length = -1;
|
static int hf_ieee80211_tbtt_operating_class = -1;
|
||||||
static int hf_ieee80211_rnr_operating_class = -1;
|
static int hf_ieee80211_tbtt_channel_number = -1;
|
||||||
static int hf_ieee80211_rnr_channel_number = -1;
|
|
||||||
static int hf_ieee80211_rnr_neighbor_ap_tbtt_offset = -1;
|
static int hf_ieee80211_tbtt_offset = -1;
|
||||||
static int hf_ieee80211_rnr_bssid = -1;
|
static int hf_ieee80211_tbtt_bssid = -1;
|
||||||
static int hf_ieee80211_rnr_short_ssid = -1;
|
static int hf_ieee80211_tbtt_short_ssid = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters = -1;
|
static int hf_ieee80211_rnr_bss_params = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b0 = -1;
|
static int hf_ieee80211_rnr_oct_recommended = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b1 = -1;
|
static int hf_ieee80211_rnr_same_ssid = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b2 = -1;
|
static int hf_ieee80211_rnr_multiple_bssid = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b3 = -1;
|
static int hf_ieee80211_rnr_transmitted_bssid = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b4 = -1;
|
static int hf_ieee80211_rnr_ess_with_colocated_ap = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b5 = -1;
|
static int hf_ieee80211_rnr_unsolicited_probe_responses = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b6 = -1;
|
static int hf_ieee80211_rnr_same_colocated_ap = -1;
|
||||||
static int hf_ieee80211_rnr_bss_parameters_b7 = -1;
|
static int hf_ieee80211_rnr_same_reserved = -1;
|
||||||
static int hf_ieee80211_rnr_20_mhz_psd = -1;
|
static int hf_ieee80211_rnr_20mhz_psd_subfield = -1;
|
||||||
|
static int hf_ieee80211_rnr_mld_params = -1;
|
||||||
|
static int hf_ieee80211_rnr_mld_id = -1;
|
||||||
|
static int hf_ieee80211_rnr_mld_link_id = -1;
|
||||||
|
static int hf_ieee80211_rnr_mld_bss_params_change_count = -1;
|
||||||
|
static int hf_ieee80211_rnr_mld_reserved = -1;
|
||||||
|
|
||||||
static int hf_ieee80211_ampduparam = -1;
|
static int hf_ieee80211_ampduparam = -1;
|
||||||
static int hf_ieee80211_ampduparam_vs = -1;
|
static int hf_ieee80211_ampduparam_vs = -1;
|
||||||
|
@ -7408,6 +7421,9 @@ static gint ett_ieee80211_hla_control = -1;
|
||||||
static gint ett_ieee80211_control_uph = -1;
|
static gint ett_ieee80211_control_uph = -1;
|
||||||
static gint ett_ieee80211_buffer_control_bqr = -1;
|
static gint ett_ieee80211_buffer_control_bqr = -1;
|
||||||
static gint ett_ieee80211_control_cci = -1;
|
static gint ett_ieee80211_control_cci = -1;
|
||||||
|
static gint ett_ieee80211_control_eht_om = -1;
|
||||||
|
static gint ett_ieee80211_control_srs = -1;
|
||||||
|
static gint ett_ieee80211_control_aar = -1;
|
||||||
|
|
||||||
static gint ett_vht_cap_tree = -1;
|
static gint ett_vht_cap_tree = -1;
|
||||||
static gint ett_vht_mcsset_tree = -1;
|
static gint ett_vht_mcsset_tree = -1;
|
||||||
|
@ -7668,6 +7684,7 @@ static expert_field ei_ieee80211_invalid_control_id = EI_INIT;
|
||||||
static expert_field ei_ieee80211_wfa_60g_attr_len_invalid = EI_INIT;
|
static expert_field ei_ieee80211_wfa_60g_attr_len_invalid = EI_INIT;
|
||||||
static expert_field ei_ieee80211_wfa_60g_unknown_attribute = EI_INIT;
|
static expert_field ei_ieee80211_wfa_60g_unknown_attribute = EI_INIT;
|
||||||
static expert_field ei_ieee80211_htc_in_dmg_packet = EI_INIT;
|
static expert_field ei_ieee80211_htc_in_dmg_packet = EI_INIT;
|
||||||
|
static expert_field ei_ieee80211_tbtt_unexpected = EI_INIT;
|
||||||
|
|
||||||
/* 802.11ad trees */
|
/* 802.11ad trees */
|
||||||
static gint ett_dynamic_alloc_tree = -1;
|
static gint ett_dynamic_alloc_tree = -1;
|
||||||
|
@ -7759,10 +7776,11 @@ static gint ett_fils_indication_realm_list = -1;
|
||||||
static gint ett_fils_indication_public_key_list = -1;
|
static gint ett_fils_indication_public_key_list = -1;
|
||||||
static gint ett_ff_fils_discovery_frame_control = -1;
|
static gint ett_ff_fils_discovery_frame_control = -1;
|
||||||
static gint ett_ff_fils_discovery_capability = -1;
|
static gint ett_ff_fils_discovery_capability = -1;
|
||||||
static gint ett_rnr_tbtt_tree = -1;
|
static gint ett_neighbor_ap_info = -1;
|
||||||
static gint ett_rnr_tbtt_subtree = -1;
|
static gint ett_tbtt_infos = -1;
|
||||||
static gint ett_rnr_tbtt_information_tree = -1;
|
static gint ett_rnr_bss_params_tree = -1;
|
||||||
static gint ett_rnr_bss_parameters = -1;
|
static gint ett_rnr_mld_params_tree = -1;
|
||||||
|
|
||||||
|
|
||||||
static const fragment_items frag_items = {
|
static const fragment_items frag_items = {
|
||||||
&ett_fragment,
|
&ett_fragment,
|
||||||
|
@ -15958,6 +15976,21 @@ vht_tpe_custom(gchar *result, guint8 txpwr)
|
||||||
g_snprintf(result, ITEM_LABEL_LENGTH, "%3.1f dBm", (txpwr_db/2.0));
|
g_snprintf(result, ITEM_LABEL_LENGTH, "%3.1f dBm", (txpwr_db/2.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tpe_psd_custom(gchar *result, guint8 txpwr)
|
||||||
|
{
|
||||||
|
gint8 txpwr_db;
|
||||||
|
|
||||||
|
txpwr_db = (gint8)(txpwr);
|
||||||
|
if (txpwr_db == -128) {
|
||||||
|
g_snprintf(result, ITEM_LABEL_LENGTH, "Channel cannot be used for transmission");
|
||||||
|
} else if (txpwr_db == 127) {
|
||||||
|
g_snprintf(result, ITEM_LABEL_LENGTH, "No maximum PSD is specified for channel");
|
||||||
|
} else {
|
||||||
|
g_snprintf(result, ITEM_LABEL_LENGTH, "%3.1f dBm/MHz", (txpwr_db/2.0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_number_custom(gchar *result, guint8 channel_number)
|
channel_number_custom(gchar *result, guint8 channel_number)
|
||||||
{
|
{
|
||||||
|
@ -19809,96 +19842,206 @@ dissect_operating_mode_notification(tvbuff_t *tvb, packet_info *pinfo _U_, proto
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const value_string tbtt_info_length[] = {
|
||||||
|
{ 1, "Neighbor AP TBTT Offset subfield" },
|
||||||
|
{ 2, "Neighbor AP TBTT Offset subfield and the BSS Parameters subfield" },
|
||||||
|
{ 5, "Neighbor AP TBTT Offset subfield and the Short-SSID subfield" },
|
||||||
|
{ 6, "Neighbor AP TBTT offset subfield, the Short SSID subfield and the BSS Parameters subfield" },
|
||||||
|
{ 7, "Neighbor AP TBTT Offset subfield and the BSSID subfield" },
|
||||||
|
{ 8, "Neighbor AP TBTT Offset subfield, the BSSID subfield and the BSS Parameters subfield" },
|
||||||
|
{ 9, "Neighbor AP TBTT Offset subfield, the BSSID subfield, the BSS Parameters subfield and the 20 MHz PSD subfield" },
|
||||||
|
{ 11, "Neighbor AP TBTT Offset subfield, the BSSID subfield and the Short-SSID subfield" },
|
||||||
|
{ 12, "Neighbor AP TBTT Offset subfield, the BSSID subfield, the Short SSID subfield and the BSS Parameters subfield" },
|
||||||
|
{ 13, "Neighbor AP TBTT Offset subfield, the BSSID subfield, the Short SSID subfield, the BSS Parameters subfield and the 20 MHz PSD subfield" },
|
||||||
|
{ 16, "Neighbor AP TBTT Offset subfield, the BSSID subfield, the Short SSID subfield, the BSS Parameters subfield, the 20 MHz PSD subfield and the MLD Parameters subfield" },
|
||||||
|
{ 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static int * const bss_params_headers[] = {
|
||||||
|
&hf_ieee80211_rnr_oct_recommended,
|
||||||
|
&hf_ieee80211_rnr_same_ssid,
|
||||||
|
&hf_ieee80211_rnr_multiple_bssid,
|
||||||
|
&hf_ieee80211_rnr_transmitted_bssid,
|
||||||
|
&hf_ieee80211_rnr_ess_with_colocated_ap,
|
||||||
|
&hf_ieee80211_rnr_unsolicited_probe_responses,
|
||||||
|
&hf_ieee80211_rnr_same_colocated_ap,
|
||||||
|
&hf_ieee80211_rnr_same_reserved,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static int * const mld_params_headers[] = {
|
||||||
|
&hf_ieee80211_rnr_mld_id,
|
||||||
|
&hf_ieee80211_rnr_mld_link_id,
|
||||||
|
&hf_ieee80211_rnr_mld_bss_params_change_count,
|
||||||
|
&hf_ieee80211_rnr_mld_reserved,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
dissect_neighbor_ap_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
||||||
|
int offset)
|
||||||
|
{
|
||||||
|
guint16 tbtt_info_h;
|
||||||
|
guint16 tbtt_info_len;
|
||||||
|
guint16 tbtt_info_count;
|
||||||
|
int i = 0;
|
||||||
|
gboolean display_tbtt_offset = FALSE;
|
||||||
|
gboolean display_bssid_subfield = FALSE;
|
||||||
|
gboolean display_short_bssid_subfield = FALSE;
|
||||||
|
gboolean display_bss_parameters_subfield = FALSE;
|
||||||
|
gboolean display_20mhz_psd_subfield = FALSE;
|
||||||
|
gboolean display_mld_params_subfield = FALSE;
|
||||||
|
|
||||||
|
proto_item *item;
|
||||||
|
proto_tree *query;
|
||||||
|
|
||||||
|
tbtt_info_h = tvb_get_guint16(tvb, offset, ENC_LITTLE_ENDIAN);
|
||||||
|
tbtt_info_len = TBTT_INFO_LENGTH(tbtt_info_h);
|
||||||
|
tbtt_info_count = TBTT_INFO_COUNT(tbtt_info_h);
|
||||||
|
switch(tbtt_info_len) {
|
||||||
|
case 1:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
display_20mhz_psd_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
display_20mhz_psd_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
case 16: /* EHT stuff */
|
||||||
|
display_tbtt_offset = TRUE;
|
||||||
|
display_bssid_subfield = TRUE;
|
||||||
|
display_short_bssid_subfield = TRUE;
|
||||||
|
display_bss_parameters_subfield = TRUE;
|
||||||
|
display_20mhz_psd_subfield = TRUE;
|
||||||
|
display_mld_params_subfield = TRUE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
proto_tree_add_expert(tree, pinfo, &ei_ieee80211_tbtt_unexpected , tvb,
|
||||||
|
offset, tvb_reported_length_remaining(tvb, offset));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_tree_add_item(tree, hf_ieee80211_tbtt_info, tvb, offset, 2,
|
||||||
|
ENC_LITTLE_ENDIAN);
|
||||||
|
proto_tree_add_item(tree, hf_ieee80211_tbtt_filtered_nap, tvb, offset, 2,
|
||||||
|
ENC_LITTLE_ENDIAN);
|
||||||
|
item = proto_tree_add_item(tree, hf_ieee80211_tbtt_info_count, tvb, offset, 2,
|
||||||
|
ENC_LITTLE_ENDIAN);
|
||||||
|
proto_tree_add_item(tree, hf_ieee80211_tbtt_info_length, tvb, offset, 2,
|
||||||
|
ENC_LITTLE_ENDIAN);
|
||||||
|
offset+=2;
|
||||||
|
|
||||||
|
proto_tree_add_item(tree, hf_ieee80211_tbtt_operating_class, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||||
|
offset+=1;
|
||||||
|
proto_tree_add_item(tree, hf_ieee80211_tbtt_channel_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||||
|
offset+=1;
|
||||||
|
|
||||||
|
for (i=0;i< tbtt_info_count + 1; i++) {
|
||||||
|
query = proto_tree_add_subtree(tree, tvb, offset, tbtt_info_len,
|
||||||
|
ett_tbtt_infos, &item, "TBTT Information");
|
||||||
|
|
||||||
|
if (display_tbtt_offset) {
|
||||||
|
proto_tree_add_item(query, hf_ieee80211_tbtt_offset, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||||
|
offset+=1;
|
||||||
|
}
|
||||||
|
if (display_bssid_subfield) {
|
||||||
|
proto_tree_add_item(query, hf_ieee80211_tbtt_bssid, tvb, offset, 6, ENC_NA);
|
||||||
|
offset+=6;
|
||||||
|
}
|
||||||
|
if (display_short_bssid_subfield) {
|
||||||
|
proto_tree_add_item(query, hf_ieee80211_tbtt_short_ssid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
|
||||||
|
offset+=4;
|
||||||
|
}
|
||||||
|
if (display_bss_parameters_subfield) {
|
||||||
|
|
||||||
|
proto_tree_add_bitmask_with_flags(query, tvb, offset,
|
||||||
|
hf_ieee80211_rnr_bss_params,
|
||||||
|
ett_rnr_bss_params_tree,
|
||||||
|
bss_params_headers,
|
||||||
|
ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
|
||||||
|
offset += 1;
|
||||||
|
}
|
||||||
|
if (display_20mhz_psd_subfield) {
|
||||||
|
proto_tree_add_item(query, hf_ieee80211_rnr_20mhz_psd_subfield, tvb,
|
||||||
|
offset, 1, ENC_NA);
|
||||||
|
offset += 1;
|
||||||
|
}
|
||||||
|
if (display_mld_params_subfield) {
|
||||||
|
|
||||||
|
proto_tree_add_bitmask_with_flags(query, tvb, offset,
|
||||||
|
hf_ieee80211_rnr_mld_params,
|
||||||
|
ett_rnr_mld_params_tree,
|
||||||
|
mld_params_headers,
|
||||||
|
ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
|
||||||
|
offset += 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
dissect_reduced_neighbor_report(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
|
dissect_reduced_neighbor_report(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
|
||||||
{
|
{
|
||||||
int tag_len = tvb_reported_length(tvb);
|
int offset = 0;
|
||||||
int offset = 0, count;
|
|
||||||
guint8 tbtt_length, tbtt_count;
|
|
||||||
static int * const ieee80211_rnr_tbtt_information_header[] = {
|
|
||||||
&hf_ieee80211_rnr_tbtt_information_field_type,
|
|
||||||
&hf_ieee80211_rnr_tbtt_information_filtered_neighbor_ap,
|
|
||||||
&hf_ieee80211_rnr_tbtt_information_reserved,
|
|
||||||
&hf_ieee80211_rnr_tbtt_information_count,
|
|
||||||
&hf_ieee80211_rnr_tbtt_information_length,
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static int * const ieee80211_rnr_bss_parameters[] = {
|
while (tvb_reported_length_remaining(tvb, offset)) {
|
||||||
&hf_ieee80211_rnr_bss_parameters_b0,
|
int start_offset;
|
||||||
&hf_ieee80211_rnr_bss_parameters_b1,
|
proto_tree *neighbor_ap_info = NULL;
|
||||||
&hf_ieee80211_rnr_bss_parameters_b2,
|
proto_item *naii = NULL;
|
||||||
&hf_ieee80211_rnr_bss_parameters_b3,
|
|
||||||
&hf_ieee80211_rnr_bss_parameters_b4,
|
|
||||||
&hf_ieee80211_rnr_bss_parameters_b5,
|
|
||||||
&hf_ieee80211_rnr_bss_parameters_b6,
|
|
||||||
&hf_ieee80211_rnr_bss_parameters_b7,
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
proto_tree *tbtt_subtree, *subtree;
|
|
||||||
|
|
||||||
while (tag_len > 0){
|
start_offset = offset;
|
||||||
/* TBTT Information Header */
|
neighbor_ap_info = proto_tree_add_subtree(tree, tvb, offset, -1,
|
||||||
subtree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_rnr_tbtt_tree, NULL, "Neighbor AP Information");
|
ett_neighbor_ap_info, &naii,
|
||||||
proto_tree_add_bitmask_with_flags(subtree, tvb, offset, hf_ieee80211_rnr_tbtt_information_field_header,
|
"Neighbor AP Information");
|
||||||
ett_rnr_tbtt_information_tree, ieee80211_rnr_tbtt_information_header,
|
offset = dissect_neighbor_ap_info(tvb, pinfo, neighbor_ap_info, offset);
|
||||||
ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
|
|
||||||
tbtt_count = tvb_get_guint8(tvb, offset) >> 4;
|
|
||||||
tbtt_length = tvb_get_guint8(tvb, offset+1);
|
|
||||||
proto_item_set_len(subtree, 4 + tbtt_length);
|
|
||||||
offset += 2;
|
|
||||||
tag_len -= 2;
|
|
||||||
|
|
||||||
proto_tree_add_item(subtree, hf_ieee80211_rnr_operating_class, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
proto_item_set_len(naii, offset - start_offset);
|
||||||
offset += 1;
|
|
||||||
tag_len -= 1;
|
|
||||||
|
|
||||||
proto_tree_add_item(subtree, hf_ieee80211_rnr_channel_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
|
||||||
offset += 1;
|
|
||||||
tag_len -= 1;
|
|
||||||
|
|
||||||
count = tbtt_count;
|
|
||||||
while (count >= 0) {
|
|
||||||
tbtt_subtree = proto_tree_add_subtree_format(subtree, tvb, offset, tbtt_length, ett_rnr_tbtt_subtree, NULL, "TBTT %d:", tbtt_count - count);
|
|
||||||
|
|
||||||
proto_tree_add_item(tbtt_subtree, hf_ieee80211_rnr_neighbor_ap_tbtt_offset, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
|
||||||
offset += 1;
|
|
||||||
tag_len -= 1;
|
|
||||||
|
|
||||||
/* BSSID */
|
|
||||||
if(tbtt_length == 7 || tbtt_length == 8 || tbtt_length >= 11){
|
|
||||||
proto_tree_add_item(tbtt_subtree, hf_ieee80211_rnr_bssid, tvb, offset, 6, ENC_NA);
|
|
||||||
offset += 6;
|
|
||||||
tag_len -= 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Short SSID */
|
|
||||||
if(tbtt_length == 5 || tbtt_length == 6 || tbtt_length >= 11){
|
|
||||||
proto_tree_add_item(tbtt_subtree, hf_ieee80211_rnr_short_ssid, tvb, offset, 4, ENC_NA);
|
|
||||||
offset += 4;
|
|
||||||
tag_len -= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BSS Parameters */
|
|
||||||
if(tbtt_length == 2 || tbtt_length == 6 || tbtt_length == 8 || tbtt_length >= 12){
|
|
||||||
proto_tree_add_bitmask_with_flags(tbtt_subtree, tvb, offset, hf_ieee80211_rnr_bss_parameters,
|
|
||||||
ett_rnr_bss_parameters, ieee80211_rnr_bss_parameters,
|
|
||||||
ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
|
|
||||||
offset += 1;
|
|
||||||
tag_len -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 20 MHz PSD */
|
|
||||||
if(tbtt_length == 9 || tbtt_length == 13){
|
|
||||||
proto_tree_add_item(tbtt_subtree, hf_ieee80211_rnr_20_mhz_psd, tvb, offset, 1, ENC_NA);
|
|
||||||
offset += 1;
|
|
||||||
tag_len -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
count--;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return offset;
|
|
||||||
|
return tvb_reported_length(tvb);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const value_string s1g_supported_channel_width_vals[] = {
|
static const value_string s1g_supported_channel_width_vals[] = {
|
||||||
|
@ -22716,6 +22859,9 @@ dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
|
||||||
#define A_CONTROL_UPH 4
|
#define A_CONTROL_UPH 4
|
||||||
#define A_CONTROL_BQR 5
|
#define A_CONTROL_BQR 5
|
||||||
#define A_CONTROL_CCI 6
|
#define A_CONTROL_CCI 6
|
||||||
|
#define A_CONTROL_EHT_OM 7
|
||||||
|
#define A_CONTROL_SRS 8
|
||||||
|
#define A_CONTROL_AAR 10
|
||||||
#define A_CONTROL_BQR_REV 0x0A
|
#define A_CONTROL_BQR_REV 0x0A
|
||||||
|
|
||||||
static const value_string a_control_control_id_vals[] = {
|
static const value_string a_control_control_id_vals[] = {
|
||||||
|
@ -22726,7 +22872,9 @@ static const value_string a_control_control_id_vals[] = {
|
||||||
{ A_CONTROL_UPH, "UL power headroom" },
|
{ A_CONTROL_UPH, "UL power headroom" },
|
||||||
{ A_CONTROL_BQR, "Bandwidth query report" },
|
{ A_CONTROL_BQR, "Bandwidth query report" },
|
||||||
{ A_CONTROL_CCI, "Command Control Indication" },
|
{ A_CONTROL_CCI, "Command Control Indication" },
|
||||||
{ A_CONTROL_BQR_REV, "Bandwidth Query Report (reversed bits)" },
|
{ A_CONTROL_EHT_OM, "EHT operating mode" },
|
||||||
|
{ A_CONTROL_SRS, "Single response scheduling" },
|
||||||
|
{ A_CONTROL_AAR, "AP assistance request" },
|
||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -22940,7 +23088,7 @@ dissect_a_control_cci(proto_tree *tree, tvbuff_t *tvb, int offset,
|
||||||
*/
|
*/
|
||||||
cci_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
|
cci_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
|
||||||
ett_ieee80211_control_cci,
|
ett_ieee80211_control_cci,
|
||||||
NULL, "Command Control Indication: 0x%02x", the_bits);
|
NULL, "Command and status: 0x%02x", the_bits);
|
||||||
|
|
||||||
proto_tree_add_boolean(cci_tree, hf_ieee80211_he_cci_ac_constraint, tvb,
|
proto_tree_add_boolean(cci_tree, hf_ieee80211_he_cci_ac_constraint, tvb,
|
||||||
offset, 4, the_bits);
|
offset, 4, the_bits);
|
||||||
|
@ -22952,6 +23100,64 @@ dissect_a_control_cci(proto_tree *tree, tvbuff_t *tvb, int offset,
|
||||||
offset, 4, the_bits);
|
offset, 4, the_bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dissect_a_control_eht_om(proto_tree *tree, tvbuff_t *tvb, int offset,
|
||||||
|
guint32 bits _U_, guint32 start_bit)
|
||||||
|
{
|
||||||
|
proto_tree *eht_om_tree = NULL;
|
||||||
|
guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x0000003F;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We isolated the bits and moved them to the bottom ... so display them
|
||||||
|
*/
|
||||||
|
eht_om_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
|
||||||
|
ett_ieee80211_control_eht_om,
|
||||||
|
NULL, "EHT operating mode: 0x%02x", the_bits);
|
||||||
|
proto_tree_add_boolean(eht_om_tree, hf_ieee80211_he_eht_om_rx_nss_ext, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
proto_tree_add_boolean(eht_om_tree, hf_ieee80211_he_eht_om_chan_w_ext, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
proto_tree_add_boolean(eht_om_tree, hf_ieee80211_he_eht_om_tx_nsts_ext, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
proto_tree_add_uint(eht_om_tree, hf_ieee80211_he_eht_om_reserved, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dissect_a_control_srs(proto_tree *tree, tvbuff_t *tvb, int offset,
|
||||||
|
guint32 bits _U_, guint32 start_bit)
|
||||||
|
{
|
||||||
|
proto_tree *srs_tree = NULL;
|
||||||
|
guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000003FF;
|
||||||
|
|
||||||
|
srs_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
|
||||||
|
ett_ieee80211_control_srs,
|
||||||
|
NULL, "Simple response scheduling: 0x%02x",
|
||||||
|
the_bits);
|
||||||
|
proto_tree_add_uint(srs_tree, hf_ieee80211_he_srs_ppdu_resp_dur, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
proto_tree_add_uint(srs_tree, hf_ieee80211_he_srs_reserved, tvb, offset, 4,
|
||||||
|
the_bits);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dissect_a_control_aar(proto_tree *tree, tvbuff_t *tvb, int offset,
|
||||||
|
guint32 bits _U_, guint32 start_bit)
|
||||||
|
{
|
||||||
|
proto_tree *aar_tree = NULL;
|
||||||
|
guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000FFFFF;
|
||||||
|
|
||||||
|
aar_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
|
||||||
|
ett_ieee80211_control_aar,
|
||||||
|
NULL, "AP assistance request: 0x%02x",
|
||||||
|
the_bits);
|
||||||
|
proto_tree_add_uint(aar_tree, hf_ieee80211_he_aar_assisted_ap_bitmap, tvb,
|
||||||
|
offset, 4, the_bits);
|
||||||
|
proto_tree_add_uint(aar_tree, hf_ieee80211_he_aar_reserved, tvb, offset, 4,
|
||||||
|
the_bits);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dissect_ht_control(packet_info* pinfo, proto_tree *tree, tvbuff_t *tvb, int offset)
|
dissect_ht_control(packet_info* pinfo, proto_tree *tree, tvbuff_t *tvb, int offset)
|
||||||
{
|
{
|
||||||
|
@ -23002,36 +23208,58 @@ dissect_ht_control(packet_info* pinfo, proto_tree *tree, tvbuff_t *tvb, int offs
|
||||||
* enough bits left it must be padding
|
* enough bits left it must be padding
|
||||||
*/
|
*/
|
||||||
if (start_bit_offset == 6)
|
if (start_bit_offset == 6)
|
||||||
dissect_a_control_trs(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_trs(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
else
|
else
|
||||||
dissect_a_control_padding(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_padding(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 26;
|
start_bit_offset += 26;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_OM:
|
case A_CONTROL_OM:
|
||||||
dissect_a_control_om(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_om(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 12;
|
start_bit_offset += 12;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_HLA:
|
case A_CONTROL_HLA:
|
||||||
dissect_a_control_hla(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_hla(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 26;
|
start_bit_offset += 26;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_BSR:
|
case A_CONTROL_BSR:
|
||||||
dissect_a_control_bsr(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_bsr(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 26;
|
start_bit_offset += 26;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_UPH:
|
case A_CONTROL_UPH:
|
||||||
dissect_a_control_uph(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_uph(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 8;
|
start_bit_offset += 8;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_BQR:
|
case A_CONTROL_BQR:
|
||||||
case A_CONTROL_BQR_REV:
|
dissect_a_control_bqr(a_control_tree, tvb, offset, htc,
|
||||||
dissect_a_control_bqr(a_control_tree, tvb, offset, htc, start_bit_offset);
|
start_bit_offset);
|
||||||
start_bit_offset += 10;
|
start_bit_offset += 10;
|
||||||
break;
|
break;
|
||||||
case A_CONTROL_CCI:
|
case A_CONTROL_CCI:
|
||||||
dissect_a_control_cci(a_control_tree, tvb, offset, htc, start_bit_offset);
|
dissect_a_control_cci(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
start_bit_offset += 8;
|
start_bit_offset += 8;
|
||||||
break;
|
break;
|
||||||
|
case A_CONTROL_EHT_OM:
|
||||||
|
dissect_a_control_eht_om(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
|
start_bit_offset += 6;
|
||||||
|
break;
|
||||||
|
case A_CONTROL_SRS:
|
||||||
|
dissect_a_control_srs(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
|
start_bit_offset += 10;
|
||||||
|
break;
|
||||||
|
case A_CONTROL_AAR:
|
||||||
|
dissect_a_control_aar(a_control_tree, tvb, offset, htc,
|
||||||
|
start_bit_offset);
|
||||||
|
start_bit_offset += 20;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
expert_add_info(pinfo, a_control_tree, &ei_ieee80211_invalid_control_id);
|
expert_add_info(pinfo, a_control_tree, &ei_ieee80211_invalid_control_id);
|
||||||
start_bit_offset += 32; /* Abandon */
|
start_bit_offset += 32; /* Abandon */
|
||||||
|
@ -31293,7 +31521,6 @@ dissect_ieee80211_ranging_trigger_variant(proto_tree *tree, tvbuff_t *tvb,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return offset - saved_offset;
|
return offset - saved_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42119,109 +42346,104 @@ proto_register_ieee80211(void)
|
||||||
FT_UINT8, BASE_HEX, NULL, 0x80,
|
FT_UINT8, BASE_HEX, NULL, 0x80,
|
||||||
"Indicate that the Rx NSS subfield carries the maximum number of spatial streams that the STA can receive", HFILL }},
|
"Indicate that the Rx NSS subfield carries the maximum number of spatial streams that the STA can receive", HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_field_header,
|
{&hf_ieee80211_tbtt_info,
|
||||||
{"TBTT Information Field Header", "wlan.rnr.tbtt_information.field_header",
|
{"TBTT Information Field", "wlan.rnr.tbtt_info",
|
||||||
FT_UINT16, BASE_HEX, NULL, 0x0,
|
FT_UINT16, BASE_DEC, NULL, 0x03, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_field_type,
|
{&hf_ieee80211_tbtt_filtered_nap,
|
||||||
{"TBTT Information Field type", "wlan.rnr.tbtt_information.field_type",
|
{"TBTT Filtered Neighbor AP", "wlan.rnr.tbtt_info.fna",
|
||||||
FT_UINT16, BASE_DEC, NULL, 0x0003,
|
FT_UINT16, BASE_DEC, NULL, 1<<2, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_filtered_neighbor_ap,
|
{&hf_ieee80211_tbtt_info_count,
|
||||||
{"Filtered Neighbor AP", "wlan.rnr.tbtt_information.filtered_neighbor_ap",
|
{"TBTT Information Count", "wlan.rnr.tbtt_info.info_count",
|
||||||
FT_UINT16, BASE_DEC, NULL, 0x0004,
|
FT_UINT16, BASE_DEC, NULL, 0xf<<4, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_reserved,
|
{&hf_ieee80211_tbtt_info_length,
|
||||||
{"Reserved", "wlan.rnr.tbtt_information.reserved",
|
{"TBTT Information Length", "wlan.rnr.tbtt_info.info_len",
|
||||||
FT_UINT16, BASE_HEX, NULL, 0x0008,
|
FT_UINT16, BASE_DEC, VALS(tbtt_info_length), 0xff<<8, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_count,
|
{&hf_ieee80211_tbtt_operating_class,
|
||||||
{"TBTT Information Count", "wlan.rnr.tbtt_information.count",
|
{"Operating Class", "wlan.rnr.tbtt_info.operating_class",
|
||||||
FT_UINT16, BASE_DEC, NULL, 0x00F0,
|
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_tbtt_information_length,
|
{&hf_ieee80211_tbtt_channel_number,
|
||||||
{"TBTT Information Length", "wlan.rnr.tbtt_information.length",
|
{"Channel Number", "wlan.rnr.tbtt_info.channel_num",
|
||||||
FT_UINT16, BASE_DEC, NULL, 0xFF00,
|
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_operating_class,
|
{&hf_ieee80211_tbtt_offset,
|
||||||
{"Operating Class", "wlan.rnr.operating_class",
|
{"Neighbor AP TBTT Offset", "wlan.rnr.tbtt_info.tbtt_offset",
|
||||||
FT_UINT8, BASE_DEC, NULL, 0x0,
|
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_channel_number,
|
{&hf_ieee80211_tbtt_bssid,
|
||||||
{"Channel Number", "wlan.rnr.channel_number",
|
{"BSSID", "wlan.rnr.tbtt_info.bssid",
|
||||||
FT_UINT8, BASE_DEC, NULL, 0x0,
|
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_neighbor_ap_tbtt_offset,
|
{&hf_ieee80211_tbtt_short_ssid,
|
||||||
{"Neighbor AP TBTT Offset", "wlan.rnr.neighbor_ap_tbtt_offset",
|
{"Short SSID", "wlan.rnr.tbtt_info.sh_ssid",
|
||||||
FT_UINT8, BASE_HEX, NULL, 0x0,
|
FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bssid,
|
{&hf_ieee80211_rnr_bss_params,
|
||||||
{"BSSID", "wlan.rnr.bssid",
|
{"BSS Parameters", "wlan.rnr.tbtt_info.bss_parameters",
|
||||||
FT_ETHER, BASE_NONE, NULL, 0x0,
|
FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_short_ssid,
|
{&hf_ieee80211_rnr_oct_recommended,
|
||||||
{"Short SSID", "wlan.rnr.short_ssid",
|
{"OCT Recommended", "wlan.rnr.tbtt_info.bss_parameters.oct_recommended",
|
||||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters,
|
{&hf_ieee80211_rnr_same_ssid,
|
||||||
{"BSS Parameters", "wlan.rnr.bss_parameters",
|
{"Same SSID", "wlan.rnr.tbtt_info.bss_parameters.same_ssid",
|
||||||
FT_UINT8, BASE_HEX, NULL, 0x0,
|
FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b0,
|
{&hf_ieee80211_rnr_multiple_bssid,
|
||||||
{"OCT Recommended", "wlan.rnr.bss_parameters.b0",
|
{"Multiple BSSID", "wlan.rnr.tbtt_info.bss_parameters.multiple_bssid",
|
||||||
FT_BOOLEAN, 8, NULL, 0x01,
|
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b1,
|
{&hf_ieee80211_rnr_transmitted_bssid,
|
||||||
{"Same SSID", "wlan.rnr.bss_parameters.b1",
|
{"Transmitted BSSID", "wlan.rnr.tbtt_info.bss_parameters.transmitted_bssid",
|
||||||
FT_BOOLEAN, 8, NULL, 0x02,
|
FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b2,
|
{&hf_ieee80211_rnr_ess_with_colocated_ap,
|
||||||
{"Multiple BSSID", "wlan.rnr.bss_parameters.b2",
|
{"Member of ESS with 2.4/5 GHz Co-Located AP",
|
||||||
FT_BOOLEAN, 8, NULL, 0x04,
|
"wlan.rnr.tbtt_info.bss_parameters.member_of_ess_with_2p4_5_ghz_colocated_ap",
|
||||||
NULL, HFILL }},
|
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b3,
|
{&hf_ieee80211_rnr_unsolicited_probe_responses,
|
||||||
{"Transmitted BSSID", "wlan.rnr.bss_parameters.b3",
|
{"Unsolicited Probe Responses",
|
||||||
FT_BOOLEAN, 8, NULL, 0x08,
|
"wlan.rnr.tbtt_info.bss_parameters.unsolicited_probe_responses",
|
||||||
NULL, HFILL }},
|
FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b4,
|
{&hf_ieee80211_rnr_same_colocated_ap,
|
||||||
{"Member of ESS with 2.4/5 GHz Co-Located AP", "wlan.rnr.bss_parameters.b4",
|
{"Co-Located AP", "wlan.rnr.tbtt_info.bss_parameters.colocated_ap",
|
||||||
FT_BOOLEAN, 8, NULL, 0x10,
|
FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b5,
|
{&hf_ieee80211_rnr_same_reserved,
|
||||||
{"Unsolicited Probe Responses Active", "wlan.rnr.bss_parameters.b5",
|
{"Reserved", "wlan.rnr.tbtt_info.bss_parameters.reserved",
|
||||||
FT_BOOLEAN, 8, NULL, 0x20,
|
FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b6,
|
{&hf_ieee80211_rnr_20mhz_psd_subfield,
|
||||||
{"Co-Located AP", "wlan.rnr.bss_parameters.b6",
|
{"PSD Subfield", "wlan.rnr.tbt_info.psd_subfield",
|
||||||
FT_BOOLEAN, 8, NULL, 0x40,
|
FT_UINT8, BASE_CUSTOM, CF_FUNC(tpe_psd_custom), 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_bss_parameters_b7,
|
{&hf_ieee80211_rnr_mld_params,
|
||||||
{"Reserved", "wlan.rnr.bss_parameters.b7",
|
{"MLD Parameters", "wlan.rnr.tbtt_info.mld_parameters",
|
||||||
FT_BOOLEAN, 8, NULL, 0x80,
|
FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL }},
|
||||||
NULL, HFILL }},
|
|
||||||
|
|
||||||
{&hf_ieee80211_rnr_20_mhz_psd,
|
{&hf_ieee80211_rnr_mld_id,
|
||||||
{"20 MHz PSD", "wlan.rnr.20_mhz_psd",
|
{"MLD ID", "wlan.rnr.tbtt_info.mld_parameters.mld_id",
|
||||||
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
FT_UINT24, BASE_HEX, NULL, 0x0000FF, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_rnr_mld_link_id,
|
||||||
|
{"Link ID", "wlan.rnr.tbtt_info.mld_parameters.link_id",
|
||||||
|
FT_UINT24, BASE_HEX, NULL, 0x000F00, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_rnr_mld_bss_params_change_count,
|
||||||
|
{"BSS Parameters Change Count",
|
||||||
|
"wlan.rnr.tbtt_info.mld_parameters.bss_params_change_count",
|
||||||
|
FT_UINT24, BASE_HEX, NULL, 0x0FF000, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_rnr_mld_reserved,
|
||||||
|
{"Reserved", "wlan.rnr.tbtt_info.mld_parameters.reserved",
|
||||||
|
FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_s1g_cap_byte1,
|
{&hf_ieee80211_s1g_cap_byte1,
|
||||||
{"S1G Capabilities Byte 1", "wlan.s1g.capabilities.byte1",
|
{"S1G Capabilities Byte 1", "wlan.s1g.capabilities.byte1",
|
||||||
|
@ -47348,13 +47570,46 @@ proto_register_ieee80211(void)
|
||||||
FT_BOOLEAN, 32, NULL, 0x02, NULL, HFILL }},
|
FT_BOOLEAN, 32, NULL, 0x02, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_he_cci_sr_ppdu_indic,
|
{&hf_ieee80211_he_cci_sr_ppdu_indic,
|
||||||
{"SR PPDU Indication", "wlan.htc.he.a_control.cci.sr_ppdu_indic",
|
{"PSRT PPDU", "wlan.htc.he.a_control.cci.sr_ppdu_indic",
|
||||||
FT_BOOLEAN, 32, NULL, 0x04, NULL, HFILL }},
|
FT_BOOLEAN, 32, NULL, 0x04, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_he_cci_reserved,
|
{&hf_ieee80211_he_cci_reserved,
|
||||||
{"Reserved", "wlan.htc.htc.a_control.cci.reserved",
|
{"Reserved", "wlan.htc.he.a_control.cci.reserved",
|
||||||
FT_UINT32, BASE_HEX, NULL, 0xF8, NULL, HFILL }},
|
FT_UINT32, BASE_HEX, NULL, 0xF8, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_eht_om_rx_nss_ext,
|
||||||
|
{"Rx NSS Extenstion", "wlan.htc.he.a_control.eht_om.rx_nss_ext",
|
||||||
|
FT_BOOLEAN, 32, NULL, 0x01, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_eht_om_chan_w_ext,
|
||||||
|
{"Channel Width Extenstion", "wlan.htc.he.a_control.eht_om.chan_w_ext",
|
||||||
|
FT_BOOLEAN, 32, NULL, 0x02, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_eht_om_tx_nsts_ext,
|
||||||
|
{"Tx NSTS Extenstion", "wlan.htc.he.a_control.eht_om.tx_nsts_ext",
|
||||||
|
FT_BOOLEAN, 32, NULL, 0x04, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_eht_om_reserved,
|
||||||
|
{"Reserved", "wlan.htc.he.a_control.eht_om.reserved",
|
||||||
|
FT_UINT32, BASE_HEX, NULL, 0x38, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_srs_ppdu_resp_dur,
|
||||||
|
{"PPDU Response Duration", "wlan.htc.he.a_control.srs.ppdu_resp_dur",
|
||||||
|
FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_srs_reserved,
|
||||||
|
{"Reserved", "wlan.htc.he.a_control.srs.reserved",
|
||||||
|
FT_UINT32, BASE_HEX, NULL, 0x00000300, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_aar_assisted_ap_bitmap,
|
||||||
|
{"Assisted AP Link ID Bitmap",
|
||||||
|
"wlan.htc.he.a_control.aar.assisted_ap_link_id_bitmap",
|
||||||
|
FT_UINT32, BASE_HEX, NULL, 0x0000FFFF, NULL, HFILL }},
|
||||||
|
|
||||||
|
{&hf_ieee80211_he_aar_reserved,
|
||||||
|
{"Reserved", "wlan.htc.he.a_control.aar.reserved",
|
||||||
|
FT_UINT32, BASE_HEX, NULL, 0x000F0000, NULL, HFILL }},
|
||||||
|
|
||||||
{&hf_ieee80211_he_trigger_common_info,
|
{&hf_ieee80211_he_trigger_common_info,
|
||||||
{"HE Trigger Common Info", "wlan.trigger.he.common_info",
|
{"HE Trigger Common Info", "wlan.trigger.he.common_info",
|
||||||
FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }},
|
FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }},
|
||||||
|
@ -50733,6 +50988,9 @@ proto_register_ieee80211(void)
|
||||||
&ett_ieee80211_control_uph,
|
&ett_ieee80211_control_uph,
|
||||||
&ett_ieee80211_buffer_control_bqr,
|
&ett_ieee80211_buffer_control_bqr,
|
||||||
&ett_ieee80211_control_cci,
|
&ett_ieee80211_control_cci,
|
||||||
|
&ett_ieee80211_control_eht_om,
|
||||||
|
&ett_ieee80211_control_srs,
|
||||||
|
&ett_ieee80211_control_aar,
|
||||||
|
|
||||||
&ett_vht_cap_tree,
|
&ett_vht_cap_tree,
|
||||||
&ett_vht_mcsset_tree,
|
&ett_vht_mcsset_tree,
|
||||||
|
@ -51024,10 +51282,10 @@ proto_register_ieee80211(void)
|
||||||
&ett_fils_indication_realm_list,
|
&ett_fils_indication_realm_list,
|
||||||
&ett_fils_indication_public_key_list,
|
&ett_fils_indication_public_key_list,
|
||||||
|
|
||||||
&ett_rnr_tbtt_tree,
|
&ett_neighbor_ap_info,
|
||||||
&ett_rnr_tbtt_subtree,
|
&ett_tbtt_infos,
|
||||||
&ett_rnr_tbtt_information_tree,
|
&ett_rnr_bss_params_tree,
|
||||||
&ett_rnr_bss_parameters,
|
&ett_rnr_mld_params_tree,
|
||||||
|
|
||||||
&ett_qos_mgmt_dscp_policy_capabilities,
|
&ett_qos_mgmt_dscp_policy_capabilities,
|
||||||
&ett_qos_mgmt_pol_capa,
|
&ett_qos_mgmt_pol_capa,
|
||||||
|
@ -51240,6 +51498,9 @@ proto_register_ieee80211(void)
|
||||||
{ &ei_ieee80211_htc_in_dmg_packet,
|
{ &ei_ieee80211_htc_in_dmg_packet,
|
||||||
{ "wlan.htc_in_dmg_packet", PI_PROTOCOL, PI_ERROR,
|
{ "wlan.htc_in_dmg_packet", PI_PROTOCOL, PI_ERROR,
|
||||||
"DMG frame has the +HTC/Order bit set", EXPFILL }},
|
"DMG frame has the +HTC/Order bit set", EXPFILL }},
|
||||||
|
|
||||||
|
{ &ei_ieee80211_tbtt_unexpected,
|
||||||
|
{ "wlan.rnr.tbtt_info.unexpected", PI_MALFORMED, PI_ERROR, "Unexpected TBTT Information Length", EXPFILL }},
|
||||||
};
|
};
|
||||||
|
|
||||||
expert_module_t *expert_ieee80211;
|
expert_module_t *expert_ieee80211;
|
||||||
|
|
Loading…
Reference in New Issue