aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2015-08-06 17:44:42 -0400
committerBill Meier <wmeier@newsguy.com>2015-08-07 15:30:00 +0000
commit7171ee57021f659bdb5870e7a210cbd164a1be3a (patch)
treed4b27418efe676a588bcb359d1d65568b4ed545d /epan
parentf657e6a09012202f24ffc72d9995863b6dfe1a9a (diff)
[ieee80211] Rework QoS Capability and QoS info code.
Specifically: - Replace/remove much of 'dissect_qos_capability()' code to use existing 'fixed field' code to dissect QoS_Info field. Note: Much of the code added in g40d6131 to dissect the QoS Info field duplicated already existing (but unused) "fixed field" code to do same. - Rework some QoS Info field filter names, variable names and value-strings to better match the text used in 802.11-2012. - Rename 'dissect_qos_info()' to 'dissect_wme_qos_info()' to reflect the fact that this code is only for the (now preumably obsolete) original WME(WMM) specification for the QoS Info field. Change-Id: Id89780dfe60b2e4c63332bdb946cc29c67b5127a Reviewed-on: https://code.wireshark.org/review/9903 Petri-Dish: Bill Meier <wmeier@newsguy.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Reviewed-by: Bill Meier <wmeier@newsguy.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-ieee80211.c244
1 files changed, 75 insertions, 169 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index cd86859baa..2f9e0bcc0d 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -1864,18 +1864,18 @@ static const value_string ff_channel_width_vals[] = {
};
static const true_false_string ff_qos_info_ap_q_ack_flag = {
- "Implemented",
- "Not Implemented"
+ "APs MIB attribute dot11QAckOptionImplemented is true",
+ "APs MIB attribute dot11QAckOptionImplemented is false"
};
static const true_false_string ff_qos_info_ap_queue_req_flag = {
- "Can process a nonzero Queue Size subfield in the QoS Control field in QoS data frames",
- "Can NOT process a nonzero Queue Size subfield in the QoS Control field in QoS data frames"
+ "AP can process a nonzero Queue Size subfield in the QoS Control field in QoS data frames",
+ "AP cannot process a nonzero Queue Size subfield in the QoS Control field in QoS data frames"
};
static const true_false_string ff_qos_info_ap_txop_request_flag = {
- "Can process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames",
- "Can NOT process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames"
+ "AP can process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames",
+ "AP cannot process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames"
};
static const true_false_string ff_qos_info_sta_ac_flag = {
@@ -1884,21 +1884,21 @@ static const true_false_string ff_qos_info_sta_ac_flag = {
};
static const true_false_string ff_qos_info_sta_q_ack_flag = {
- "Implemented",
- "Not Implemented"
+ "STAs MIB attribute dot11QAckOptionImplemented is true",
+ "STAs MIB attribute dot11QAckOptionImplemented is false"
};
static const value_string ff_qos_info_sta_max_sp_len_flags[] = {
{0x00, "AP may deliver all buffered MSDUs, A-MSDUs and MMPDUs"},
- {0x01, "AP may deliver a maximum of two MSDUs and MMPDUs per SP"},
- {0x02, "AP may deliver a maximum of four MSDUs and MMPDUs per SP"},
- {0x03, "AP may deliver a maximum of six MSDUs and MMPDUs per SP"},
+ {0x01, "AP may deliver a maximum of two MSDUs, A-MSDUs and MMPDUs per SP"},
+ {0x02, "AP may deliver a maximum of four MSDUs, A-MSDUs and MMPDUs per SP"},
+ {0x03, "AP may deliver a maximum of six MSDUs, A-MSDUs and MMPDUs per SP"},
{0, NULL}
};
static const true_false_string ff_qos_info_sta_more_data_ack_flag = {
- "Can process ACK frames with the More Data bit in the Frame Control field set to 1",
- "Can NOT process ACK frames with the More Data bit in the Frame Control field set to 1"
+ "STA can process ACK frames with the More Data bit in the Frame Control field set to 1 and will remain in the wake state",
+ "STA cannot process ACK frames with the More Data bit in the Frame Control field set to 1"
};
static const true_false_string ff_sm_pwr_save_sm_mode_flag = {
@@ -2372,30 +2372,6 @@ static const value_string ieee80211_data_encap_payload_types[] = {
{0, NULL}
};
-static const true_false_string qos_info_field_qack_flags = {
- "STAs/APs MIB attribute dot11QAckOptionImplemented is true",
- "STAs/APs MIB attribute dot11QAckOptionImplemented is false"
-};
-
-static const true_false_string qos_info_field_more_data_ack_flags = {
- "STA can process Ack frames with More Data bit and will remain in the awake state.",
- "STA cannot process Ack frames with More Data bit in Frame Control field."
-};
-
-static const true_false_string qos_info_field_queue_req_flags = {
- "AP can process a nonzero Queue Size subfield in the QoS Control field in QoS data frames",
- "AP cannot process Queue Size subfield in QoS data frames."
-};
-
- /* 7.3.1.17 Table 19b-Settings of the Max SP Length subfield */
-static const value_string qos_info_field_max_sp_length_flags[] = {
- { 0x0, "QAP may deliver all buffered MSDUs and MMPDUs." },
- { 0x2, "QAP may deliver a maximum of two MSDUs and MMPDUs per SP." },
- { 0x1, "QAP may deliver a maximum of four MSDUs and MMPDUs per SP." },
- { 0x3, "QAP may deliver a maximum of six MSDUs and MMPDUs per SP." },
- { 0, NULL}
-};
-
static const true_false_string rsn_preauth_flags = {
"Transmitter supports pre-authentication",
"Transmitter does not support pre-authentication"
@@ -3399,7 +3375,7 @@ static int hf_ieee80211_ff_qos_info_sta_ac_vi = -1;
static int hf_ieee80211_ff_qos_info_sta_ac_bk = -1;
static int hf_ieee80211_ff_qos_info_sta_ac_be = -1;
static int hf_ieee80211_ff_qos_info_sta_q_ack = -1;
-static int hf_ieee80211_ff_qos_info_sta_max_sp_len = -1;
+static int hf_ieee80211_ff_qos_info_sta_max_sp_length = -1;
static int hf_ieee80211_ff_qos_info_sta_more_data_ack = -1;
static const int *ieee80211_ff_qos_info_sta_fields[] = {
@@ -3408,7 +3384,7 @@ static const int *ieee80211_ff_qos_info_sta_fields[] = {
&hf_ieee80211_ff_qos_info_sta_ac_bk,
&hf_ieee80211_ff_qos_info_sta_ac_be,
&hf_ieee80211_ff_qos_info_sta_q_ack,
- &hf_ieee80211_ff_qos_info_sta_max_sp_len,
+ &hf_ieee80211_ff_qos_info_sta_max_sp_length,
&hf_ieee80211_ff_qos_info_sta_more_data_ack,
NULL
};
@@ -4581,18 +4557,6 @@ static int hf_ieee80211_tspec_medium = -1;
static int hf_ieee80211_tspec_dmg = -1;
static int hf_ieee80211_ts_delay = -1;
static int hf_ieee80211_tclas_process = -1;
-static int hf_ieee80211_tag_qos_cap_qos_info = -1;
-static int hf_ieee80211_qos_info_field_vo_uapsd = -1;
-static int hf_ieee80211_qos_info_field_vi_uapsd = -1;
-static int hf_ieee80211_qos_info_field_bk_uapsd = -1;
-static int hf_ieee80211_qos_info_field_be_uapsd = -1;
-static int hf_ieee80211_qos_info_field_qack = -1;
-static int hf_ieee80211_qos_info_field_max_sp_length = -1;
-static int hf_ieee80211_qos_info_field_more_data_ack = -1;
-static int hf_ieee80211_qos_info_field_edca_upd_cnt = -1;
-static int hf_ieee80211_qos_info_field_queue_req = -1;
-static int hf_ieee80211_qos_info_field_txop_req = -1;
-static int hf_ieee80211_qos_info_field_reserved = -1;
static int hf_ieee80211_tag_ext_supp_rates = -1;
static int hf_ieee80211_sched_info = -1;
static int hf_ieee80211_sched_info_agg = -1;
@@ -4991,7 +4955,6 @@ static gint ett_tag_country_fnm_tree = -1;
static gint ett_tag_country_rcc_tree = -1;
static gint ett_qos_parameters = -1;
static gint ett_qos_ps_buf_state = -1;
-static gint ett_qos_info_field_tree = -1;
static gint ett_wep_parameters = -1;
static gint ett_msh_control = -1;
static gint ett_hwmp_targ_flags_tree = -1;
@@ -5158,6 +5121,7 @@ static expert_field ei_ieee80211_ff_anqp_capability = EI_INIT;
static expert_field ei_ieee80211_not_enough_room_for_anqp_header = EI_INIT;
static expert_field ei_ieee80211_ff_query_request_length = EI_INIT;
static expert_field ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype = EI_INIT;
+static expert_field ei_ieee80211_qos_info_bad_ftype = EI_INIT;
static expert_field ei_ieee80211_pmkid_count_too_large = EI_INIT;
static expert_field ei_ieee80211_ff_anqp_venue_length = EI_INIT;
static expert_field ei_ieee80211_ff_anqp_roaming_consortium_oi_len = EI_INIT;
@@ -7480,21 +7444,26 @@ add_ff_channel_width(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, in
return 1;
}
+/* QoS Info: 802.11-2012 8.4.1.17 */
static guint
add_ff_qos_info_ap(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset)
{
- proto_tree_add_bitmask(tree, tvb, offset, hf_ieee80211_ff_qos_info_ap,
- ett_ff_qos_info, ieee80211_ff_qos_info_ap_fields,
- ENC_LITTLE_ENDIAN);
+ /* From AP so decode as AP: Figure 8-51-QoS Info field when sent by a AP */
+ proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_qos_info_ap,
+ ett_ff_qos_info, ieee80211_ff_qos_info_ap_fields,
+ ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
return 1;
}
+
+/* QoS Info: 802.11-2012 8.4.1.17 */
static guint
add_ff_qos_info_sta(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset)
{
- proto_tree_add_bitmask(tree, tvb, offset, hf_ieee80211_ff_qos_info_sta,
- ett_ff_qos_info, ieee80211_ff_qos_info_sta_fields,
- ENC_LITTLE_ENDIAN);
+ /* To AP so decode as STA: Figure 8-52-QoS Info field when set by a non-AP STA */
+ proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_qos_info_sta,
+ ett_ff_qos_info, ieee80211_ff_qos_info_sta_fields,
+ ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
return 1;
}
@@ -10008,13 +9977,13 @@ static const value_string ft_subelem_id_vals[] = {
};
static int
-dissect_qos_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int ftype)
+dissect_wme_qos_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int ftype)
{
- proto_tree *qos_info_tree;
- proto_item *qos_info_item;
+ proto_tree *wme_qos_info_tree;
+ proto_item *wme_qos_info_item;
- qos_info_item = proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_qos_info, tvb, offset, 1, ENC_NA);
- qos_info_tree = proto_item_add_subtree(qos_info_item, ett_wme_qos_info);
+ wme_qos_info_item = proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_qos_info, tvb, offset, 1, ENC_NA);
+ wme_qos_info_tree = proto_item_add_subtree(wme_qos_info_item, ett_wme_qos_info);
switch (ftype) {
case MGT_ASSOC_REQ:
@@ -10022,12 +9991,12 @@ dissect_qos_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset
case MGT_REASSOC_REQ:
{
/* To AP so decode as per WMM standard Figure 7 QoS Info field when sent from WMM STA*/
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_max_sp_length, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_be, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_bk, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vi, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vo, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_reserved, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_max_sp_length, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_be, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_bk, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vi, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vo, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_sta_reserved, tvb, offset, 1, ENC_NA);
break;
}
case MGT_BEACON:
@@ -10036,13 +10005,13 @@ dissect_qos_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset
case MGT_REASSOC_RESP:
{
/* From AP so decode as per WMM standard Figure 6 QoS Info field when sent from WMM AP */
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_u_apsd, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_parameter_set_count, tvb, offset, 1, ENC_NA);
- proto_tree_add_item(qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_reserved, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_u_apsd, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_parameter_set_count, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(wme_qos_info_tree, hf_ieee80211_wfa_ie_wme_qos_info_ap_reserved, tvb, offset, 1, ENC_NA);
break;
}
default:
- expert_add_info_format(pinfo, qos_info_item, &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, "Could not deduce direction to decode correctly, ftype %u", ftype);
+ expert_add_info_format(pinfo, wme_qos_info_item, &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, "Could not deduce direction to decode correctly, ftype %u", ftype);
break;
}
@@ -10150,14 +10119,14 @@ dissect_vendor_ie_wpawme(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, in
case 0: /* WME Information Element */
{
/* WME QoS Info Field */
- offset = dissect_qos_info(tree, tvb, pinfo, offset, ftype);
+ offset = dissect_wme_qos_info(tree, tvb, pinfo, offset, ftype);
break;
}
case 1: /* WME Parameter Element */
{
int i;
/* WME QoS Info Field */
- offset = dissect_qos_info(tree, tvb, pinfo, offset, ftype);
+ offset = dissect_wme_qos_info(tree, tvb, pinfo, offset, ftype);
proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_reserved, tvb, offset, 1, ENC_NA);
offset += 1;
/* AC Parameters */
@@ -10737,49 +10706,37 @@ dissect_vendor_ie_nintendo(proto_item *item _U_, proto_tree *ietree,
}
}
-/* 802.11e 7.3.2.33 QoS Capability element */
+/* 802.11-2012 8.4.2.37 QoS Capability element */
static int
dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int ftype)
{
- proto_item *cap_info_item;
- proto_tree *cap_info_tree;
-
- cap_info_item = proto_tree_add_item(tree, hf_ieee80211_tag_qos_cap_qos_info, tvb, offset, 1, ENC_NA);
- cap_info_tree = proto_item_add_subtree(cap_info_item, ett_qos_info_field_tree);
switch (ftype) {
case MGT_ASSOC_REQ:
case MGT_PROBE_REQ:
case MGT_REASSOC_REQ:
{
- /* To AP so decode as STA: Figure 33h-QoS Info field when set by a non-AP QSTA */
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_vo_uapsd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_vi_uapsd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_bk_uapsd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_be_uapsd, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_qack, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_max_sp_length, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_more_data_ack, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ /* To AP so decode Qos Info as STA */
+ offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_QOS_INFO_STA);
break;
}
+
case MGT_BEACON:
case MGT_PROBE_RESP:
case MGT_ASSOC_RESP:
case MGT_REASSOC_RESP:
{
- /* From AP so decode as AP: Figure 33g-QoS Info field when sent by a QAP */
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_edca_upd_cnt, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_qack, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_queue_req, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_txop_req, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(cap_info_tree, hf_ieee80211_qos_info_field_reserved, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ /* From AP so decode QoS Info as AP */
+ offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_QOS_INFO_AP);
break;
}
+
default:
- expert_add_info_format(pinfo, cap_info_item, &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, "Could not deduce direction to decode correctly, ftype %u", ftype);
+ expert_add_info_format(pinfo, proto_tree_get_parent(tree), &ei_ieee80211_qos_info_bad_ftype,
+ "Could not deduce direction to decode correctly, ftype %u", ftype);
break;
}
- return offset + 1;
+ return offset;
}
/* 7.3.2.25 RSN information element */
@@ -14035,6 +13992,17 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
}
break;
+#if 0 /* ToDo */
+ case TAG_EDCA_PARAM_SET: /* 8.4.2.31 in 802-11-2012 */
+ offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_QOS_INFO_AP);
+ offset += 1; /* reserved */
+ offset += 4; /* AC_BE */
+ offset += 4; /* AC_BK */
+ offset += 4; /* AC_VI */
+ offset += 4; /* AC_VO */
+ break;
+#endif
+
case TAG_TSPEC: /* TSPEC element (13) */
if (isDMG == FALSE && tag_len != 55)
{
@@ -15049,15 +15017,13 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
offset += 1;
break;
- case TAG_QOS_CAPABILITY: /* 7.3.2.35 QoS Capability element (46) */
+ case TAG_QOS_CAPABILITY: /* 802.11-2012 8.4.2.37 QoS Capability element (46) */
if (tag_len != 1)
{
expert_add_info_format(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 1", tag_len);
break;
}
{
- /* proto_item *ti_cap;
- proto_tree *cap_tree; */
offset += 2;
offset = dissect_qos_capability(tree, tvb, pinfo, offset, ftype);
}
@@ -21141,25 +21107,25 @@ proto_register_ieee80211 (void)
{&hf_ieee80211_ff_qos_info_sta,
{"QoS Information (STA)", "wlan_mgt.fixed.qosinfo.sta",
FT_UINT8, BASE_HEX, NULL, 0,
- NULL, HFILL }},
+ "TCLAS Processing", HFILL }},
{&hf_ieee80211_ff_qos_info_sta_ac_vo,
- {"AC_VO", "wlan_mgt.fixed.qosinfo.sta.ac.vo",
+ {"AC_VO U-APSD Flag", "wlan_mgt.fixed.qosinfo.sta.ac_vo",
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x01,
NULL, HFILL }},
{&hf_ieee80211_ff_qos_info_sta_ac_vi,
- {"AC_VI", "wlan_mgt.fixed.qosinfo.sta.ac.vi",
+ {"AC_VI U-APSD Flag", "wlan_mgt.fixed.qosinfo.sta.ac_vi",
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x02,
NULL, HFILL }},
{&hf_ieee80211_ff_qos_info_sta_ac_bk,
- {"AC_BK", "wlan_mgt.fixed.qosinfo.sta.ac.bk",
+ {"AC_BK U-APSD Flag", "wlan_mgt.fixed.qosinfo.sta.ac_bk",
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x04,
NULL, HFILL }},
{&hf_ieee80211_ff_qos_info_sta_ac_be,
- {"AC_BE", "wlan_mgt.fixed.qosinfo.sta.ac.be",
+ {"AC_BE U-APSD Flag", "wlan_mgt.fixed.qosinfo.sta.ac_be",
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x08,
NULL, HFILL }},
@@ -21168,13 +21134,13 @@ proto_register_ieee80211 (void)
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_q_ack_flag), 0x10,
"QoS Ack", HFILL }},
- {&hf_ieee80211_ff_qos_info_sta_max_sp_len,
- {"Service Period (SP) Length", "wlan_mgt.fixed.qosinfo.sta.splen",
+ {&hf_ieee80211_ff_qos_info_sta_max_sp_length,
+ {"Max SP Length", "wlan_mgt.fixed.qosinfo.sta.max_sp_length",
FT_UINT8, BASE_HEX, VALS(ff_qos_info_sta_max_sp_len_flags) , 0x60,
NULL, HFILL }},
{&hf_ieee80211_ff_qos_info_sta_more_data_ack,
- {"More Data Ack", "wlan_mgt.fixed.qosinfo.sta.moredataack",
+ {"More Data Ack", "wlan_mgt.fixed.qosinfo.sta.more_data_ack",
FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_more_data_ack_flag), 0x80,
NULL, HFILL }},
@@ -25873,68 +25839,8 @@ proto_register_ieee80211 (void)
{&hf_ieee80211_tclas_process,
{"Processing", "wlan_mgt.tclas_proc.processing",
FT_UINT8, BASE_DEC, VALS(ieee80211_tclas_process_flag), 0,
- "TCLAS Processing", HFILL }},
-
- {&hf_ieee80211_tag_qos_cap_qos_info,
- {"QoS Info", "wlan_mgt.tag.qos_cap.qos_info",
- FT_UINT8, BASE_HEX, NULL, 0,
- "TCLAS Processing", HFILL }},
-
- {&hf_ieee80211_qos_info_field_vo_uapsd,
- {"AC_VO U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.vo_uapsd",
- FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
- NULL, HFILL }},
-
- {&hf_ieee80211_qos_info_field_vi_uapsd,
- {"AC_VI U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.vi_uapsd",
- FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
- NULL, HFILL }},
-
- {&hf_ieee80211_qos_info_field_bk_uapsd,
- {"AC_BK U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.bk_uapsd",
- FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
- NULL, HFILL }},
-
- {&hf_ieee80211_qos_info_field_be_uapsd,
- {"AC_BE U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.be_uapsd",
- FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
- NULL, HFILL }},
-
- {&hf_ieee80211_qos_info_field_qack,
- {"Q-ACK", "wlan_mgt.tag.qos_cap.qos_info.qack",
- FT_BOOLEAN, 8, TFS(&qos_info_field_qack_flags), 0x10,
NULL, HFILL }},
- {&hf_ieee80211_qos_info_field_max_sp_length,
- {"Max SP-Length", "wlan_mgt.tag.qos_cap.qos_info.max_sp_length",
- FT_UINT8, BASE_HEX, VALS(qos_info_field_max_sp_length_flags), 0x60,
- NULL , HFILL }},
-
- {&hf_ieee80211_qos_info_field_more_data_ack,
- {"More Data Ack", "wlan_mgt.tag.qos_cap.qos_info.more_data_ack",
- FT_BOOLEAN, 8, TFS(&qos_info_field_more_data_ack_flags) , 0x80,
- NULL, HFILL }},
-
- {&hf_ieee80211_qos_info_field_edca_upd_cnt,
- {"EDCA Parameter Set Update Count", "wlan_mgt.tag.qos_cap.qos_info.edca_upd_cnt",
- FT_UINT8, BASE_DEC, NULL, 0x07,
- NULL, HFILL}},
-
- {&hf_ieee80211_qos_info_field_queue_req,
- {"Queue Request", "wlan_mgt.tag.qos_cap.qos_info.queue_req",
- FT_BOOLEAN, 8, TFS(&qos_info_field_queue_req_flags), 0x07,
- NULL, HFILL}},
-
- {&hf_ieee80211_qos_info_field_txop_req,
- {"TXOP Request", "wlan_mgt.tag.qos_cap.qos_info.txop_req",
- FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x40,
- NULL, HFILL}},
-
- {&hf_ieee80211_qos_info_field_reserved,
- {"Reserved", "wlan_mgt.tag.qos_cap.qos_info.reserved",
- FT_BOOLEAN, 8, NULL, 0x80,
- NULL, HFILL}},
-
{&hf_ieee80211_tag_ext_supp_rates,
{"Extended Supported Rates", "wlan_mgt.extended_supported_rates",
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
@@ -26808,7 +26714,6 @@ proto_register_ieee80211 (void)
&ett_tag_country_rcc_tree,
&ett_qos_parameters,
&ett_qos_ps_buf_state,
- &ett_qos_info_field_tree,
&ett_wep_parameters,
&ett_msh_control,
&ett_hwmp_targ_flags_tree,
@@ -26997,6 +26902,7 @@ proto_register_ieee80211 (void)
{ &ei_ieee80211_tdls_setup_response_malformed, { "wlan_mgt.tdls_setup_response_malformed", PI_MALFORMED, PI_ERROR, "TDLS Setup Response (success) does not include mandatory fields", EXPFILL }},
{ &ei_ieee80211_tdls_setup_confirm_malformed, { "wlan_mgt.tdls_setup_confirm_malformed", PI_MALFORMED, PI_ERROR, "TDLS Setup Confirm (success) does not include mandatory fields", EXPFILL }},
{ &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, { "wlan_mgt.wfa.ie.wme.qos_info.bad_ftype", PI_UNDECODED, PI_WARN, "Could not deduce direction to decode correctly", EXPFILL }},
+ { &ei_ieee80211_qos_info_bad_ftype, { "wlan_mgt.qos_info.bad_ftype", PI_UNDECODED, PI_WARN, "Could not deduce direction to decode correctly", EXPFILL }},
{ &ei_ieee80211_rsn_pcs_count, { "wlan_mgt.rsn.pcs.count.invalid", PI_MALFORMED, PI_ERROR, "Pairwise Cipher Suite Count too large", EXPFILL }},
{ &ei_ieee80211_rsn_pmkid_count, { "wlan_mgt.rsn.akms.count.invalid", PI_MALFORMED, PI_ERROR, "Auth Key Management (AKM) Suite Count too large", EXPFILL }},
{ &ei_ieee80211_pmkid_count_too_large, { "wlan_mgt.rsn.pmkid.count.invalid", PI_MALFORMED, PI_ERROR, "PMKID Count too large", EXPFILL }},