More bitfield fixes.
[metze/wireshark/wip.git] / epan / dissectors / packet-ieee80211.c
index fe3cc29e1a36f5948393c0d19a071f0ca315f791..449ce07646eb91fb7ba63c5dd708334b625f9327 100644 (file)
@@ -6,19 +6,7 @@
  * By Gerald Combs <gerald@wireshark.org>
  * Copyright 1998 Gerald Combs
  *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * SPDX-License-Identifier: GPL-2.0-or-later
  *
  * Credits:
  *
@@ -88,7 +76,7 @@
 #include "packet-sflow.h"
 #include "packet-gre.h"
 
-#include <epan/crypt/airpdcap_ws.h>
+#include <epan/crypt/dot11decrypt_ws.h>
 
 void proto_register_ieee80211(void);
 void proto_reg_handoff_ieee80211(void);
@@ -126,6 +114,9 @@ static gboolean wlan_ignore_draft_ht = FALSE;
 #define WLAN_IGNORE_PROT_W_IV   2
 static gint wlan_ignore_prot = WLAN_IGNORE_PROT_NO;
 
+/* The Key MIC len has been set by the user */
+static guint wlan_key_mic_len = 0;
+
 /* Table for reassembly of fragments. */
 static reassembly_table wlan_reassembly_table;
 
@@ -170,22 +161,22 @@ uat_wep_key_record_update_cb(void* r, char** err)
     dk_type = dk->type;
     free_key_string(dk);
     switch (dk_type) {
-      case AIRPDCAP_KEY_TYPE_WEP:
-      case AIRPDCAP_KEY_TYPE_WEP_40:
-      case AIRPDCAP_KEY_TYPE_WEP_104:
-        if (rec->key != AIRPDCAP_KEY_TYPE_WEP) {
+      case DOT11DECRYPT_KEY_TYPE_WEP:
+      case DOT11DECRYPT_KEY_TYPE_WEP_40:
+      case DOT11DECRYPT_KEY_TYPE_WEP_104:
+        if (rec->key != DOT11DECRYPT_KEY_TYPE_WEP) {
           *err = g_strdup("Invalid key format");
           return FALSE;
         }
         break;
-      case AIRPDCAP_KEY_TYPE_WPA_PWD:
-        if (rec->key != AIRPDCAP_KEY_TYPE_WPA_PWD) {
+      case DOT11DECRYPT_KEY_TYPE_WPA_PWD:
+        if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PWD) {
           *err = g_strdup("Invalid key format");
           return FALSE;
         }
         break;
-      case AIRPDCAP_KEY_TYPE_WPA_PSK:
-        if (rec->key != AIRPDCAP_KEY_TYPE_WPA_PSK) {
+      case DOT11DECRYPT_KEY_TYPE_WPA_PSK:
+        if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PSK) {
           *err = g_strdup("Invalid key format");
           return FALSE;
         }
@@ -220,7 +211,7 @@ ieee_80211_add_tagged_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo,
                                   proto_tree *tree, int tagged_parameters_len, int ftype,
                                   association_sanity_check_t *association_sanity_check);
 
-static tvbuff_t *try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint32 len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PAIRPDCAP_KEY_ITEM used_key);
+static tvbuff_t *try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint32 len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PDOT11DECRYPT_KEY_ITEM used_key);
 
 static int weak_iv(guchar *iv);
 
@@ -240,6 +231,7 @@ typedef struct mimo_control
 /* ************************************************************************* */
 #define SHORT_STR 256
 #define IS_DMG_KEY 1
+#define IS_AP_KEY 2
 #define IS_CTRL_GRANT_OR_GRANT_ACK_KEY 2
 /* ************************************************************************* */
 /*  Define some very useful macros that are used to analyze frame types etc. */
@@ -285,6 +277,7 @@ typedef struct mimo_control
  * 802.11-2012 and 802.11ac-2013 8.2.4.6, 32 bits.
  */
 #define HTC_VHT              0x00000001
+#define HTC_HE               0x00000002
 #define HTC_MRQ              0x00000004
 #define HTC_UNSOLICITED_MFB  0x20000000
 
@@ -498,7 +491,7 @@ typedef struct mimo_control
 #define TAG_MCCAOP_ADVERTISEMENT_OV  174
 #define TAG_QUIET_PERIOD_REQ         175  /* IEEE Std 802.11ad */
 #define TAG_QUIET_PERIOD_RES         177  /* IEEE Std 802.11ad */
-#define TAG_ECPAC_POLICY             182  /* IEEE Std 802.11ad */
+#define TAG_ECAPC_POLICY             182  /* IEEE Std 802.11ad */
 #define TAG_CLUSTER_TIME_OFFSET      183  /* IEEE Std 802.11ad */
 #define TAG_ANTENNA_SECTOR_ID        190  /* IEEE Std 802.11ad */
 #define TAG_VHT_CAPABILITY           191  /* IEEE Std 802.11ac/D3.1 */
@@ -666,7 +659,7 @@ static const value_string tag_num_vals[] = {
   { TAG_MCCAOP_ADVERTISEMENT_OV,              "MCCAOP Advertisement Overview" },
   { TAG_QUIET_PERIOD_REQ,                     "Quiet Period Request" },
   { TAG_QUIET_PERIOD_RES,                     "Quiet Period Response" },
-  { TAG_ECPAC_POLICY,                         "ECPAC Policy" },
+  { TAG_ECAPC_POLICY,                         "ECAPC Policy" },
   { TAG_CLUSTER_TIME_OFFSET,                  "Cluster Time Offset" },
   { TAG_ANTENNA_SECTOR_ID,                    "Antenna Sector ID" },
   { TAG_VHT_CAPABILITY,                       "VHT Capabilities" },
@@ -697,6 +690,17 @@ static value_string_ext tag_num_vals_ext = VALUE_STRING_EXT_INIT(tag_num_vals);
 #define ETAG_FILS_NONCE                13
 #define ETAG_FUTURE_CHANNEL_GUIDANCE   14
 
+/* 802.11AX defined tags */
+#define ETAG_HE_CAPABILITIES                   35
+#define ETAG_HE_OPERATION                      36
+#define ETAG_UORA_PARAMETER_SET                37
+#define ETAG_MU_EDCA_PARAMETER_SET             38
+#define ETAG_SPATIAL_REUSE_PARAMETER_SET       39
+#define ETAG_NDP_FEEDBACK_REPORT_PARAMETER_SET 41
+#define ETAG_BSS_COLOR_CHANGE_ANNOUNCEMENT     42
+#define ETAG_QUIET_TIME_PERIOD_SETUP           43
+#define ETAG_ESS_REPORT                        44
+
 static const value_string tag_num_vals_eid_ext[] = {
   { ETAG_ASSOC_DELAY_INFO,                    "Association Delay Info" },
   { ETAG_FILS_REQ_PARAMS,                     "FILS Request Parameters" },
@@ -712,14 +716,26 @@ static const value_string tag_num_vals_eid_ext[] = {
   { ETAG_FILS_PUBLIC_KEY,                     "FILS Public Key" },
   { ETAG_FILS_NONCE,                          "FILS Nonce" },
   { ETAG_FUTURE_CHANNEL_GUIDANCE,             "Future Channel Guidance" },
+  { ETAG_HE_CAPABILITIES,                     "HE Capabilities (IEEE Std 802.11ax/D2.0)" },
+  { ETAG_HE_OPERATION,                        "HE Operation (IEEE Std 802.11ax/D2.0)" },
+  { ETAG_UORA_PARAMETER_SET,                  "UORA Parameter Set" },
+  { ETAG_MU_EDCA_PARAMETER_SET,               "MU EDCA Parameter Set" },
+  { ETAG_SPATIAL_REUSE_PARAMETER_SET,         "Spatial Reuse Parameter Set" },
+  { ETAG_NDP_FEEDBACK_REPORT_PARAMETER_SET,   "NDP Feedback Report Parameter Set" },
+  { ETAG_BSS_COLOR_CHANGE_ANNOUNCEMENT,       "BSS Color Change Announcement" },
+  { ETAG_QUIET_TIME_PERIOD_SETUP,             "Quiet Time Period Setup" },
+  { ETAG_ESS_REPORT,                          "ESS Report" },
   { 0, NULL }
 };
 static value_string_ext tag_num_vals_eid_ext_ext = VALUE_STRING_EXT_INIT(tag_num_vals_eid_ext);
 
 static const value_string wfa_subtype_vals[] = {
+  { WFA_SUBTYPE_SUBSCRIPTION_REMEDIATION, "Subscription Remediation" },
+  { WFA_SUBTYPE_DEAUTHENTICATION_IMMINENT, "Deauthentication Imminent" },
   { WFA_SUBTYPE_P2P, "P2P" },
   { WFA_SUBTYPE_HS20_INDICATION, "Hotspot 2.0 Indication" },
   { WFA_SUBTYPE_HS20_ANQP, "Hotspot 2.0 ANQP" },
+  { WFA_SUBTYPE_OSEN, "OSU Server-only l2 Encryption Network" },
   { WFA_SUBTYPE_DPP, "Device Provisioning Protocol" },
   { WFA_SUBTYPE_IEEE1905_MULTI_AP, "IEEE1905 Multi-AP" },
   { 0, NULL }
@@ -957,6 +973,10 @@ static const value_string ieee80211_status_code[] = {
   { 101, "The request failed due to exceeded MAF limit" },
   { 102, "The request failed due to exceeded MCCA track limit" },
   { 103, "Association denied because the information in the Spectrum Management field is unacceptable" },
+  { 104, "Association denied because the requesting STA does not support VHT features" },
+  { 105, "Enablement denied" },
+  { 106, "Enablement denied due to restriction from an authorized GDB" },
+  { 107, "Authorization deenabled" },
   { 0,    NULL}
 };
 static value_string_ext ieee80211_status_code_ext = VALUE_STRING_EXT_INIT(ieee80211_status_code);
@@ -1005,6 +1025,7 @@ static const value_string frame_type_subtype_vals[] = {
   {MGT_ACTION_NO_ACK,         "Action No Ack"},
   {MGT_ARUBA_WLAN,            "Aruba Management"},
 
+  {CTRL_TRIGGER,              "Trigger"},
   {CTRL_BEAMFORM_RPT_POLL,    "Beamforming Report Poll"},
   {CTRL_VHT_NDP_ANNC,         "VHT NDP Announcement"},
   {CTRL_CONTROL_WRAPPER,      "Control Wrapper"},
@@ -1119,6 +1140,8 @@ static value_string_ext aruba_mgt_typevals_ext = VALUE_STRING_EXT_INIT(aruba_mgt
 #define CAT_ROBUST_AV_STREAMING   19
 #define CAT_UNPROTECTED_DMG       20
 #define CAT_VHT                   21
+#define CAT_HE                    30
+#define CAT_PROTECTED_HE          31
 #define CAT_VENDOR_SPECIFIC_PROTECTED 126
 #define CAT_VENDOR_SPECIFIC     127
 
@@ -1986,6 +2009,8 @@ static const value_string category_codes[] = {
   {CAT_ROBUST_AV_STREAMING,              "Robust AV Streaming"},
   {CAT_UNPROTECTED_DMG,                  "Unprotected DMG"},
   {CAT_VHT,                              "VHT"},
+  {CAT_HE,                               "HE"},
+  {CAT_PROTECTED_HE,                     "Protected HE"},
   {CAT_VENDOR_SPECIFIC_PROTECTED,        "Vendor-specific Protected"},
   {CAT_VENDOR_SPECIFIC,                  "Vendor Specific"},
 
@@ -2033,6 +2058,8 @@ static value_string_ext category_codes_ext = VALUE_STRING_EXT_INIT(category_code
 #define NR_SUB_ID_HT_MULTIPLE_BSSID        71
 #define NR_SUB_ID_VHT_CAPABILITIES         191
 #define NR_SUB_ID_VHT_OPERATION            192
+#define NR_SUB_ID_HE_CAPABILITIES          193
+#define NR_SUB_ID_HE_OPERATION             194
 
 #define NR_SUB_ID_VENDOR_SPECIFIC          221
 
@@ -2052,6 +2079,8 @@ static const value_string ieee80211_neighbor_report_subelement_id_vals[] = {
   {NR_SUB_ID_HT_MULTIPLE_BSSID, "Multiple BSSID"},
   {NR_SUB_ID_VHT_CAPABILITIES, "VHT Capabilities"},
   {NR_SUB_ID_VHT_OPERATION, "VHT Operation"},
+  {NR_SUB_ID_HE_CAPABILITIES, "HE Capabilities"},
+  {NR_SUB_ID_HE_OPERATION, "HE Operation"},
   {NR_SUB_ID_VENDOR_SPECIFIC, "Vendor Specific"},
   {0, NULL}
 };
@@ -2235,22 +2264,6 @@ static const true_false_string ieee80211_block_ack_control_ack_policy_flag = {
     "Immediate Acknowledgement Required"
 };
 
-static const value_string ieee80211_block_ack_request_type_flags[] = {
-  {0x00, "Basic Block Ack Request"},
-  {0x01, "Reserved"},
-  {0x02, "Compressed Block Ack Request"},
-  {0x03, "Multi-TID Block Ack Request"},
-  {0x00, NULL}
-};
-
-static const value_string ieee80211_block_ack_type_flags[] = {
-  {0x00, "Basic Block Ack"},
-  {0x01, "Reserved"},
-  {0x02, "Compressed Block"},
-  {0x03, "Multi-TID Block"},
-  {0x00, NULL}
-};
-
 static const value_string ft_action_codes[] = {
   {FT_ACTION_REQUEST, "FT Request"},
   {FT_ACTION_RESPONSE, "FT Response"},
@@ -2615,7 +2628,7 @@ static const value_string ht_info_secondary_channel_offset_flags[] = {
   {0x00, NULL}
 };
 
-static const true_false_string ht_info_channel_width_flag = {
+static const true_false_string ht_info_channel_sta_width_flag = {
   "Channel of any width supported",
   "20 MHz channel width only"
 };
@@ -2625,28 +2638,11 @@ static const true_false_string ht_info_rifs_mode_flag = {
   "Prohibited"
 };
 
-static const true_false_string ht_info_psmp_stas_only_flag = {
-  "Association requests are accepted from only PSMP capable STA",
-  "Association requests are accepted regardless of PSMP capability"
-};
-
-static const value_string ht_info_service_interval_granularity_flags[] = {
-  {0x00, "5 ms"},
-  {0x01, "10 ms"},
-  {0x02, "15 ms"},
-  {0x03, "20 ms"},
-  {0x04, "25 ms"},
-  {0x05, "30 ms"},
-  {0x06, "35 ms"},
-  {0x07, "40 ms"},
-  {0x00, NULL}
-};
-
-static const value_string ht_info_operating_mode_flags[] = {
-  {0x00, "All STAs are - 20/40 MHz HT or in a 20/40 MHz BSS or are 20 MHz HT in a 20 MHz BSS"},
+static const value_string ht_info_operating_protection_mode_flags[] = {
+  {0x00, "No protection mode"},
   {0x01, "HT non-member protection mode"},
-  {0x02, "Only HT STAs in the BSS, however, there exists at least one 20 MHz STA"},
-  {0x03, "HT mixed mode"},
+  {0x02, "20 MHz protection mode"},
+  {0x03, "non-HT mixed mode"},
   {0x00, NULL}
 };
 
@@ -2655,11 +2651,6 @@ static const true_false_string ht_info_non_greenfield_sta_present_flag = {
   "All associated STAs are greenfield capable"
 };
 
-static const true_false_string ht_info_transmit_burst_limit_flag = {
-  "2.4 GHz - 6.16 ms | All other bands - 3.08 ms",
-  "No limit"
-};
-
 static const true_false_string ht_info_obss_non_ht_stas_present_flag = {
   "Use of protection for non-HT STAs by overlapping BSSs is needed",
   "Use of protection for non-HT STAs by overlapping BSSs is not needed"
@@ -2670,13 +2661,8 @@ static const true_false_string ht_info_dual_beacon_flag = {
   "No second beacon is transmitted"
 };
 
-static const true_false_string ht_info_dual_cts_protection_flag = {
-  "Required",
-  "Not required"
-};
-
 static const true_false_string ht_info_secondary_beacon_flag = {
-  "Secondary beacon",
+  "STBC beacon",
   "Primary beacon"
 };
 
@@ -2794,9 +2780,9 @@ static const value_string service_interval_granularity_vals[] = {
 };
 
 static const value_string wep_type_vals[] = {
-  { AIRPDCAP_KEY_TYPE_WEP, STRING_KEY_TYPE_WEP },
-  { AIRPDCAP_KEY_TYPE_WPA_PWD, STRING_KEY_TYPE_WPA_PWD },
-  { AIRPDCAP_KEY_TYPE_WPA_PSK, STRING_KEY_TYPE_WPA_PSK },
+  { DOT11DECRYPT_KEY_TYPE_WEP, STRING_KEY_TYPE_WEP },
+  { DOT11DECRYPT_KEY_TYPE_WPA_PWD, STRING_KEY_TYPE_WPA_PWD },
+  { DOT11DECRYPT_KEY_TYPE_WPA_PSK, STRING_KEY_TYPE_WPA_PSK },
   { 0x00, NULL }
 };
 
@@ -2829,9 +2815,46 @@ static const value_string band_id[] = {
   {0,   NULL}
 };
 
+static const value_string extended_sc_mcs[] = {
+  {0x0, "None"},
+  {0x1, "MCS 9.1"},
+  {0x2, "MCS 12.1"},
+  {0x3, "MCS 12.2"},
+  {0x4, "MCS 12.3"},
+  {0x5, "MCS 12.4"},
+  {0x6, "MCS 12.5"},
+  {0x7, "MCS 12.6"},
+  {0, NULL}
+};
+
+static const range_string max_basic_sf_amsdu[] = {
+  {0, 0, "No Limit"},
+  {1, 1, "4 Basic subframes"},
+  {2, 2, "8 Basic subframes"},
+  {3, 3, "16 Basic subframes"},
+  {4, 4, "32 Basic subframes"},
+  {5, 5, "64 Basic subframes"},
+  {6, 6, "128 Basic subframes"},
+  {7, 7, "256 Basic subframes"},
+  {8, 255, "reserved"},
+  {0, 0, NULL}
+};
+
+static const range_string max_short_sf_amsdu[] = {
+  {0, 0, "No Limit"},
+  {1, 1, "32 Short subframes"},
+  {2, 2, "64 Short subframes"},
+  {3, 3, "128 Short subframes"},
+  {4, 4, "256 Short subframes"},
+  {5, 5, "512 Short subframes"},
+  {6, 6, "1024 Short subframes"},
+  {7, 255, "reserved"},
+  {0, 0, NULL}
+};
+
 static const value_string allocation_type[] = {
   {0x0, "SP Allocation"},
-  {0x4, "CBAP allocation"},
+  {0x1, "CBAP allocation"},
   {0,   NULL}
 };
 
@@ -2901,7 +2924,7 @@ static const value_string ff_vht_mimo_cntrl_channel_width_vals[] = {
   {0x00, "20 MHz"},
   {0x01, "40 MHz"},
   {0x02, "80 MHz"},
-  {0x03, "160 MHz / 80+80 Mhz"},
+  {0x03, "160 MHz / 80+80 MHz"},
   {0, NULL}
 };
 
@@ -2919,7 +2942,6 @@ static const value_string ff_vht_mimo_cntrl_feedback_vals[] = {
   {0, NULL}
 };
 
-
 static int proto_wlan = -1;
 static int proto_centrino = -1;
 static int proto_aggregate = -1;
@@ -3004,12 +3026,107 @@ static int hf_ieee80211_qos_txop_dur_req = -1;
 static int hf_ieee80211_qos_queue_size = -1;
 
 /* ************************************************************************* */
-/*                Header values for HT control field (+HTC)                  */
+/*                Header values for HT control field (+HTC) and HE control   */
 /* ************************************************************************* */
 /* 802.11-2012 and 802.11ac-2013 8.2.4.6 */
 static int hf_ieee80211_htc = -1;
 static int hf_ieee80211_htc_vht = -1;
-static int hf_ieee80211_htc_lac = -1;
+static int hf_ieee80211_htc_he = -1;
+static int hf_ieee80211_htc_he_ctrl_id = -1;
+static int hf_ieee80211_he_umrs_he_tb_ppdu_len = -1;
+static int hf_ieee80211_he_umrs_ru_allocation = -1;
+static int hf_ieee80211_he_dl_tx_power = -1;
+static int hf_ieee80211_he_ul_target_rssi = -1;
+static int hf_ieee80211_he_ul_mcs = -1;
+static int hf_ieee80211_he_ul_reserved = -1;
+static int hf_ieee80211_he_om_rx_nss = -1;
+static int hf_ieee80211_he_om_channel_width = -1;
+static int hf_ieee80211_he_om_ul_mu_disable = -1;
+static int hf_ieee80211_he_om_tx_nsts = -1;
+static int hf_ieee80211_he_om_reserved = -1;
+static int hf_ieee80211_he_hla_unsolicited_mfb = -1;
+static int hf_ieee80211_he_hla_mrq = -1;
+static int hf_ieee80211_he_hla_nss = -1;
+static int hf_ieee80211_he_hla_he_mcs = -1;
+static int hf_ieee80211_he_hla_dcm = -1;
+static int hf_ieee80211_he_hla_ru = -1;
+static int hf_ieee80211_he_hla_bw = -1;
+static int hf_ieee80211_he_hla_msi_ppdu_type = -1;
+static int hf_ieee80211_he_hla_tx_bf = -1;
+static int hf_ieee80211_he_hla_reserved = -1;
+static int hf_ieee80211_he_bsr_aci_bitmap = -1;
+static int hf_ieee80211_he_bsr_delta_tid = -1;
+static int hf_ieee80211_he_bsr_aci_high = -1;
+static int hf_ieee80211_he_bsr_scaling_factor = -1;
+static int hf_ieee80211_he_bsr_queue_size_high = -1;
+static int hf_ieee80211_he_bsr_queue_size_all = -1;
+static int hf_ieee80211_he_uph_ul_power_headroom = -1;
+static int hf_ieee80211_he_uph_ul_min_transmit_power_flag = -1;
+static int hf_ieee80211_he_uph_reserved = -1;
+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_sr_ppdu_indic = -1;
+static int hf_ieee80211_he_cci_reserved = -1;
+static int hf_ieee80211_he_btc_avail_chan = -1;
+static int hf_ieee80211_he_btc_reserved = -1;
+static int hf_ieee80211_he_trigger_common_info = -1;
+static int hf_ieee80211_he_trigger_type = -1;
+static int hf_ieee80211_he_trigger_length = -1;
+static int hf_ieee80211_he_trigger_cascade_indication = -1;
+static int hf_ieee80211_he_trigger_cs_required = -1;
+static int hf_ieee80211_he_trigger_bw = -1;
+static int hf_ieee80211_he_trigger_gi_and_ltf_type = -1;
+static int hf_ieee80211_he_trigger_mu_mimo_ltf_mode = -1;
+static int hf_ieee80211_he_trigger_num_he_ltf_syms_etc = -1;
+static int hf_ieee80211_he_trigger_stbc = -1;
+static int hf_ieee80211_he_trigger_ldpc_extra_sym_seg = -1;
+static int hf_ieee80211_he_trigger_ap_tx_power = -1;
+static int hf_ieee80211_he_trigger_packet_extension = -1;
+static int hf_ieee80211_he_trigger_spatial_reuse = -1;
+static int hf_ieee80211_he_trigger_doppler = -1;
+static int hf_ieee80211_he_trigger_he_sig_a_reserved = -1;
+static int hf_ieee80211_he_trigger_reserved = -1;
+static int hf_ieee80211_he_trigger_bar_ctrl = -1;
+static int hf_ieee80211_he_trigger_bar_ctrl_ba_ack_policy = -1;
+static int hf_ieee80211_he_trigger_bar_ctrl_ba_type = -1;
+static int hf_ieee80211_he_trigger_bar_ctrl_reserved = -1;
+static int hf_ieee80211_he_trigger_bar_ctrl_tid_info = -1;
+static int hf_ieee80211_he_trigger_bar_info = -1;
+static int hf_ieee80211_he_trigger_bar_info_blk_ack_seq_ctrl = -1;
+static int hf_ieee80211_he_trigger_mpdu_mu_spacing = -1;
+static int hf_ieee80211_he_trigger_tid_aggregation_limit = -1;
+static int hf_ieee80211_he_trigger_dependent_reserved1 = -1;
+static int hf_ieee80211_he_trigger_preferred_ac = -1;
+static int hf_ieee80211_he_trigger_user_info = -1;
+static int hf_ieee80211_he_trigger_starting_aid = -1;
+static int hf_ieee80211_he_trigger_dependent_reserved2 = -1;
+static int hf_ieee80211_he_trigger_feedback_type = -1;
+static int hf_ieee80211_he_trigger_dependent_reserved3 = -1;
+static int hf_ieee80211_he_trigger_nfrp_target_rssi = -1;
+static int hf_ieee80211_he_trigger_multiplexing_flag = -1;
+static int hf_ieee80211_he_trigger_dep_nfrp_user_info = -1;
+static int hf_ieee80211_he_trigger_feedback_seg_retrans_bm = -1;
+static int hf_ieee80211_he_trigger_aid12 = -1;
+static int hf_ieee80211_he_trigger_ru_allocation = -1;
+static int hf_ieee80211_he_trigger_coding_type = -1;
+static int hf_ieee80211_he_trigger_mcs = -1;
+static int hf_ieee80211_he_trigger_dcm = -1;
+static int hf_ieee80211_he_trigger_ss_allocation = -1;
+static int hf_ieee80211_he_trigger_target_rssi = -1;
+static int hf_ieee80211_he_trigger_user_reserved = -1;
+static int hf_ieee80211_he_trigger_dep_basic_user_info = -1;
+static int hf_ieee80211_he_ndp_annc_token = -1;
+static int hf_ieee80211_he_ndp_annc_sta = -1;
+static int hf_he_ndp_sounding_dialog_token_number = -1;
+static int hf_he_ndp_annc_he_subfield = -1;
+static int hf_he_ndp_annc_reserved = -1;
+static int hf_he_ndp_annc_aid11 = -1;
+static int hf_he_ndp_annc_partial_bw_info = -1;
+static int hf_he_ndp_annc_feedback_type_and_ng = -1;
+static int hf_he_ndp_annc_disambiguation = -1;
+static int hf_he_ndp_annc_codebook_size = -1;
+static int hf_he_ndp_annc_nc = -1;
+static int hf_ieee80211_htc_ht_lac = -1;
 static int hf_ieee80211_htc_lac_trq = -1;
 static int hf_ieee80211_htc_lac_mai_aseli = -1;
 static int hf_ieee80211_htc_lac_mai_mrq = -1;
@@ -3146,12 +3263,10 @@ static int hf_ieee80211_3gpp_gc_gud = -1;
 static int hf_ieee80211_3gpp_gc_udhl = -1;
 static int hf_ieee80211_3gpp_gc_iei = -1;
 static int hf_ieee80211_3gpp_gc_num_plmns = -1;
+static int hf_ieee80211_3gpp_gc_plmn = -1;
 static int hf_ieee80211_3gpp_gc_plmn_len = -1;
 static int hf_ieee80211_ff_anqp_domain_name_len = -1;
 static int hf_ieee80211_ff_anqp_domain_name = -1;
-static int hf_ieee80211_ff_anqp_venue_url_len = -1;
-static int hf_ieee80211_ff_anqp_venue_url_number = -1;
-static int hf_ieee80211_ff_anqp_venue_url = -1;
 static int hf_ieee80211_ff_tdls_action_code = -1;
 static int hf_ieee80211_ff_target_channel = -1;
 static int hf_ieee80211_ff_operating_class = -1;
@@ -3564,24 +3679,23 @@ static int hf_ieee80211_fc_analysis_pmk = -1;
 static int hf_ieee80211_fc_analysis_tk = -1;
 static int hf_ieee80211_fc_analysis_gtk = -1;
 
-static int hf_ieee80211_block_ack_request_control = -1;
 static int hf_ieee80211_block_ack_control = -1;
 static int hf_ieee80211_block_ack_control_ack_policy = -1;
-static int hf_ieee80211_block_ack_control_multi_tid = -1;
-static int hf_ieee80211_block_ack_control_compressed_bitmap = -1;
+static int hf_ieee80211_block_ack_control_type = -1;
 static int hf_ieee80211_block_ack_control_reserved = -1;
+static int hf_ieee80211_block_ack_control_tid_info = -1;
+static int hf_ieee80211_block_ack_multi_sta_aid11 = -1;
+static int hf_ieee80211_block_ack_multi_sta_ack_type = -1;
+static int hf_ieee80211_block_ack_multi_sta_tid = -1;
+static int hf_ieee80211_block_ack_multi_sta_aid_tid = -1;
+static int hf_ieee80211_block_ack_multi_sta_reserved = -1;
+static int hf_ieee80211_block_ack_multi_sta_ra = -1;
 
-static int hf_ieee80211_block_ack_control_basic_tid_info = -1;
-static int hf_ieee80211_block_ack_control_compressed_tid_info = -1;
-static int hf_ieee80211_block_ack_control_multi_tid_info = -1;
-
-static int hf_ieee80211_block_ack_multi_tid_info = -1;
-static int hf_ieee80211_block_ack_request_type = -1;
 static int hf_ieee80211_block_ack_multi_tid_reserved = -1;
 static int hf_ieee80211_block_ack_multi_tid_value = -1;
-static int hf_ieee80211_block_ack_type = -1;
 static int hf_ieee80211_block_ack_bitmap = -1;
 static int hf_ieee80211_block_ack_bitmap_missing_frame = -1;
+static int hf_ieee80211_block_ack_gcr_addr = -1;
 
 static int hf_ieee80211_tag_measure_request_measurement_mode = -1;
 static int hf_ieee80211_tag_measure_request_bssid = -1;
@@ -3703,27 +3817,27 @@ static int hf_ieee80211_ht_info_primary_channel = -1;
 
 static int hf_ieee80211_ht_info_delimiter1 = -1;
 static int hf_ieee80211_ht_info_secondary_channel_offset = -1;
-static int hf_ieee80211_ht_info_channel_width = -1;
+static int hf_ieee80211_ht_info_sta_channel_width = -1;
 static int hf_ieee80211_ht_info_rifs_mode = -1;
-static int hf_ieee80211_ht_info_psmp_stas_only = -1;
-static int hf_ieee80211_ht_info_service_interval_granularity = -1;
+static int hf_ieee80211_ht_info_reserved_b4_b7 = -1;
 
 static int hf_ieee80211_ht_info_delimiter2 = -1;
-static int hf_ieee80211_ht_info_operating_mode = -1;
+static int hf_ieee80211_ht_info_protection = -1;
 static int hf_ieee80211_ht_info_non_greenfield_sta_present = -1;
-static int hf_ieee80211_ht_info_transmit_burst_limit = -1;
+static int hf_ieee80211_ht_info_reserved_b11 = -1;
 static int hf_ieee80211_ht_info_obss_non_ht_stas_present = -1;
-static int hf_ieee80211_ht_info_reserved_1 = -1;
+static int hf_ieee80211_ht_info_channel_center_freq_seg_2 = -1;
+static int hf_ieee80211_ht_info_reserved_b21_b23 = -1;
 
 static int hf_ieee80211_ht_info_delimiter3 = -1;
-static int hf_ieee80211_ht_info_reserved_2 = -1;
+static int hf_ieee80211_ht_info_reserved_b24_b29 = -1;
 static int hf_ieee80211_ht_info_dual_beacon = -1;
 static int hf_ieee80211_ht_info_dual_cts_protection = -1;
 static int hf_ieee80211_ht_info_secondary_beacon = -1;
 static int hf_ieee80211_ht_info_lsig_txop_protection_full_support = -1;
 static int hf_ieee80211_ht_info_pco_active = -1;
 static int hf_ieee80211_ht_info_pco_phase = -1;
-static int hf_ieee80211_ht_info_reserved_3 = -1;
+static int hf_ieee80211_ht_info_reserved_b36_b39 = -1;
 /*** End: 802.11n D1.10 - HT Information IE  ***/
 
 static int hf_ieee80211_tag_ap_channel_report_operating_class = -1;
@@ -3998,6 +4112,15 @@ static int hf_ieee80211_tag_extended_capabilities_b69_2 = -1;
 static int hf_ieee80211_tag_extended_capabilities_b70_2 = -1;
 static int hf_ieee80211_tag_extended_capabilities_b71_2 = -1;
 
+static int hf_ieee80211_tag_extended_capabilities_b72 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b73 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b74 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b75 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b76 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b77 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b78 = -1;
+static int hf_ieee80211_tag_extended_capabilities_b79 = -1;
+
 static int hf_ieee80211_tag_cisco_ccx1_unknown = -1;
 static int hf_ieee80211_tag_cisco_ccx1_name = -1;
 static int hf_ieee80211_tag_cisco_ccx1_clients = -1;
@@ -4037,6 +4160,10 @@ static int hf_ieee80211_vht_mcsset_rx_max_mcs_for_6_ss = -1;
 static int hf_ieee80211_vht_mcsset_rx_max_mcs_for_7_ss = -1;
 static int hf_ieee80211_vht_mcsset_rx_max_mcs_for_8_ss = -1;
 
+static int hf_ieee80211_vht_mcsset_max_nsts_total = -1;
+static int hf_ieee80211_vht_mcsset_ext_nss_bw_cap = -1;
+static int hf_ieee80211_vht_mcsset_reserved = -1;
+
 static int hf_ieee80211_vht_mcsset_rx_highest_long_gi = -1;
 
 static int hf_ieee80211_vht_mcsset_tx_mcs_map = -1;
@@ -4078,8 +4205,8 @@ static int hf_ieee80211_beamform_feedback_seg_retrans_bitmap = -1;
 
 static int hf_ieee80211_vht_ndp_annc_token = -1;
 static int hf_ieee80211_vht_ndp_annc_token_number = -1;
+static int hf_ieee80211_vht_ndp_annc_he_subfield = -1;
 static int hf_ieee80211_vht_ndp_annc_token_reserved = -1;
-static int hf_ieee80211_vht_ndp_annc_sta_info = -1;
 static int hf_ieee80211_vht_ndp_annc_sta_info_aid12 = -1;
 static int hf_ieee80211_vht_ndp_annc_sta_info_feedback_type = -1;
 static int hf_ieee80211_vht_ndp_annc_sta_info_nc_index = -1;
@@ -4127,6 +4254,21 @@ static int hf_ieee80211_vht_mu_Exclusive_beamforming_delta_snr = -1;
 static int hf_ieee80211_vht_compressed_beamforming_phi_angle = -1;
 static int hf_ieee80211_vht_compressed_beamforming_psi_angle = -1;
 
+static int hf_ieee80211_ff_he_action = -1;
+static int hf_he_mimo_control_nc_index = -1;
+static int hf_he_mimo_control_nr_index = -1;
+static int hf_he_mimo_control_bw = -1;
+static int hf_he_mimo_control_grouping = -1;
+static int hf_he_mimo_control_codebook_info = -1;
+static int hf_he_mimo_control_feedback_type = -1;
+static int hf_he_mimo_control_remaining_feedback_segs = -1;
+static int hf_he_mimo_control_first_feedback_seg = -1;
+static int hf_he_mimo_control_ru_start_index = -1;
+static int hf_he_mimo_control_ru_end_index = -1;
+static int hf_he_mimo_control_sounding_dialog_token_num = -1;
+static int hf_he_mimo_control_reserved = -1;
+static int hf_ieee80211_he_mimo_control_field = -1;
+
 static int hf_ieee80211_tag_neighbor_report_bssid = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info_reachability = -1;
@@ -4143,6 +4285,8 @@ static int hf_ieee80211_tag_neighbor_report_bssid_info_mobility_domain = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info_high_throughput = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info_very_high_throughput = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info_ftm = -1;
+static int hf_ieee80211_tag_neighbor_report_bssid_info_high_efficiency = -1;
+static int hf_ieee80211_tag_neighbor_report_bssid_info_er_bss = -1;
 static int hf_ieee80211_tag_neighbor_report_bssid_info_reserved = -1;
 static int hf_ieee80211_tag_neighbor_report_ope_class = -1;
 static int hf_ieee80211_tag_neighbor_report_channel_number = -1;
@@ -4206,6 +4350,33 @@ static int hf_ieee80211_tag_obss_satpc = -1;
 static int hf_ieee80211_tag_obss_wctdf = -1;
 static int hf_ieee80211_tag_obss_sat = -1;
 
+/* IEEE Std 802.11-2012: 8.4.2.25.1 */
+static int hf_group_data_cipher_suite_oui = -1;
+static int hf_group_data_cipher_suite_type = -1;
+static int hf_osen_pairwise_cipher_suite_oui = -1;
+static int hf_osen_pairwise_cipher_suite_type = -1;
+static int hf_osen_pcs_count = -1;
+static int hf_osen_akm_count = -1;
+static int hf_osen_akm_cipher_suite_oui = -1;
+static int hf_osen_akm_cipher_suite_type = -1;
+static int hf_osen_rsn_cap_preauth = -1;
+static int hf_osen_rsn_cap_no_pairwise = -1;
+static int hf_osen_rsn_cap_ptksa_replay_counter = -1;
+static int hf_osen_rsn_cap_gtksa_replay_counter = -1;
+static int hf_osen_rsn_cap_mfpr = -1;
+static int hf_osen_rsn_cap_mfpc = -1;
+static int hf_osen_rsn_cap_jmr = -1;
+static int hf_osen_rsn_cap_peerkey = -1;
+static int hf_osen_rsn_spp_a_msdu_capable = -1;
+static int hf_osen_rsn_spp_a_msdu_required = -1;
+static int hf_osen_rsn_pbac = -1;
+static int hf_osen_extended_key_id_iaf = -1;
+static int hf_osen_reserved = -1;
+static int hf_osen_rsn_cap_flags = -1;
+static int hf_osen_pmkid_count = -1;
+static int hf_osen_pmkid = -1;
+static int hf_osen_group_management_cipher_suite_oui = -1;
+static int hf_osen_group_management_cipher_suite_type = -1;
 
 /*WAPI-Specification 7.3.2.25 : WAPI Parameter Set*/
 static int hf_ieee80211_tag_wapi_param_set_version = -1;
@@ -4265,6 +4436,9 @@ static int hf_ieee80211_tag_wnm_sleep_mode_action_type = -1;
 static int hf_ieee80211_tag_wnm_sleep_mode_response_status = -1;
 static int hf_ieee80211_tag_wnm_sleep_mode_interval = -1;
 
+static int hf_ieee80211_wnm_sub_elt_id = -1;
+static int hf_ieee80211_wnm_sub_elt_len = -1;
+
 /* IEEE Std 802.11v-2011 7.3.2.87 */
 static int hf_ieee80211_tag_time_zone = -1;
 
@@ -4465,6 +4639,11 @@ static int hf_ieee80211_vs_extreme_unknown = -1;
 static int hf_ieee80211_vs_extreme_ap_length = -1;
 static int hf_ieee80211_vs_extreme_ap_name = -1;
 
+static int hf_ieee80211_vs_aerohive_unknown = -1;
+static int hf_ieee80211_vs_aerohive_hostname_length = -1;
+static int hf_ieee80211_vs_aerohive_hostname = -1;
+static int hf_ieee80211_vs_aerohive_data = -1;
+
 static int hf_ieee80211_rsn_ie_pmkid = -1;
 static int hf_ieee80211_rsn_ie_unknown = -1;
 
@@ -4638,7 +4817,10 @@ static int hf_ieee80211_dpp_subtype = -1;
 static int hf_hs20_indication_dgaf_disabled = -1;
 static int hf_hs20_indication_pps_mo_id_present = -1;
 static int hf_hs20_indication_anqp_domain_id_present = -1;
+static int hf_hs20_reserved = -1;
 static int hf_hs20_indication_release_number = -1;
+static int hf_hs20_indication_pps_mo_id = -1;
+static int hf_hs20_indication_anqp_domain_id = -1;
 
 static int hf_hs20_anqp_subtype = -1;
 static int hf_hs20_anqp_reserved = -1;
@@ -4665,6 +4847,58 @@ static int hf_hs20_anqp_nai_hrq_encoding_type = -1;
 static int hf_hs20_anqp_nai_hrq_length = -1;
 static int hf_hs20_anqp_nai_hrq_realm_name = -1;
 static int hf_hs20_anqp_oper_class_indic = -1;
+static int hf_hs20_osu_friendly_names_len = -1;
+static int hf_hs20_osu_friendly_name_length = -1;
+static int hf_hs20_osu_friendly_name_language = -1;
+static int hf_hs20_osu_friendly_name_name = -1;
+static int hf_hs20_osu_server_uri_len = -1;
+static int hf_hs20_osu_server_uri = -1;
+static int hf_hs20_osu_method_list_len = -1;
+static int hf_hs20_osu_method_val = -1;
+static int hf_hs20_icons_avail_len = -1;
+static int hf_hs20_osu_providers_list_ssid_len = -1;
+static int hf_hs20_osu_providers_ssid = -1;
+static int hf_hs20_osu_providers_count = -1;
+static int hf_hs20_osu_prov_length = -1;
+static int hf_hs20_icon_request_filename = -1;
+static int hf_hs20_icon_binary_file_status = -1;
+static int hf_hs20_icon_type_length = -1;
+static int hf_hs20_icon_type = -1;
+static int hf_hs20_icon_binary_data_len = -1;
+static int hf_hs20_icon_binary_data = -1;
+static int hf_osu_icon_avail_width = -1;
+static int hf_osu_icon_avail_height = -1;
+static int hf_osu_icon_avail_lang_code = -1;
+static int hf_osu_icon_avail_icon_type_len = -1;
+static int hf_osu_icon_avail_icon_type = -1;
+static int hf_osu_icon_avail_filename_len = -1;
+static int hf_osu_icon_avail_filename = -1;
+static int hf_hs20_osu_nai_len = -1;
+static int hf_hs20_osu_nai = -1;
+static int hf_hs20_osu_service_desc_len = -1;
+static int hf_hs20_osu_service_desc_duple_len = -1;
+static int hf_hs20_osu_service_desc_lang = -1;
+static int hf_hs20_osu_service_desc = -1;
+static int hf_hs20_anqp_venue_url_length = -1;
+static int hf_hs20_anqp_venue_number = -1;
+static int hf_hs20_anqp_venue_url = -1;
+static int hf_hs20_anqp_advice_of_charge_length = -1;
+static int hf_hs20_anqp_advice_of_charge_type = -1;
+static int hf_hs20_anqp_aoc_nai_realm_encoding = -1;
+static int hf_hs20_anqp_aoc_nai_realm_len = -1;
+static int hf_hs20_anqp_aoc_nai_realm = -1;
+static int hf_hs20_anqp_aoc_plan_len = -1;
+static int hf_hs20_anqp_aoc_plan_lang = -1;
+static int hf_hs20_anqp_aoc_plan_curcy = -1;
+static int hf_hs20_anqp_aoc_plan_information = -1;
+
+static int hf_hs20_subscription_remediation_url_len = -1;
+static int hf_hs20_subscription_remediation_server_url = -1;
+static int hf_hs20_subscription_remediation_server_method = -1;
+static int hf_hs20_deauth_reason_code = -1;
+static int hf_hs20_reauth_delay = -1;
+static int hf_hs20_deauth_reason_url_len = -1;
+static int hf_hs20_deauth_imminent_reason_url = -1;
 
 /* IEEE Std 802.11ad */
 static int hf_ieee80211_block_ack_RBUFCAP = -1;
@@ -4843,6 +5077,13 @@ static int hf_ieee80211_tag_pcp_power_src = -1;
 static int hf_ieee80211_tag_pcp_decenter = -1;
 static int hf_ieee80211_tag_pcp_forwarding = -1;
 static int hf_ieee80211_tag_pcp_center = -1;
+static int hf_ieee80211_tag_sta_beam_track = -1;
+static int hf_ieee80211_tag_ext_sc_mcs_max_tx = -1;
+static int hf_ieee80211_tag_ext_sc_mcs_tx_code_7_8 = -1;
+static int hf_ieee80211_tag_ext_sc_mcs_max_rx = -1;
+static int hf_ieee80211_tag_ext_sc_mcs_rx_code_7_8 = -1;
+static int hf_ieee80211_tag_max_basic_sf_amsdu = -1;
+static int hf_ieee80211_tag_max_short_sf_amsdu = -1;
 static int hf_ieee80211_tag_PSRSI = -1;
 static int hf_ieee80211_tag_min_BHI_duration = -1;
 static int hf_ieee80211_tag_brdct_sta_info_dur = -1;
@@ -4936,6 +5177,8 @@ static int hf_ieee80211_tag_channel_measurement_feedback_sector_id = -1;
 static int hf_ieee80211_tag_channel_measurement_feedback_antenna_id = -1;
 static int hf_ieee80211_tag_awake_window = -1;
 static int hf_ieee80211_tag_addba_ext_no_frag = -1;
+static int hf_ieee80211_tag_addba_ext_he_fragmentation_operation = -1;
+static int hf_ieee80211_tag_addba_ext_reserved = -1;
 static int hf_ieee80211_tag_multi_band_ctrl_sta_role = -1;
 static int hf_ieee80211_tag_multi_band_ctrl_addr_present = -1;
 static int hf_ieee80211_tag_multi_band_ctrl_cipher_present = -1;
@@ -4964,6 +5207,17 @@ static int hf_ieee80211_tag_switching_stream_llt_type = -1;
 
 static int hf_ieee80211_mysterious_olpc_stuff = -1;
 
+static int hf_ieee80211_esp_access_category = -1;
+static int hf_ieee80211_esp_reserved = -1;
+static int hf_ieee80211_esp_data_format = -1;
+static int hf_ieee80211_esp_ba_windows_size = -1;
+static int hf_ieee80211_esp_est_air_time_frac = -1;
+static int hf_ieee80211_esp_data_ppdu_duration_target = -1;
+static int hf_ieee80211_estimated_service_params = -1;
+
+static int hf_ieee80211_fcg_new_channel_number = -1;
+static int hf_ieee80211_fcg_extra_info = -1;
+
 static int hf_ieee80211_ext_tag = -1;
 static int hf_ieee80211_ext_tag_number = -1;
 static int hf_ieee80211_ext_tag_length = -1;
@@ -4971,6 +5225,220 @@ static int hf_ieee80211_fils_session = -1;
 static int hf_ieee80211_fils_wrapped_data = -1;
 static int hf_ieee80211_fils_nonce = -1;
 
+/* ************************************************************************* */
+/*                              802.11AX fields                              */
+/* ************************************************************************* */
+static int hf_he_mac_capabilities = -1;
+static int hf_he_htc_he_support = -1;
+static int hf_he_twt_requester_support = -1;
+static int hf_he_twt_responder_support = -1;
+static int hf_he_fragmentation_support = -1;
+static int hf_he_max_number_fragmented_msdus = -1;
+static int hf_he_min_fragment_size = -1;
+static int hf_he_trigger_frame_mac_padding_dur = -1;
+static int hf_he_multi_tid_aggregation_support = -1;
+static int hf_he_he_link_adaptation_support = -1;
+static int hf_he_all_ack_support = -1;
+static int hf_he_umrs_support = -1;
+static int hf_he_bsr_support = -1;
+static int hf_he_broadcast_twt_support = -1;
+static int hf_he_32_bit_ba_bitmap_support = -1;
+static int hf_he_mu_cascading_support = -1;
+static int hf_he_ack_enabled_aggregation_support = -1;
+static int hf_he_group_addressed_multi_sta_blkack_support = -1;
+static int hf_he_om_control_support = -1;
+static int hf_he_ofdma_ra_support = -1;
+static int hf_he_max_a_mpdu_length_exponent = -1;
+static int hf_he_a_msdu_fragmentation_support = -1;
+static int hf_he_flexible_twt_schedule_support = -1;
+static int hf_he_rx_control_frame_to_multibss = -1;
+static int hf_he_bsrp_bqrp_a_mpdu_aggregation = -1;
+static int hf_he_qtp_support = -1;
+static int hf_he_bqr_support = -1;
+static int hf_he_sr_responder = -1;
+static int hf_he_ndp_feedback_report_support = -1;
+static int hf_he_ops_support = -1;
+static int hf_he_a_msdu_in_a_mpdu_support = -1;
+static int hf_he_reserved = -1;
+static int hf_he_reserved_bit_18 = -1;
+static int hf_he_reserved_bit_19 = -1;
+static int hf_he_reserved_bit_25 = -1;
+static int hf_he_reserved_bits_5_7 = -1;
+static int hf_he_reserved_bits_8_9 = -1;
+static int hf_he_reserved_bits_15_16 = -1;
+static int hf_he_phy_chan_width_set = -1;
+static int hf_he_40mhz_channel_2_4ghz = -1;
+static int hf_he_40_and_80_mhz_5ghz = -1;
+static int hf_he_160_mhz_5ghz = -1;
+static int hf_he_160_80_plus_80_mhz_5ghz = -1;
+static int hf_he_242_tone_rus_in_2_4ghz = -1;
+static int hf_he_242_tone_rus_in_5ghz = -1;
+static int hf_he_chan_width_reserved = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_rx_8_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_80_tx_8_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_rx_8_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_80p80_tx_8_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_rx_8_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_1_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_2_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_3_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_4_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_5_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_6_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_7_ss = -1;
+static int hf_he_mcs_max_he_mcs_160_tx_8_ss = -1;
+static int hf_he_rx_he_mcs_map_lte_80 = -1;
+static int hf_he_tx_he_mcs_map_lte_80 = -1;
+static int hf_he_rx_he_mcs_map_160 = -1;
+static int hf_he_tx_he_mcs_map_160 = -1;
+static int hf_he_rx_he_mcs_map_80_80 = -1;
+static int hf_he_tx_he_mcs_map_80_80 = -1;
+static int hf_he_ppe_thresholds_nss = -1;
+static int hf_he_ppe_thresholds_ru_index_bitmask = -1;
+static int hf_he_ppe_ppet16 = -1;
+static int hf_he_ppe_ppet8 = -1;
+static int hf_he_phy_dual_band_support = -1;
+static int hf_he_phy_cap_dual_band_support = -1;
+static int hf_he_phy_b8_to_b23 = -1;
+static int hf_he_phy_cap_punctured_preamble_rx = -1;
+static int hf_he_phy_cap_device_class = -1;
+static int hf_he_phy_cap_ldpc_coding_in_payload = -1;
+static int hf_he_phy_cap_he_su_ppdu_1x_he_ltf_08us = -1;
+static int hf_he_phy_cap_midamble_rx_max_nsts = -1;
+static int hf_he_phy_cap_ndp_with_4x_he_ltf_32us = -1;
+static int hf_he_phy_cap_stbc_tx_lt_80mhz = -1;
+static int hf_he_phy_cap_stbc_rx_lt_80mhz = -1;
+static int hf_he_phy_cap_doppler_tx = -1;
+static int hf_he_phy_cap_doppler_rx = -1;
+static int hf_he_phy_cap_full_bw_ul_mu_mimo = -1;
+static int hf_he_phy_cap_partial_bw_ul_mu_mimo = -1;
+static int hf_he_phy_b24_to_b39 = -1;
+static int hf_he_phy_cap_dcm_max_constellation_tx = -1;
+static int hf_he_phy_cap_dcm_max_nss_tx = -1;
+static int hf_he_phy_cap_dcm_max_constellation_rx = -1;
+static int hf_he_phy_cap_dcm_max_nss_rx = -1;
+static int hf_he_phy_cap_rx_he_muppdu_from_non_ap = -1;
+static int hf_he_phy_cap_su_beamformer = -1;
+static int hf_he_phy_cap_su_beamformee = -1;
+static int hf_he_phy_cap_mu_beamformer = -1;
+static int hf_he_phy_cap_beamformer_sts_lte_80mhz = -1;
+static int hf_he_phy_cap_beamformer_sts_gt_80mhz = -1;
+static int hf_he_phy_b40_to_b55 = -1;
+static int hf_he_phy_cap_number_of_sounding_dims_lte_80 = -1;
+static int hf_he_phy_cap_number_of_sounding_dims_gt_80 = -1;
+static int hf_he_phy_cap_ng_eq_16_su_fb = -1;
+static int hf_he_phy_cap_ng_eq_16_mu_fb = -1;
+static int hf_he_phy_cap_codebook_size_eq_4_2_fb = -1;
+static int hf_he_phy_cap_codebook_size_eq_7_5_fb = -1;
+static int hf_he_phy_cap_triggered_su_beamforming_fb = -1;
+static int hf_he_phy_cap_triggered_mu_beamforming_fb = -1;
+static int hf_he_phy_cap_triggered_cqi_fb = -1;
+static int hf_he_phy_cap_partial_bw_extended_range = -1;
+static int hf_he_phy_cap_partial_bw_dl_mu_mimo = -1;
+static int hf_he_phy_cap_ppe_threshold_present = -1;
+static int hf_he_phy_b56_to_b71 = -1;
+static int hf_he_phy_cap_srp_based_sr_support = -1;
+static int hf_he_phy_cap_power_boost_factor_ar_support = -1;
+static int hf_he_phy_cap_he_su_ppdu_etc_gi = -1;
+static int hf_he_phy_cap_max_nc = -1;
+static int hf_he_phy_cap_stbc_tx_gt_80_mhz = -1;
+static int hf_he_phy_cap_stbc_rx_gt_80_mhz = -1;
+static int hf_he_phy_cap_he_er_su_ppdu_4xxx_gi = -1;
+static int hf_he_phy_cap_20mhz_in_40mhz_24ghz_band = -1;
+static int hf_he_phy_cap_20mhz_in_160_80p80_ppdu = -1;
+static int hf_he_phy_cap_80mgz_in_160_80p80_ppdu = -1;
+static int hf_he_phy_cap_he_er_su_ppdu_1xxx_gi = -1;
+static int hf_he_phy_cap_midamble_rx_2x_xxx_ltf = -1;
+static int hf_he_phy_cap_b70_b71_reserved = -1;
+static int hf_he_operation_parameter = -1;
+static int hf_he_operation_bss_color = -1;
+static int hf_he_operation_default_pe_duration = -1;
+static int hf_he_operation_twt_required = -1;
+static int hf_he_operation_txop_duration_rts_threshold = -1;
+static int hf_he_operation_partial_bss_color = -1;
+static int hf_he_operation_vht_operation_information_present = -1;
+static int hf_he_operation_reserved_b22_b27 = -1;
+static int hf_he_operation_multiple_bssid_ap = -1;
+static int hf_he_operation_txbssid_indicator = -1;
+static int hf_he_operation_bss_color_disabled = -1;
+static int hf_he_operation_reserved_b31 = -1;
+static int hf_he_operation_basic_mcs = -1;
+static int hf_he_oper_max_he_mcs_for_1_ss = -1;
+static int hf_he_oper_max_he_mcs_for_2_ss = -1;
+static int hf_he_oper_max_he_mcs_for_3_ss = -1;
+static int hf_he_oper_max_he_mcs_for_4_ss = -1;
+static int hf_he_oper_max_he_mcs_for_5_ss = -1;
+static int hf_he_oper_max_he_mcs_for_6_ss = -1;
+static int hf_he_oper_max_he_mcs_for_7_ss = -1;
+static int hf_he_oper_max_he_mcs_for_8_ss = -1;
+static int hf_he_operation_channel_width = -1;
+static int hf_he_operation_channel_center_freq_0 = -1;
+static int hf_he_operation_channel_center_freq_1 = -1;
+static int hf_he_operation_max_bssid_indicator = -1;
+static int hf_he_muac_aci_aifsn = -1;
+static int hf_he_mu_edca_timer = -1;
+static int hf_he_muac_ecwmin_ecwmax = -1;
+static int hf_he_srp_disallowed = -1;
+static int hf_he_non_srg_obss_pd_sr_disallowed = -1;
+static int hf_he_non_srg_offset_present = -1;
+static int hf_he_srg_information_present = -1;
+static int hf_he_hesiga_spatial_reuse_value15_allowed = -1;
+static int hf_he_sr_control_reserved = -1;
+static int hf_he_spatial_reuse_sr_control = -1;
+static int hf_he_spatial_non_srg_obss_pd_max_offset = -1;
+static int hf_he_spatial_srg_obss_pd_min_offset = -1;
+static int hf_he_spatial_srg_obss_pd_max_offset = -1;
+static int hf_he_spatial_srg_bss_color_bitmap = -1;
+static int hf_he_spatial_srg_partial_bssid_bitmap = -1;
+static int hf_he_ess_report_planned_ess = -1;
+static int hf_he_ess_report_edge_of_ess = -1;
+static int hf_he_resource_request_buffer_thresh = -1;
+static int hf_he_bss_color_change_new_color_info = -1;
+static int hf_he_new_bss_color_info_color = -1;
+static int hf_he_new_bss_color_info_reserved = -1;
+static int hf_he_bss_color_change_switch_countdown = -1;
+static int hf_he_ess_report_info_field = -1;
+static int hf_he_ess_report_recommend_transition_thresh = -1;
+static int hf_he_uora_field = -1;
+static int hf_he_uora_eocwmin = -1;
+static int hf_he_uora_owcwmax = -1;
+static int hf_he_uora_reserved = -1;
+
 /* ************************************************************************* */
 /*                               Protocol trees                              */
 /* ************************************************************************* */
@@ -4983,7 +5451,11 @@ static gint ett_cntrl_wrapper_payload = -1;
 static gint ett_fragments = -1;
 static gint ett_fragment = -1;
 static gint ett_block_ack = -1;
+static gint ett_block_ack_tid = -1;
+static gint ett_block_ack_request_control = -1;
 static gint ett_block_ack_bitmap = -1;
+static gint ett_block_ack_request_multi_sta_aid_tid = -1;
+static gint ett_multi_sta_block_ack = -1;
 static gint ett_ath_cap_tree = -1;
 
 static gint ett_80211_mgt = -1;
@@ -5032,8 +5504,16 @@ static gint ett_hta_cap1_tree = -1;
 static gint ett_hta_cap2_tree = -1;
 
 static gint ett_htc_tree = -1;
+static gint ett_htc_he_a_control = -1;
 static gint ett_mfb_subtree = -1;
 static gint ett_lac_subtree = -1;
+static gint ett_ieee80211_umrs_control = -1;
+static gint ett_ieee80211_om_control = -1;
+static gint ett_ieee80211_hla_control = -1;
+static gint ett_ieee80211_buffer_status_report = -1;
+static gint ett_ieee80211_control_uph = -1;
+static gint ett_ieee80211_bqr_control = -1;
+static gint ett_ieee80211_control_cci = -1;
 
 static gint ett_vht_cap_tree = -1;
 static gint ett_vht_mcsset_tree = -1;
@@ -5043,8 +5523,11 @@ static gint ett_vht_basic_mcsbit_tree = -1;
 static gint ett_vht_op_tree = -1;
 static gint ett_vht_tpe_info_tree = -1;
 
-static gint ett_vht_ndp_annc_token_tree = -1;
+static gint ett_vht_ndp_annc = -1;
 static gint ett_vht_ndp_annc_sta_info_tree = -1;
+static gint ett_vht_ndp_annc_sta_list = -1;
+
+static gint ett_he_mimo_control = -1;
 
 static gint ett_ff_vhtmimo_cntrl = -1;
 static gint ett_ff_vhtmimo_beamforming_report = -1;
@@ -5081,6 +5564,7 @@ static gint ett_tag_ex_cap6 = -1;
 static gint ett_tag_ex_cap7 = -1;
 static gint ett_tag_ex_cap8 = -1;
 static gint ett_tag_ex_cap89 = -1;
+static gint ett_tag_ex_cap10 = -1;
 
 static gint ett_tag_rm_cap1 = -1;
 static gint ett_tag_rm_cap2 = -1;
@@ -5129,6 +5613,21 @@ static gint ett_sched_tree = -1;
 
 static gint ett_fcs = -1;
 
+static gint ett_hs20_osu_providers_list = -1;
+static gint ett_hs20_osu_provider_tree = -1;
+static gint ett_hs20_friendly_names_list = -1;
+static gint ett_hs20_friendly_name_tree = -1;
+static gint ett_hs20_osu_provider_method_list = -1;
+static gint ett_osu_icons_avail_list = -1;
+static gint ett_hs20_osu_icon_tree = -1;
+static gint ett_hs20_osu_service_desc_list = -1;
+static gint ett_hs20_osu_service_desc_tree = -1;
+static gint ett_hs20_venue_url = -1;
+static gint ett_hs20_advice_of_charge = -1;
+static gint ett_hs20_aoc_plan = -1;
+
+static gint ett_hs20_ofn_tree = -1;
+
 static gint ett_adv_proto = -1;
 static gint ett_adv_proto_tuple = -1;
 static gint ett_gas_query = -1;
@@ -5138,6 +5637,16 @@ static gint ett_nai_realm_eap = -1;
 static gint ett_tag_ric_data_desc_ie = -1;
 static gint ett_anqp_vendor_capab = -1;
 
+static gint ett_osen_group_data_cipher_suite = -1;
+static gint ett_osen_pairwise_cipher_suites = -1;
+static gint ett_osen_pairwise_cipher_suite = -1;
+static gint ett_osen_akm_cipher_suites = -1;
+static gint ett_osen_akm_cipher_suite = -1;
+static gint ett_osen_rsn_cap_tree = -1;
+static gint ett_osen_pmkid_list = -1;
+static gint ett_osen_pmkid_tree = -1;
+static gint ett_osen_group_management_cipher_suite = -1;
+
 static gint ett_hs20_cc_proto_port_tuple = -1;
 
 static gint ett_ssid_list = -1;
@@ -5151,6 +5660,10 @@ static gint ett_meru = -1;
 static gint ett_qos_map_set_exception = -1;
 static gint ett_qos_map_set_range = -1;
 
+static gint ett_wnm_notif_subelt = -1;
+
+static gint ett_ieee80211_3gpp_plmn = -1;
+
 static expert_field ei_ieee80211_bad_length = EI_INIT;
 static expert_field ei_ieee80211_inv_val = EI_INIT;
 static expert_field ei_ieee80211_vht_tpe_pwr_info_count = EI_INIT;
@@ -5204,6 +5717,51 @@ static gint ett_80211_ext = -1;
 static gint ett_allocation_tree = -1;
 static gint ett_sta_info = -1;
 
+static gint ett_ieee80211_esp = -1;
+
+/* 802.11ax trees */
+static gint ett_he_mac_capabilities = -1;
+static gint ett_he_phy_capabilities = -1;
+static gint ett_he_phy_cap_first_byte = -1;
+static gint ett_he_phy_cap_chan_width_set = -1;
+static gint ett_he_phy_cap_b8_to_b23 = -1;
+static gint ett_he_phy_cap_b24_to_b39 = -1;
+static gint ett_he_phy_cap_b40_to_b55 = -1;
+static gint ett_he_phy_cap_b56_to_b71 = -1;
+static gint ett_he_mcs_and_nss_set = -1;
+static gint ett_he_rx_tx_he_mcs_map_lte_80 = -1;
+static gint ett_he_rx_mcs_map_lte_80 = -1;
+static gint ett_he_tx_mcs_map_lte_80 = -1;
+static gint ett_he_rx_tx_he_mcs_map_160 = -1;
+static gint ett_he_rx_mcs_map_160 = -1;
+static gint ett_he_tx_mcs_map_160 = -1;
+static gint ett_he_rx_tx_he_mcs_map_80_80 = -1;
+static gint ett_he_rx_mcs_map_80_80 = -1;
+static gint ett_he_tx_mcs_map_80_80 = -1;
+static gint ett_he_ppe_threshold = -1;
+static gint ett_he_ppe_nss = -1;
+static gint ett_he_ppe_ru_alloc = -1;
+static gint ett_he_uora_tree = -1;
+static gint ett_he_spatial_reuse_control = -1;
+static gint ett_he_bss_new_color_info = -1;
+static gint ett_he_ess_report_info_field = -1;
+static gint ett_he_operation_params = -1;
+static gint ett_he_oper_basic_mcs = -1;
+static gint ett_he_operation_vht_op_info = -1;
+static gint ett_he_mu_edca_param = -1;
+static gint ett_he_trigger_common_info = -1;
+static gint ett_he_trigger_base_common_info = -1;
+static gint ett_he_trigger_bar_ctrl = -1;
+static gint ett_he_trigger_bar_info = -1;
+static gint ett_he_trigger_user_info = -1;
+static gint ett_he_trigger_base_user_info = -1;
+static gint ett_he_trigger_dep_basic_user_info = -1;
+static gint ett_he_trigger_dep_nfrp_user_info = -1;
+static gint ett_he_ndp_annc = -1;
+static gint ett_he_ndp_annc_sta_list = -1;
+static gint ett_he_ndp_annc_sta_item = -1;
+static gint ett_he_ndp_annc_sta_info = -1;
+
 static const fragment_items frag_items = {
   &ett_fragment,
   &ett_fragments,
@@ -5239,6 +5797,8 @@ is_broadcast_bssid(const address *bssid) {
   return addresses_equal(&bssid_broadcast, bssid);
 }
 
+static heur_dissector_list_t heur_subdissector_list;
+
 static dissector_handle_t ieee80211_handle;
 static dissector_handle_t wlan_withoutfcs_handle;
 static dissector_handle_t llc_handle;
@@ -5323,7 +5883,7 @@ static const val64_string number_of_taps_values[] = {
   {0, NULL}
 };
 
-AIRPDCAP_CONTEXT airpdcap_ctx;
+DOT11DECRYPT_CONTEXT dot11decrypt_ctx;
 
 #define PSMP_STA_INFO_BROADCAST 0
 #define PSMP_STA_INFO_MULTICAST 1
@@ -5693,7 +6253,7 @@ add_mimo_compressed_beamforming_feedback_report(proto_tree *tree, tvbuff_t *tvb,
     gint8 snr;
     char edge_sign;
 
-    snr = (gint8) tvb_get_guint8(tvb, offset);
+    snr = tvb_get_gint8(tvb, offset);
 
     switch(snr) {
       case -128:
@@ -6022,12 +6582,18 @@ dissect_vendor_action_wifi_alliance(tvbuff_t *tvb, packet_info *pinfo, proto_tre
   return offset;
 }
 
+/*
+ * This function is called from two different places. In one case it is called
+ * without the tag and length. In other cases, it is called with those and
+ * is asked to return the type and subtype. We know the difference because
+ * type and subtype will be NULL in the first case.
+ */
 static guint
 dissect_advertisement_protocol_common(packet_info *pinfo, proto_tree *tree,
                                tvbuff_t *tvb, int offset, guint *type,
                                guint *subtype)
 {
-  guint8      tag_no, tag_len, left;
+  guint8      tag_no = 0, tag_len, left;
   proto_item *item = NULL, *adv_item;
   proto_tree *adv_tree, *adv_tuple_tree;
 
@@ -6039,8 +6605,16 @@ dissect_advertisement_protocol_common(packet_info *pinfo, proto_tree *tree,
   if (type)
     item = proto_tree_add_item(tree, hf_ieee80211_tag_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
 
-  tag_len = tvb_get_guint8(tvb, offset + 1);
-  if (tag_no != TAG_ADVERTISEMENT_PROTOCOL) {
+  /*
+   * If we have the tag and len, use the len in the tvb, otherwise ask
+   * for the length of the tvb.
+   */
+  if (type)
+    tag_len = tvb_get_guint8(tvb, offset + 1);
+  else
+    tag_len = tvb_reported_length_remaining(tvb, 0);
+
+  if (type && tag_no != TAG_ADVERTISEMENT_PROTOCOL) {
     expert_add_info_format(pinfo, item, &ei_ieee80211_tag_number,
                            "Unexpected IE %d (expected Advertisement "
                            "Protocol)", tag_no);
@@ -6058,7 +6632,8 @@ dissect_advertisement_protocol_common(packet_info *pinfo, proto_tree *tree,
   }
 
   left = tag_len;
-  offset += 2;
+  if (type) /* Skip past the header if there ... */
+    offset += 2;
   adv_tree = proto_tree_add_subtree(tree, tvb, offset, left,
                                  ett_adv_proto, &adv_item, "Advertisement Protocol element");
 
@@ -6114,7 +6689,7 @@ dissect_advertisement_protocol_common(packet_info *pinfo, proto_tree *tree,
       left   -= 1;
       if (oui == OUI_WFA) {
         proto_tree_add_item(adv_tuple_tree, hf_ieee80211_dpp_subtype, tvb, offset, 1, ENC_NA);
-        if (wfa_subtype == WFA_SUBTYPE_DPP) {
+        if (subtype && wfa_subtype == WFA_SUBTYPE_DPP) {
           *subtype = WFA_SUBTYPE_DPP;
           *subtype |= (tvb_get_guint8(tvb, offset) << 8);
         }
@@ -6503,7 +7078,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
 static void
 dissect_3gpp_cellular_network_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
 {
-  guint8      iei, num;
+  guint8      iei, num, plmn_idx = 0;
   proto_item *item;
 
   /* See Annex A of 3GPP TS 24.234 v8.1.0 for description */
@@ -6524,9 +7099,18 @@ dissect_3gpp_cellular_network_info(proto_tree *tree, tvbuff_t *tvb, packet_info
   proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_num_plmns, tvb, offset, 1, ENC_LITTLE_ENDIAN);
   offset += 1;
   while (num > 0) {
+    proto_item *plmn_item = NULL;
+    proto_tree *plmn_tree = NULL;
+    guint plmn_val = 0;
+
     if (tvb_reported_length_remaining(tvb, offset) < 3)
       break;
-    dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, tree, offset, E212_NONE, TRUE);
+    plmn_val = tvb_get_letoh24(tvb, offset);
+    plmn_item = proto_tree_add_uint_format(tree, hf_ieee80211_3gpp_gc_plmn,
+                                tvb, offset, 3, plmn_val, "PLMN %d (0x%x)",
+                                plmn_idx++, plmn_val);
+    plmn_tree = proto_item_add_subtree(plmn_item, ett_ieee80211_3gpp_plmn);
+    dissect_e212_mcc_mnc_wmem_packet_str(tvb, pinfo, plmn_tree, offset, E212_NONE, TRUE);
     num--;
     offset += 3;
   }
@@ -6548,34 +7132,72 @@ dissect_domain_name_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end)
   }
 }
 
-static void
-dissect_venue_url_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end)
+static int
+dissect_hs20_subscription_remediation(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, void *data _U_)
 {
-  guint8 len;
+  int offset = 0;
+  guint8 url_len = tvb_get_guint8(tvb, offset);
+  proto_item *pi = NULL;
 
-  while (offset < end) {
-    len = tvb_get_guint8(tvb, offset);
-    proto_item *pi = NULL;
-    proto_tree_add_item(tree, hf_ieee80211_ff_anqp_venue_url_len,
-                        tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_ff_anqp_venue_url_number,
+  proto_tree_add_item(tree, hf_hs20_subscription_remediation_url_len, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+  if (tvb_reported_length_remaining(tvb, offset) >= url_len) {
+    pi = proto_tree_add_item(tree, hf_hs20_subscription_remediation_server_url,
+                        tvb, offset, url_len, ENC_ASCII|ENC_NA);
+    offset += url_len;
+    PROTO_ITEM_SET_URL(pi);
+    proto_tree_add_item(tree, hf_hs20_subscription_remediation_server_method,
                         tvb, offset, 1, ENC_NA);
-    offset += 1;
-    pi = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_venue_url,
-                        tvb, offset, len - 1, ENC_ASCII|ENC_NA);
+    offset++;
+  }
+
+  return offset;
+}
+
+static int
+dissect_hs20_deauthentication_imminent(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, void *data _U_)
+{
+  int offset = 0;
+  guint8 url_len = 0;
+  proto_item *pi = NULL;
+
+  proto_tree_add_item(tree, hf_hs20_deauth_reason_code, tvb, offset, 1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_hs20_reauth_delay, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  url_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_hs20_deauth_reason_url_len, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+
+  if (tvb_reported_length_remaining(tvb, offset) >= url_len) {
+    pi = proto_tree_add_item(tree, hf_hs20_deauth_imminent_reason_url,
+                        tvb, offset, url_len, ENC_ASCII|ENC_NA);
+    offset += url_len;
     PROTO_ITEM_SET_URL(pi);
-    offset += len - 1;
   }
+  return offset;
 }
 
-#define HS20_ANQP_HS_QUERY_LIST 1
-#define HS20_ANQP_HS_CAPABILITY_LIST 2
-#define HS20_ANQP_OPERATOR_FRIENDLY_NAME 3
-#define HS20_ANQP_WAN_METRICS 4
-#define HS20_ANQP_CONNECTION_CAPABILITY 5
-#define HS20_ANQP_NAI_HOME_REALM_QUERY 6
+#define HS20_ANQP_HS_QUERY_LIST              1
+#define HS20_ANQP_HS_CAPABILITY_LIST         2
+#define HS20_ANQP_OPERATOR_FRIENDLY_NAME     3
+#define HS20_ANQP_WAN_METRICS                4
+#define HS20_ANQP_CONNECTION_CAPABILITY      5
+#define HS20_ANQP_NAI_HOME_REALM_QUERY       6
 #define HS20_ANQP_OPERATING_CLASS_INDICATION 7
+#define HS20_ANQP_OSU_PROVIDERS_LIST         8
+/* 9 is reserved */
+#define HS20_ANQP_ICON_REQUEST               10
+#define HS20_ANQP_ICON_BINARY_FILE           11
+#define HS20_ANQP_OPERATOR_ICON_METADATA     12
+#define HS20_ANQP_ADVICE_OF_CHARGE           13
 
 static const value_string hs20_anqp_subtype_vals[] = {
   { HS20_ANQP_HS_QUERY_LIST, "HS Query list" },
@@ -6585,6 +7207,11 @@ static const value_string hs20_anqp_subtype_vals[] = {
   { HS20_ANQP_CONNECTION_CAPABILITY, "Connection Capability" },
   { HS20_ANQP_NAI_HOME_REALM_QUERY, "NAI Home Realm Query" },
   { HS20_ANQP_OPERATING_CLASS_INDICATION, "Operating Class Indication" },
+  { HS20_ANQP_OSU_PROVIDERS_LIST, "OSU Providers List" },
+  { HS20_ANQP_ICON_REQUEST, "Icon Request" },
+  { HS20_ANQP_ICON_BINARY_FILE, "Icon Binary File" },
+  { HS20_ANQP_OPERATOR_ICON_METADATA, "Operator Icon Metadata" },
+  { HS20_ANQP_ADVICE_OF_CHARGE, "Advice of Charge" },
   { 0, NULL }
 };
 
@@ -6600,22 +7227,36 @@ dissect_hs20_anqp_hs_query_list(proto_tree *tree, tvbuff_t *tvb, int offset, int
 
 static void
 dissect_hs20_anqp_operator_friendly_name(proto_tree *tree, tvbuff_t *tvb,
-                                         packet_info *pinfo, int offset, int end)
+                                         packet_info *pinfo, int offset,
+                                         int end, int hf_array[],
+                                         gint ett_val)
 {
+  int ofn_index = 0;
+
   while (offset + 4 <= end) {
     guint8 vlen = tvb_get_guint8(tvb, offset);
-    proto_item *item = proto_tree_add_item(tree, hf_hs20_anqp_ofn_length,
-                                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
+    proto_tree *ofn_tree = NULL;
+    proto_item *item = NULL, *pi = NULL;
+    int start_offset = offset;
+
+    ofn_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_val,
+                                        &pi, "Friendly Name %d", ofn_index);
+
+    item = proto_tree_add_item(ofn_tree, hf_array[0],
+                               tvb, offset, 1, ENC_LITTLE_ENDIAN);
     offset++;
     if (vlen > end - offset || vlen < 3) {
       expert_add_info(pinfo, item, &ei_hs20_anqp_ofn_length);
       break;
     }
-    proto_tree_add_item(tree, hf_hs20_anqp_ofn_language,
+    proto_tree_add_item(tree, hf_array[1],
                         tvb, offset, 3, ENC_ASCII|ENC_NA);
-    proto_tree_add_item(tree, hf_hs20_anqp_ofn_name,
+    proto_tree_add_item(tree, hf_array[2],
                         tvb, offset + 3, vlen - 3, ENC_UTF_8|ENC_NA);
     offset += vlen;
+
+    proto_item_set_len(pi, offset - start_offset);
+    ofn_index++;
   }
 }
 
@@ -6687,7 +7328,7 @@ dissect_hs20_anqp_connection_capability(proto_tree *tree, tvbuff_t *tvb,
                                "ProtoPort Tuple - ip_proto=%u port_num=%u status=%s",
                                ip_proto, port_num,
                                val_to_str(status, hs20_cc_status_vals,
-                                          "Unknown (%u)"));
+                                          "Reserved (%u)"));
     proto_tree_add_item(tuple, hf_hs20_anqp_cc_proto_ip_proto,
                         tvb, offset, 1, ENC_LITTLE_ENDIAN);
     offset++;
@@ -6740,131 +7381,621 @@ dissect_hs20_anqp_oper_class_indic(proto_tree *tree, tvbuff_t *tvb, int offset,
 }
 
 static int
-dissect_hs20_anqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+dissect_hs20_osu_friendly_names(proto_tree *tree, tvbuff_t *tvb,
+  packet_info *pinfo, int offset, int end _U_)
 {
-  guint8 subtype;
-  int end = tvb_reported_length(tvb);
-  int offset = 0;
-  anqp_info_dissector_data_t* anqp_data = (anqp_info_dissector_data_t*)data;
-
-  DISSECTOR_ASSERT(anqp_data);
+  int osu_fn_hf_array[3] = {hf_hs20_osu_friendly_name_length,
+                            hf_hs20_osu_friendly_name_language,
+                            hf_hs20_osu_friendly_name_name };
+  guint16 osu_fn_count = tvb_get_letohs(tvb, offset);
+  proto_tree *fn_tree = NULL;
 
-  subtype = tvb_get_guint8(tvb, offset);
-  proto_item_append_text(tree, " - HS 2.0 %s",
-                         val_to_str(subtype, hs20_anqp_subtype_vals,
-                                    "Unknown (%u)"));
-  if (anqp_data->idx == 0) {
-    col_append_fstr(pinfo->cinfo, COL_INFO, " HS 2.0 %s",
-                    val_to_str(subtype, hs20_anqp_subtype_vals,
-                               "Unknown (%u)"));
-  } else if (anqp_data->idx == 1) {
-    col_append_str(pinfo->cinfo, COL_INFO, ", ..");
-  }
-  proto_tree_add_item(tree, hf_hs20_anqp_subtype, tvb, offset, 1,
-                      ENC_LITTLE_ENDIAN);
-  offset++;
+  proto_tree_add_item(tree, hf_hs20_osu_friendly_names_len, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
 
-  proto_tree_add_item(tree, hf_hs20_anqp_reserved, tvb, offset, 1,
-                      ENC_LITTLE_ENDIAN);
-  offset++;
+  fn_tree = proto_tree_add_subtree(tree, tvb, offset, osu_fn_count,
+                        ett_hs20_friendly_names_list, NULL,
+                        "Friendly Names List");
 
-  switch (subtype) {
-  case HS20_ANQP_HS_QUERY_LIST:
-    dissect_hs20_anqp_hs_query_list(tree, tvb, offset, end);
-    break;
-  case HS20_ANQP_HS_CAPABILITY_LIST:
-    dissect_hs20_anqp_hs_capability_list(tree, tvb, offset, end);
-    break;
-  case HS20_ANQP_OPERATOR_FRIENDLY_NAME:
-    dissect_hs20_anqp_operator_friendly_name(tree, tvb, pinfo, offset, end);
-    break;
-  case HS20_ANQP_WAN_METRICS:
-    dissect_hs20_anqp_wan_metrics(tree, tvb, offset, anqp_data->request);
-    break;
-  case HS20_ANQP_CONNECTION_CAPABILITY:
-    dissect_hs20_anqp_connection_capability(tree, tvb, offset, end);
-    break;
-  case HS20_ANQP_NAI_HOME_REALM_QUERY:
-    dissect_hs20_anqp_nai_home_realm_query(tree, tvb, pinfo, offset, end);
-    break;
-  case HS20_ANQP_OPERATING_CLASS_INDICATION:
-    dissect_hs20_anqp_oper_class_indic(tree, tvb, offset, end);
-    break;
-  default:
-    if (offset == end)
-      break;
-    proto_tree_add_item(tree, hf_hs20_anqp_payload, tvb, offset,
-                        end - offset, ENC_NA);
-    break;
-  }
+  dissect_hs20_anqp_operator_friendly_name(fn_tree, tvb, pinfo, offset,
+                        offset + osu_fn_count,
+                        osu_fn_hf_array, ett_hs20_friendly_name_tree);
 
-  return tvb_captured_length(tvb);
+  return offset + osu_fn_count;
 }
 
 static int
-dissect_vendor_wifi_alliance_anqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+dissect_hs20_osu_icon_available(proto_tree *tree, tvbuff_t *tvb,
+  packet_info *pinfo _U_, int offset, int end _U_, guint16 icon_index)
 {
-  guint8 subtype;
-  int offset = 0;
-  tvbuff_t *subtvb;
+  proto_tree *icon_avail = NULL;
+  proto_item *pi = NULL;
+  int start_offset = offset;
+  guint8 icon_type_len = 0, icon_filename_len = 0;
 
-  subtype = tvb_get_guint8(tvb, offset);
-  proto_tree_add_item(tree, hf_ieee80211_anqp_wfa_subtype, tvb, offset, 1, ENC_NA);
-  offset += 1;
+  icon_avail = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+                        ett_hs20_osu_icon_tree, &pi,
+                        "Icon Available %d", icon_index);
 
-  subtvb = tvb_new_subset_remaining(tvb, offset);
-  if (!dissector_try_uint_new(wifi_alliance_anqp_info_table, subtype, subtvb, pinfo, tree, FALSE, data))
-      call_data_dissector(subtvb, pinfo, tree);
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_width, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
 
-  return tvb_captured_length(tvb);
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_height, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_lang_code, tvb, offset, 3,
+                        ENC_ASCII|ENC_NA);
+  offset += 3;
+
+  icon_type_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_icon_type_len, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_icon_type, tvb, offset,
+                        icon_type_len, ENC_ASCII|ENC_NA);
+  offset += icon_type_len;
+
+  icon_filename_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_filename_len, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(icon_avail, hf_osu_icon_avail_filename, tvb, offset,
+                        icon_filename_len, ENC_ASCII|ENC_NA);
+  offset += icon_filename_len;
+
+  proto_item_set_len(pi, offset - start_offset);
+
+  return offset;
 }
 
+static const value_string osu_method_vals[] = {
+  { 0, "OMA DM" },
+  { 1, "SOAP XML SPP" },
+  { 0, NULL },
+};
 
 static int
-dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data);
+dissect_hs20_osu_provider(proto_tree *tree, tvbuff_t *tvb,
+  packet_info *pinfo, int offset, int end, guint8 provider_index)
+{
+  proto_tree *prov_tree = NULL;
+  proto_item *osupi = NULL, *uri_pi = NULL;
+  int start_offset = offset;
+  guint8 osu_server_uri_len = 0;
+  guint8 osu_method_list_len = 0;
+  guint16 icons_avail = 0, icons_index = 0;
+  guint8 osu_nai_len = 0;
+  guint16 osu_service_desc_len = 0;
+
+  prov_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+                        ett_hs20_osu_provider_tree, &osupi,
+                        "OSU Provider %d", provider_index);
+
+  proto_tree_add_item(prov_tree, hf_hs20_osu_prov_length, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
 
-static int
-dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
-                  gboolean request, int idx)
-{
-  guint16     id, len;
-  guint32     oui;
-  proto_item *item, *item_len;
-  tvbuff_t *vendor_tvb;
-  anqp_info_dissector_data_t anqp_info;
+  offset = dissect_hs20_osu_friendly_names(prov_tree, tvb, pinfo, offset, end);
 
-  item = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info_id,
-                             tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  id = tvb_get_letohs(tvb, offset);
-  if (id != ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST) {
-    if (idx == 0) {
-      proto_item_append_text(tree, " - %s",
-                             val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)"));
-      col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
-                      val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)"));
-    } else if (idx == 1) {
-      proto_item_append_text(tree, ", ..");
-      col_append_str(pinfo->cinfo, COL_INFO, ", ..");
+  proto_item_set_len(osupi, offset - start_offset);
+
+  osu_server_uri_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(prov_tree, hf_hs20_osu_server_uri_len, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+
+  uri_pi = proto_tree_add_item(prov_tree, hf_hs20_osu_server_uri, tvb, offset,
+                        osu_server_uri_len, ENC_ASCII|ENC_NA);
+  offset += osu_server_uri_len;
+  PROTO_ITEM_SET_URL(uri_pi);
+
+  osu_method_list_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(prov_tree, hf_hs20_osu_method_list_len, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+
+  if (osu_method_list_len > 0) {
+    proto_tree *osu_method_list = NULL;
+    guint8 osu_method_list_index = 0;
+
+    osu_method_list = proto_tree_add_subtree(prov_tree, tvb, offset,
+                                osu_method_list_len,
+                                ett_hs20_osu_provider_method_list,
+                                NULL, "OSU Method List");
+    while (osu_method_list_len > osu_method_list_index) {
+      proto_item *pi = NULL;
+      guint8 method = tvb_get_guint8(tvb, offset);
+
+      pi = proto_tree_add_item(osu_method_list, hf_hs20_osu_method_val, tvb,
+                        offset, 1, ENC_NA);
+      proto_item_append_text(pi, ": %s",
+                                val_to_str(method, osu_method_vals,
+                                        "Reserved"));
+      offset++;
+      osu_method_list_index++;
     }
   }
-  tree = proto_item_add_subtree(item, ett_gas_anqp);
+
+  icons_avail = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(prov_tree, hf_hs20_icons_avail_len, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
   offset += 2;
-  item_len = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info_length,
-                      tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  len = tvb_get_letohs(tvb, offset);
+
+  if (icons_avail > 0) {
+    proto_tree *icon_list = NULL;
+    proto_item *pi = NULL;
+
+    start_offset = offset;
+
+    icon_list = proto_tree_add_subtree(prov_tree, tvb, offset, -1,
+                                ett_osu_icons_avail_list, &pi,
+                                "Icons Available");
+
+    while ((offset - start_offset) < icons_avail) {
+      offset = dissect_hs20_osu_icon_available(icon_list, tvb, pinfo, offset,
+                                end, icons_index);
+      icons_index++;
+    }
+
+    proto_item_set_len(pi, offset - start_offset);
+  }
+
+  osu_nai_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(prov_tree, hf_hs20_osu_nai_len, tvb, offset, 1, ENC_NA);
+  offset++;
+
+  if (osu_nai_len > 0) {
+    proto_tree_add_item(prov_tree, hf_hs20_osu_nai, tvb, offset,
+                        osu_nai_len, ENC_NA);
+    offset += osu_nai_len;
+  }
+
+  osu_service_desc_len = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(prov_tree, hf_hs20_osu_service_desc_len, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
   offset += 2;
-  if (tvb_reported_length_remaining(tvb, offset) < len) {
-    expert_add_info(pinfo, tree, &ei_ieee80211_ff_anqp_info_length);
-    return 4 + len;
+
+  if (osu_service_desc_len > 0) {
+    proto_tree *desc_tree = NULL;
+    proto_item *pi = NULL;
+    guint8 service_desc_index = 0;
+
+    start_offset = offset;
+    desc_tree = proto_tree_add_subtree(prov_tree, tvb, offset, -1,
+                                ett_hs20_osu_service_desc_list, &pi,
+                                "OSU Service Description List");
+
+    while ((offset - start_offset) < osu_service_desc_len) {
+      proto_tree *desc_duple = NULL;
+      guint8 serv_desc_len = tvb_get_guint8(tvb, offset);
+
+      desc_duple = proto_tree_add_subtree_format(desc_tree, tvb, offset,
+                                1 + serv_desc_len,
+                                ett_hs20_osu_service_desc_tree, NULL,
+                                "OSU Service Description Duple %d",
+                                service_desc_index);
+
+      proto_tree_add_item(desc_duple, hf_hs20_osu_service_desc_duple_len, tvb,
+                                offset, 1, ENC_NA);
+      offset++;
+
+      proto_tree_add_item(desc_duple, hf_hs20_osu_service_desc_lang, tvb, offset,
+                                3, ENC_ASCII|ENC_NA);
+      offset += 3;
+
+      proto_tree_add_item(desc_duple, hf_hs20_osu_service_desc, tvb, offset,
+                                serv_desc_len - 3, ENC_ASCII|ENC_NA);
+      offset += serv_desc_len - 3;
+
+      service_desc_index++;
+    }
+
+    proto_item_set_len(pi, offset - start_offset);
   }
-  switch (id)
-  {
-  case ANQP_INFO_ANQP_QUERY_LIST:
-    dissect_anqp_query_list(tree, tvb, pinfo, offset, offset + len);
-    break;
-  case ANQP_INFO_ANQP_CAPAB_LIST:
-    dissect_anqp_capab_list(tree, tvb, pinfo, offset, offset + len);
-    break;
+
+  return end;
+}
+
+static void
+dissect_hs20_anqp_osu_providers_list(proto_tree *tree, tvbuff_t *tvb,
+  packet_info *pinfo, int offset, int end)
+{
+  guint8 ssid_len = tvb_get_guint8(tvb, offset);
+  guint8 osu_prov_count = 0, osu_prov_index = 0;
+
+  proto_tree_add_item(tree, hf_hs20_osu_providers_list_ssid_len, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_hs20_osu_providers_ssid, tvb, offset, ssid_len,
+                        ENC_UTF_8|ENC_NA);
+  offset += ssid_len;
+
+  osu_prov_count = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_hs20_osu_providers_count, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+
+  if (osu_prov_count > 0) {
+    int start_offset = offset;
+    proto_item *pi = NULL;
+    proto_tree *osu_prov_list = NULL;
+
+    osu_prov_list = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_hs20_osu_providers_list, &pi,
+                        "OSU Providers List");
+    while (offset < end && osu_prov_count > osu_prov_index) {
+      offset = dissect_hs20_osu_provider(osu_prov_list, tvb, pinfo, offset, end,
+                        osu_prov_index);
+      osu_prov_index++;
+    }
+
+    proto_item_set_len(pi, offset - start_offset);
+  }
+}
+
+static void
+dissect_hs20_anqp_icon_request(proto_tree *tree, tvbuff_t *tvb, int offset,
+  int end)
+{
+  proto_tree_add_item(tree, hf_hs20_icon_request_filename, tvb, offset,
+                        end - offset, ENC_UTF_8|ENC_NA);
+}
+
+static const value_string hs20_icon_download_status_vals[] = {
+  { 0, "Success" },
+  { 1, "File not found" },
+  { 2, "Unspecified file error" },
+  { 0, NULL }
+};
+
+static void
+dissect_hs20_anqp_icon_binary_file(proto_tree *tree, tvbuff_t *tvb, int offset,
+  int end _U_)
+{
+  guint8 icon_download_status = tvb_get_guint8(tvb, offset);
+  proto_item *pi = NULL;
+  guint8 icon_type_len = 0;
+  guint16 icon_binary_data_len = 0;
+
+  pi = proto_tree_add_item(tree, hf_hs20_icon_binary_file_status, tvb, offset, 1,
+                        ENC_NA);
+  offset++;
+  proto_item_append_text(pi, ": %s",
+                         val_to_str(icon_download_status,
+                                    hs20_icon_download_status_vals,
+                                    "Reserved (%u)"));
+
+  icon_type_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_hs20_icon_type_length, tvb, offset, 1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_hs20_icon_type, tvb, offset, icon_type_len,
+                        ENC_UTF_8|ENC_NA);
+  offset += icon_type_len;
+
+  icon_binary_data_len = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(tree, hf_hs20_icon_binary_data_len, tvb, offset, 2,
+                        ENC_BIG_ENDIAN);
+  offset += 2;
+
+  proto_tree_add_item(tree, hf_hs20_icon_binary_data, tvb, offset,
+                        icon_binary_data_len, ENC_NA);
+}
+
+static void
+dissect_hs20_anqp_operator_icon_metadata(proto_tree *tree, tvbuff_t *tvb,
+  int offset, int end _U_)
+{
+  proto_item *pi = NULL;
+  int start_offset = offset;
+  guint8 icon_type_len = 0, icon_filename_len = 0;
+
+  proto_tree_add_item(tree, hf_osu_icon_avail_width, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  proto_tree_add_item(tree, hf_osu_icon_avail_height, tvb, offset, 2,
+                        ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  proto_tree_add_item(tree, hf_osu_icon_avail_lang_code, tvb, offset, 3,
+                        ENC_ASCII|ENC_NA);
+  offset += 3;
+
+  icon_type_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_osu_icon_avail_icon_type_len, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_osu_icon_avail_icon_type, tvb, offset,
+                        icon_type_len, ENC_ASCII|ENC_NA);
+  offset += icon_type_len;
+
+  icon_filename_len = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_osu_icon_avail_filename_len, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_osu_icon_avail_filename, tvb, offset,
+                        icon_filename_len, ENC_ASCII|ENC_NA);
+  offset += icon_filename_len;
+
+  proto_item_set_len(pi, offset - start_offset);
+}
+
+static void
+dissect_anqp_venue_url(proto_tree *tree, tvbuff_t *tvb, int offset, int end)
+{
+  guint16 url_duple_index = 0;
+
+  while (offset < end) {
+    proto_tree *venue_url = NULL;
+    proto_item *url_pi = NULL;
+    guint8 url_duple_len = tvb_get_guint8(tvb, offset);
+
+    venue_url = proto_tree_add_subtree_format(tree, tvb, offset,
+                        url_duple_len + 1, ett_hs20_venue_url, NULL,
+                        "Venue URL Duple %d", url_duple_index);
+
+    proto_tree_add_item(venue_url, hf_hs20_anqp_venue_url_length, tvb, offset,
+                        1, ENC_NA);
+    offset++;
+
+    proto_tree_add_item(venue_url, hf_hs20_anqp_venue_number, tvb, offset, 1,
+                        ENC_NA);
+    offset++;
+
+    url_pi = proto_tree_add_item(venue_url, hf_hs20_anqp_venue_url, tvb, offset,
+                        url_duple_len -1, ENC_ASCII|ENC_NA);
+    PROTO_ITEM_SET_URL(url_pi);
+
+    offset += (url_duple_len - 1);
+
+    url_duple_index++;
+  }
+}
+
+static const value_string advice_of_charge_type_vals[] = {
+  { 0, "Time-based" },
+  { 1, "Data-volume-based" },
+  { 2, "Time-and-data-volume-based" },
+  { 3, "Unlimited" },
+  { 0, NULL }
+};
+
+static void
+dissect_hs20_anqp_advice_of_charge(proto_tree *tree, tvbuff_t *tvb, int offset,
+  int end _U_)
+{
+  guint16 toc_index = 0;
+
+  while (offset < end) {
+    guint16 adv_charge_len = tvb_get_letohs(tvb, offset);
+    proto_tree *aoc_tree = NULL;
+    proto_tree *plan_info_tree = NULL;
+    proto_item *pi = NULL, *tpi = NULL;
+    int start_offset = offset;
+    guint8 aoc_type = 0, nai_realm_len = 0;
+    guint8 plan_index = 0;
+    guint16 plan_tot_len = 0;
+    int plan_offset = 0;
+
+    aoc_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+                        ett_hs20_advice_of_charge, &pi,
+                        "Advice of Charge Duple %d", toc_index);
+    proto_tree_add_item(aoc_tree, hf_hs20_anqp_advice_of_charge_length, tvb,
+                        offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+
+    aoc_type = tvb_get_guint8(tvb, offset);
+    tpi = proto_tree_add_item(aoc_tree, hf_hs20_anqp_advice_of_charge_type, tvb,
+                        offset, 1, ENC_NA);
+    offset++;
+    proto_item_append_text(tpi, ": %s",
+                                val_to_str(aoc_type,
+                                        advice_of_charge_type_vals,
+                                        "Reserved (%u)"));
+
+    proto_tree_add_item(aoc_tree, hf_hs20_anqp_aoc_nai_realm_encoding, tvb,
+                        offset, 1, ENC_NA);
+    offset++;
+
+    nai_realm_len = tvb_get_guint8(tvb, offset);
+    proto_tree_add_item(aoc_tree, hf_hs20_anqp_aoc_nai_realm_len, tvb, offset,
+                        1, ENC_NA);
+    offset++;
+
+    proto_tree_add_item(aoc_tree, hf_hs20_anqp_aoc_nai_realm, tvb, offset,
+                        nai_realm_len, ENC_UTF_8|ENC_NA);
+    offset += nai_realm_len;
+
+    plan_tot_len = adv_charge_len - 3 - nai_realm_len;
+    plan_offset = offset;
+
+    while (offset < (plan_offset + plan_tot_len)) {
+        guint16 plan_len = tvb_get_letohs(tvb, offset);
+
+        plan_info_tree = proto_tree_add_subtree_format(aoc_tree, tvb, offset,
+                                plan_len + 2, ett_hs20_aoc_plan, NULL,
+                                "Plan #%u", plan_index);
+
+        proto_tree_add_item(plan_info_tree, hf_hs20_anqp_aoc_plan_len, tvb,
+                        offset, 2, ENC_LITTLE_ENDIAN);
+        offset += 2;
+
+        proto_tree_add_item(plan_info_tree, hf_hs20_anqp_aoc_plan_lang, tvb,
+                        offset, 3, ENC_ASCII|ENC_NA);
+        offset += 3;
+
+        proto_tree_add_item(plan_info_tree, hf_hs20_anqp_aoc_plan_curcy, tvb,
+                        offset, 3, ENC_ASCII|ENC_NA);
+        offset += 3;
+
+        proto_tree_add_item(plan_info_tree, hf_hs20_anqp_aoc_plan_information,
+                        tvb, offset, plan_len - 6, ENC_UTF_8|ENC_NA);
+        offset += plan_len - 6;
+
+        plan_index++;
+    }
+
+    proto_item_set_len(pi, offset - start_offset);
+
+    toc_index++;
+  }
+}
+
+static int
+dissect_hs20_anqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+  guint8 subtype;
+  int ofn_hf_array[3] = {hf_hs20_anqp_ofn_length,
+                         hf_hs20_anqp_ofn_language,
+                         hf_hs20_anqp_ofn_name };
+
+  int end = tvb_reported_length(tvb);
+  int offset = 0;
+  anqp_info_dissector_data_t* anqp_data = (anqp_info_dissector_data_t*)data;
+
+  DISSECTOR_ASSERT(anqp_data);
+
+  subtype = tvb_get_guint8(tvb, offset);
+  proto_item_append_text(tree, " - HS 2.0 %s",
+                         val_to_str(subtype, hs20_anqp_subtype_vals,
+                                    "Reserved (%u)"));
+  if (anqp_data->idx == 0) {
+    col_append_fstr(pinfo->cinfo, COL_INFO, " HS 2.0 %s",
+                    val_to_str(subtype, hs20_anqp_subtype_vals,
+                               "Reserved (%u)"));
+  } else if (anqp_data->idx == 1) {
+    col_append_str(pinfo->cinfo, COL_INFO, ", ..");
+  }
+  proto_tree_add_item(tree, hf_hs20_anqp_subtype, tvb, offset, 1,
+                      ENC_LITTLE_ENDIAN);
+  offset++;
+
+  proto_tree_add_item(tree, hf_hs20_anqp_reserved, tvb, offset, 1,
+                      ENC_LITTLE_ENDIAN);
+  offset++;
+
+  switch (subtype) {
+  case HS20_ANQP_HS_QUERY_LIST:
+    dissect_hs20_anqp_hs_query_list(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_HS_CAPABILITY_LIST:
+    dissect_hs20_anqp_hs_capability_list(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_OPERATOR_FRIENDLY_NAME:
+    dissect_hs20_anqp_operator_friendly_name(tree, tvb, pinfo, offset, end,
+                                ofn_hf_array, ett_hs20_ofn_tree);
+    break;
+  case HS20_ANQP_WAN_METRICS:
+    dissect_hs20_anqp_wan_metrics(tree, tvb, offset, anqp_data->request);
+    break;
+  case HS20_ANQP_CONNECTION_CAPABILITY:
+    dissect_hs20_anqp_connection_capability(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_NAI_HOME_REALM_QUERY:
+    dissect_hs20_anqp_nai_home_realm_query(tree, tvb, pinfo, offset, end);
+    break;
+  case HS20_ANQP_OPERATING_CLASS_INDICATION:
+    dissect_hs20_anqp_oper_class_indic(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_OSU_PROVIDERS_LIST:
+    dissect_hs20_anqp_osu_providers_list(tree, tvb, pinfo, offset, end);
+    break;
+  case HS20_ANQP_ICON_REQUEST:
+    dissect_hs20_anqp_icon_request(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_ICON_BINARY_FILE:
+    dissect_hs20_anqp_icon_binary_file(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_OPERATOR_ICON_METADATA:
+    dissect_hs20_anqp_operator_icon_metadata(tree, tvb, offset, end);
+    break;
+  case HS20_ANQP_ADVICE_OF_CHARGE:
+    dissect_hs20_anqp_advice_of_charge(tree, tvb, offset, end);
+    break;
+  default:
+    if (offset == end)
+      break;
+    proto_tree_add_item(tree, hf_hs20_anqp_payload, tvb, offset,
+                        end - offset, ENC_NA);
+    break;
+  }
+
+  return tvb_captured_length(tvb);
+}
+
+static int
+dissect_vendor_wifi_alliance_anqp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+  guint8 subtype;
+  int offset = 0;
+  tvbuff_t *subtvb;
+
+  subtype = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_ieee80211_anqp_wfa_subtype, tvb, offset, 1, ENC_NA);
+  offset += 1;
+
+  subtvb = tvb_new_subset_remaining(tvb, offset);
+  if (!dissector_try_uint_new(wifi_alliance_anqp_info_table, subtype, subtvb, pinfo, tree, FALSE, data))
+      call_data_dissector(subtvb, pinfo, tree);
+
+  return tvb_captured_length(tvb);
+}
+
+
+static int
+dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data);
+
+static int
+dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
+                  gboolean request, int idx)
+{
+  guint16     id, len;
+  guint32     oui;
+  proto_item *item, *item_len;
+  tvbuff_t *vendor_tvb;
+  anqp_info_dissector_data_t anqp_info;
+
+  item = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info_id,
+                             tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  id = tvb_get_letohs(tvb, offset);
+  if (id != ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST) {
+    if (idx == 0) {
+      proto_item_append_text(tree, " - %s",
+                             val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)"));
+      col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+                      val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)"));
+    } else if (idx == 1) {
+      proto_item_append_text(tree, ", ..");
+      col_append_str(pinfo->cinfo, COL_INFO, ", ..");
+    }
+  }
+  tree = proto_item_add_subtree(item, ett_gas_anqp);
+  offset += 2;
+  item_len = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info_length,
+                      tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  len = tvb_get_letohs(tvb, offset);
+  offset += 2;
+  if (tvb_reported_length_remaining(tvb, offset) < len) {
+    expert_add_info(pinfo, tree, &ei_ieee80211_ff_anqp_info_length);
+    return 4 + len;
+  }
+  switch (id)
+  {
+  case ANQP_INFO_ANQP_QUERY_LIST:
+    dissect_anqp_query_list(tree, tvb, pinfo, offset, offset + len);
+    break;
+  case ANQP_INFO_ANQP_CAPAB_LIST:
+    dissect_anqp_capab_list(tree, tvb, pinfo, offset, offset + len);
+    break;
   case ANQP_INFO_VENUE_NAME_INFO:
     dissect_venue_name_info(tree, tvb, pinfo, offset, offset + len);
     break;
@@ -6886,9 +8017,6 @@ dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse
   case ANQP_INFO_DOMAIN_NAME_LIST:
     dissect_domain_name_list(tree, tvb, offset, offset + len);
     break;
-  case ANQP_INFO_VENUE_URL:
-    dissect_venue_url_list(tree, tvb, offset, offset + len);
-    break;
   case ANQP_INFO_NEIGHBOR_REPORT:
     {
       tvbuff_t *report_tvb;
@@ -6912,6 +8040,12 @@ dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse
       proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info, tvb, offset, len, ENC_NA);
     }
     break;
+  case ANQP_INFO_VENUE_URL:
+    dissect_anqp_venue_url(tree, tvb, offset, offset + len);
+    break;
+  case ANQP_INFO_ADVICE_OF_CHARGE:
+    dissect_hs20_anqp_advice_of_charge(tree, tvb, offset, offset + len);
+    break;
   default:
     proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info,
                         tvb, offset, len, ENC_NA);
@@ -7196,6 +8330,7 @@ add_ff_cap_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int off
     proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_capture,
                                     ett_cap_tree, ieee80211_ap_fields,
                                     ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_AP_KEY, GINT_TO_POINTER(TRUE));
   } else {
     /* This is a STA */
     proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_capture,
@@ -8805,24 +9940,78 @@ wnm_tfs_resp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
   return offset - start;
 }
 
-static guint
-wnm_notification_req(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
-{
-  int start = offset;
-  offset += add_ff_dialog_token(tree, tvb, pinfo, offset);
-  offset += add_ff_wnm_notification_type(tree, tvb, pinfo, offset);
-  return offset - start;
-}
+#define AP_DESCRIPTOR            0
+#define FIRMWARE_VERSION_CURRENT 1
+#define FIRMWARE_VERSION_NEW     2
 
 static guint
-add_ff_action_wnm(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
-{
-  guint8 code;
-  guint  start = offset;
+dissect_wnm_subelements(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_,
+  int offset) {
+  guint sub_elt_id = tvb_get_guint8(tvb, offset);
+  guint sub_elt_len = tvb_get_guint8(tvb, offset + 1);
 
-  offset += add_ff_category_code(tree, tvb, pinfo, offset);
-  code    = tvb_get_guint8(tvb, offset);
-  offset += add_ff_wnm_action_code(tree, tvb, pinfo, offset);
+  proto_tree_add_item(tree, hf_ieee80211_wnm_sub_elt_id, tvb, offset, 1, ENC_NA);
+  offset++;
+
+  proto_tree_add_item(tree, hf_ieee80211_wnm_sub_elt_len, tvb, offset, 1, ENC_NA);
+  offset++;
+
+  switch (sub_elt_id) {
+  case AP_DESCRIPTOR:
+
+    break;
+
+  case FIRMWARE_VERSION_CURRENT:
+
+    break;
+
+  case FIRMWARE_VERSION_NEW:
+
+    break;
+  }
+
+  offset += sub_elt_len;
+  return offset;
+}
+
+static guint
+wnm_notification_req(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
+{
+  int start = offset;
+  int len = 0;
+  guint8 wnm_type = 0;
+  guint8 wnm_sub_elt = 0;
+
+  offset += add_ff_dialog_token(tree, tvb, pinfo, offset);
+  wnm_type = tvb_get_guint8(tvb, offset);
+  offset += add_ff_wnm_notification_type(tree, tvb, pinfo, offset);
+  len = tvb_reported_length_remaining(tvb, offset);
+
+  if (wnm_type == 0) {
+    int offset_end = offset + len;
+    while (offset < offset_end) {
+      int start_offset = offset;
+      proto_tree *wnm_list = NULL;
+      proto_item *wnm_item = NULL;
+      wnm_list = proto_tree_add_subtree_format(tree, tvb, offset, -1,
+                        ett_wnm_notif_subelt,
+                        &wnm_item, "WNM Subelement %d", wnm_sub_elt);
+      offset = dissect_wnm_subelements(wnm_list, tvb, pinfo, offset);
+      proto_item_set_len(wnm_item, offset - start_offset);
+    }
+  }
+  return offset - start;
+}
+
+static guint
+add_ff_action_wnm(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
+{
+  guint8 code;
+  guint  start = offset;
+
+  offset += add_ff_category_code(tree, tvb, pinfo, offset);
+  code    = tvb_get_guint8(tvb, offset);
+  offset += add_ff_wnm_action_code(tree, tvb, pinfo, offset);
   switch (code) {
   case WNM_BSS_TRANS_MGMT_QUERY:
     offset += wnm_bss_trans_mgmt_query(tree, tvb, pinfo, offset);
@@ -9793,7 +10982,7 @@ add_ff_vht_compressed_beamforming_report(proto_tree *tree, tvbuff_t *tvb, packet
     gint8 snr;
     char edge_sign;
 
-    snr = (gint8) tvb_get_guint8(tvb, offset);
+    snr = tvb_get_gint8(tvb, offset);
 
     switch(snr) {
       case -128:
@@ -9956,7 +11145,7 @@ add_ff_action_vht(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse
   guint start = offset;
   guint8 vht_action, field_val;
   guint64 msa_value;
-  guint64 upa_value, temp_val;
+  guint64 upa_value;
   int m;
   proto_item *ti;
   proto_tree *ti_tree;
@@ -9997,20 +11186,18 @@ add_ff_action_vht(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse
       upa_value = tvb_get_letoh64(tvb, offset);
       for (m = 0; m < 32; m++) {
           if (msa_value & (G_GINT64_CONSTANT(1) << m)) {
-              temp_val = ((guint64) pow(4,m))*3;
-              field_val = (guint8) ((upa_value & temp_val) >> m*2);
+              field_val = (guint8) ((upa_value >> m*2) & 0x3);
               proto_tree_add_uint_format(upa_tree, hf_ieee80211_vht_user_position_field,
                                                tvb, offset + (m/4), 1, field_val, "User Position in Group ID %d: %u", m, field_val);
-              }
+          }
       }
       upa_value = tvb_get_letoh64(tvb, offset+8);
       for (m = 0; m < 32; m++) {
           if (msa_value & (G_GINT64_CONSTANT(1) << (32+m))) {
-              temp_val = ((guint64) pow(4,m))*3;
-              field_val = (guint8) ((upa_value & temp_val) >> m*2);
+              field_val = (guint8) ((upa_value >> m*2) & 0x3);
               proto_tree_add_uint_format(upa_tree, hf_ieee80211_vht_user_position_field,
                                                tvb, (offset + 8) + (m/4), 1, field_val, "User Position in Group ID %d: %u", m, field_val);
-              }
+          }
       }
       offset += tvb_reported_length_remaining(tvb, offset);
     }
@@ -10030,6 +11217,71 @@ add_ff_action_vht(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse
   return offset - start;
 }
 
+#define HE_COMPRESSED_BEAMFORMING_AND_CQI 0
+#define HE_QUIET_TIME_PERIOD              1
+
+static const value_string he_action_vals[] = {
+  { HE_COMPRESSED_BEAMFORMING_AND_CQI, "HE Compressed Beamforming And CQI" },
+  { HE_QUIET_TIME_PERIOD,              "Quiet Time Period" },
+  { 0, NULL }
+};
+
+static guint
+add_ff_he_action(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_,
+  int offset)
+{
+  guint8 he_action = tvb_get_guint8(tvb, offset);
+
+  proto_tree_add_uint_format(tree, hf_ieee80211_ff_he_action, tvb, offset, 1,
+                      he_action, "%s", val_to_str(he_action, he_action_vals,
+                                                "Reserved"));
+  return 1;
+}
+
+static const int *he_mimo_control_headers[] = {
+  &hf_he_mimo_control_nc_index,
+  &hf_he_mimo_control_nr_index,
+  &hf_he_mimo_control_bw,
+  &hf_he_mimo_control_grouping,
+  &hf_he_mimo_control_codebook_info,
+  &hf_he_mimo_control_feedback_type,
+  &hf_he_mimo_control_remaining_feedback_segs,
+  &hf_he_mimo_control_first_feedback_seg,
+  &hf_he_mimo_control_ru_start_index,
+  &hf_he_mimo_control_ru_end_index,
+  &hf_he_mimo_control_sounding_dialog_token_num,
+  &hf_he_mimo_control_reserved,
+  NULL
+};
+
+static guint
+add_ff_action_he(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
+{
+  guint start = offset;
+  guint8 he_action;
+
+  offset += add_ff_category_code(tree, tvb, pinfo, offset);
+
+  he_action = tvb_get_guint8(tvb, offset);
+  offset += add_ff_he_action(tree, tvb, pinfo, offset);
+
+  switch (he_action) {
+  case HE_COMPRESSED_BEAMFORMING_AND_CQI:
+    proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_mimo_control_field, ett_he_mimo_control,
+                        he_mimo_control_headers, ENC_LITTLE_ENDIAN,
+                        BMT_NO_APPEND);
+    offset += 5;
+    break;
+  case HE_QUIET_TIME_PERIOD:
+
+    break;
+  default:
+    break;
+  }
+  return offset - start;
+}
+
 static guint
 add_ff_action_fst(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
 {
@@ -10225,6 +11477,8 @@ add_ff_action(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset)
     return add_ff_action_unprotected_dmg(tree, tvb, pinfo, offset);
   case CAT_VHT: /* 21 */
     return add_ff_action_vht(tree, tvb, pinfo, offset);
+  case CAT_HE:
+    return add_ff_action_he(tree, tvb, pinfo, offset);
 /*  case CAT_VENDOR_SPECIFIC_PROTECTED:   Vendor Specific Protected Category - 126 */
 /*    return add_ff_action_vendor_specific_protected(tree, tvb, pinfo, offset);*/
   case CAT_VENDOR_SPECIFIC:  /* Vendor Specific Protected Category - 127 */
@@ -10878,6 +12132,185 @@ dissect_vendor_ie_wpawme(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, in
   return offset;
 }
 
+/*
+ * Dissect a group data cipher suite which consists of an OUI and a one-byte
+ * selector: IEEE802.11 2012 Figure 9-256.
+ *
+ * Accepts a two entry array of header fields so we can use this elsewhere.
+ */
+static int dissect_group_data_cipher_suite(tvbuff_t *tvb, packet_info *pinfo _U_,
+    proto_tree *tree, int offset, int *hf_array, gint ett_val, char *label)
+{
+  proto_tree *gdcs_tree = NULL;
+
+  gdcs_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_val, NULL,
+                         label);
+  proto_tree_add_item(gdcs_tree, hf_array[0], tvb, offset, 3, ENC_BIG_ENDIAN);
+  offset += 3;
+  proto_tree_add_item(gdcs_tree, hf_array[1], tvb, offset, 1, ENC_NA);
+  offset += 1;
+
+  return offset;
+}
+
+/*
+ * Handle the HS 2.0 rev 2 OSU Server-only authenticated layer 2 Encryption
+ * Network element. This is almost the same format as the RSNE so maybe some
+ * common code can be used.
+ */
+static int
+dissect_hs20_osen(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
+{
+  int offset = 0;
+  int hf_array[2] = { hf_group_data_cipher_suite_oui,
+                       hf_group_data_cipher_suite_type };
+  proto_tree *pwc_list = NULL;
+  proto_item *pwcsi = NULL;
+  guint16 pwc_count = 0, pwc_index = 0;
+  guint16 akms_count = 0, akms_index = 0;
+  static const int *osen_rsn_cap[] = {
+    &hf_osen_rsn_cap_preauth,
+    &hf_osen_rsn_cap_no_pairwise,
+    &hf_osen_rsn_cap_ptksa_replay_counter,
+    &hf_osen_rsn_cap_gtksa_replay_counter,
+    &hf_osen_rsn_cap_mfpr,
+    &hf_osen_rsn_cap_mfpc,
+    &hf_osen_rsn_cap_jmr,
+    &hf_osen_rsn_cap_peerkey,
+    &hf_osen_rsn_spp_a_msdu_capable,
+    &hf_osen_rsn_spp_a_msdu_required,
+    &hf_osen_rsn_pbac,
+    &hf_osen_extended_key_id_iaf,
+    &hf_osen_reserved,
+    NULL
+  };
+  guint16 pmkid_count = 0, pmkid_index = 0;
+  int gmcs_array[2] = { hf_osen_group_management_cipher_suite_oui,
+                        hf_osen_group_management_cipher_suite_type };
+
+  offset = dissect_group_data_cipher_suite(tvb, pinfo, tree, offset, hf_array,
+                        ett_osen_group_data_cipher_suite,
+                        "OSEN Group Data Cipher Suite");
+
+  pwc_count = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(tree, hf_osen_pcs_count, tvb, offset,
+                      2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  if (pwc_count > 0) {
+    int start_offset = offset;
+    pwc_list = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_osen_pairwise_cipher_suites, &pwcsi,
+                        "OSEN Pairwise Cipher Suite List");
+
+    while (pwc_count > 0) {
+      if (tvb_reported_length_remaining(tvb, offset) >= 4) {
+        int hf_array2[2] = { hf_osen_pairwise_cipher_suite_oui,
+                            hf_osen_pairwise_cipher_suite_type };
+        char label[128];
+
+        g_snprintf(label, sizeof(label), "OSEN Pairwise Cipher Suite %d", pwc_index);
+        offset = dissect_group_data_cipher_suite(tvb, pinfo, pwc_list,
+                        offset, hf_array2, ett_osen_pairwise_cipher_suite,
+                        label);
+        pwc_index++;
+        pwc_count--;
+      } else {
+        /* Insert the remaining? Expert Info? */
+        offset += tvb_reported_length_remaining(tvb, offset);
+        break;
+      }
+    }
+
+    proto_item_set_len(pwcsi, offset - start_offset);
+  }
+
+  if (tvb_reported_length_remaining(tvb, offset) == 0) {
+    return tvb_captured_length(tvb);
+  }
+
+  /* Now handle the AKM Suites */
+  akms_count = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(tree, hf_osen_akm_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  if (akms_count > 0) {
+    int start_offset = offset;
+    proto_tree *akm_list = NULL;
+    proto_item *akmcsi = NULL;
+
+    akm_list = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_osen_akm_cipher_suites, &akmcsi,
+                        "OSEN AKM Cipher Suite List");
+
+    while (akms_count > 0) {
+      if (tvb_reported_length_remaining(tvb, offset) >= 4) {
+        int hf_array3[2] = { hf_osen_akm_cipher_suite_oui,
+                             hf_osen_akm_cipher_suite_type};
+        char label[128];
+
+        g_snprintf(label, sizeof(label), "OSEN AKM Cipher Suite %d", akms_index);
+        offset = dissect_group_data_cipher_suite(tvb, pinfo, akm_list,
+                          offset, hf_array3, ett_osen_akm_cipher_suite,
+                          label);
+        akms_index++;
+        akms_count--;
+      } else {
+        /* Expert info? */
+        offset += tvb_reported_length_remaining(tvb, offset);
+        break;
+      }
+    }
+    proto_item_set_len(akmcsi, offset - start_offset);
+  }
+
+  /* Any more? */
+  if (tvb_reported_length_remaining(tvb, offset) == 0) {
+    return tvb_captured_length(tvb);
+  }
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_osen_rsn_cap_flags,
+                                    ett_osen_rsn_cap_tree, osen_rsn_cap,
+                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+
+  /* Any more? */
+  if (tvb_reported_length_remaining(tvb, offset) == 0) {
+    return tvb_captured_length(tvb);
+  }
+
+  pmkid_count = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(tree, hf_osen_pmkid_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  if (pmkid_count > 0) {
+    proto_tree *pmkid_list = NULL;
+
+    pmkid_list = proto_tree_add_subtree(tree, tvb, offset, pmkid_count * 16,
+                                ett_osen_pmkid_list, NULL,
+                                "OSEN PKMID List");
+
+    while (pmkid_count > 0) {
+      proto_tree *pmkid_tree = NULL;
+
+      pmkid_tree = proto_tree_add_subtree_format(pmkid_list, tvb,offset, 16,
+                                ett_osen_pmkid_tree, NULL,
+                                "OSEN PKMID %d", pmkid_index);
+      proto_tree_add_item(pmkid_tree, hf_osen_pmkid, tvb, offset, 16,
+                          ENC_NA);
+      offset += 16;
+      pmkid_index++;
+      pmkid_count--;
+    }
+  }
+
+  offset = dissect_group_data_cipher_suite(tvb, pinfo, tree, offset, gmcs_array,
+                        ett_osen_group_management_cipher_suite,
+                        "OSEN Group Management Cipher Suite");
+
+  return offset;
+}
+
 static const value_string hs20_indication_release_number_vals[] = {
   { 0, "Release 1" },
   { 1, "Release 2" },
@@ -10891,12 +12324,31 @@ dissect_hs20_indication(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
     &hf_hs20_indication_dgaf_disabled,
     &hf_hs20_indication_pps_mo_id_present,
     &hf_hs20_indication_anqp_domain_id_present,
+    &hf_hs20_reserved,
     &hf_hs20_indication_release_number,
     NULL
   };
+  int len = tvb_captured_length(tvb);
+  int offset = 0;
+  guint8 indic = tvb_get_guint8(tvb, offset);
 
-  proto_tree_add_bitmask_list(tree, tvb, 0, 1, ieee80211_hs20_indication, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_hs20_indication,
+                              ENC_NA);
+  offset++;
+
+  if (len >= 3 && (indic & 0x02)) { /* Contains a PPS MO ID field ... display it. */
+      proto_tree_add_item(tree, hf_hs20_indication_pps_mo_id, tvb, offset,
+                          2, ENC_LITTLE_ENDIAN);
+      offset += 2;
+  }
+
+  if ((len >= (offset + 2)) && (indic & 0x04)) {
+     proto_tree_add_item(tree, hf_hs20_indication_anqp_domain_id, tvb, offset,
+                         2, ENC_LITTLE_ENDIAN);
+     offset += 2;
+  }
+
+  return offset;
 }
 
 static void
@@ -11303,6 +12755,53 @@ dissect_vendor_ie_mikrotik(proto_item *item _U_, proto_tree *ietree,
   }
 }
 
+#define AEROHIVE_HOSTNAME 33
+static const value_string ieee80211_vs_aerohive_type_vals[] = {
+  { AEROHIVE_HOSTNAME, "Host Name"},
+  { 0,                 NULL }
+};
+static void
+dissect_vendor_ie_aerohive(proto_item *item _U_, proto_tree *ietree,
+                          tvbuff_t *tvb, int offset, guint32 tag_len, packet_info *pinfo)
+{
+  guint32 type, length;
+  const guint8* hostname;
+  proto_item *ti_len;
+
+  /* VS OUI Type */
+  type = tvb_get_guint8(tvb, offset);
+  offset += 1;
+  tag_len -= 1;
+
+  switch(type){
+    case AEROHIVE_HOSTNAME: /* Unknown (2 bytes) + Host Name Length (1 byte) + Host Name */
+
+      proto_item_append_text(item, ": %s", val_to_str_const(type, ieee80211_vs_aerohive_type_vals, "Unknown"));
+
+      proto_tree_add_item(ietree, hf_ieee80211_vs_aerohive_unknown, tvb, offset, 2, ENC_NA);
+      offset += 2;
+      tag_len -= 2;
+
+      ti_len = proto_tree_add_item_ret_uint(ietree, hf_ieee80211_vs_aerohive_hostname_length, tvb, offset, 1, ENC_NA, &length);
+      offset += 1;
+      tag_len -= 1;
+
+      if (tag_len < length) {
+        expert_add_info_format(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length < Host Name Length");
+        length = tag_len;
+      }
+
+      proto_tree_add_item_ret_string(ietree, hf_ieee80211_vs_aerohive_hostname, tvb, offset, length, ENC_ASCII|ENC_NA, wmem_packet_scope(), &hostname);
+      proto_item_append_text(item, " (%s)", hostname);
+
+    break;
+
+    default:
+      proto_tree_add_item(ietree, hf_ieee80211_vs_aerohive_data, tvb, offset, tag_len, ENC_NA);
+    break;
+  }
+}
+
 enum vs_nintendo_type {
   NINTENDO_SERVICES = 0x11,
   NINTENDO_CONSOLEID = 0xF0
@@ -11498,7 +12997,10 @@ dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
   return offset;
 }
 
-/* 7.3.2.25 RSN information element */
+/*
+ * 7.3.2.25 RSNE information element. Common format with OSEN except the
+ * verison... should refactor
+ */
 static int
 dissect_rsn_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
                int offset, guint32 tag_len, association_sanity_check_t *association_sanity_check)
@@ -11788,6 +13290,18 @@ dissect_extended_capabilities_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
     NULL
   };
 
+  static const int *ieee80211_tag_extended_capabilities_byte10[] = {
+    &hf_ieee80211_tag_extended_capabilities_b72,
+    &hf_ieee80211_tag_extended_capabilities_b73,
+    &hf_ieee80211_tag_extended_capabilities_b74,
+    &hf_ieee80211_tag_extended_capabilities_b75,
+    &hf_ieee80211_tag_extended_capabilities_b76,
+    &hf_ieee80211_tag_extended_capabilities_b77,
+    &hf_ieee80211_tag_extended_capabilities_b78,
+    &hf_ieee80211_tag_extended_capabilities_b79,
+    NULL
+  };
+
   if (tag_len < 1)
   {
     expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag length %u too short, must be greater than 0", tag_len);
@@ -11884,6 +13398,17 @@ dissect_extended_capabilities_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
     offset += 2;
   }
 
+  if (offset >= tag_len) {
+    return offset;
+  }
+
+  /* Extended Capability octet 10 */
+  ti_ex_cap = proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_tag_extended_capabilities,
+                                    ett_tag_ex_cap10, ieee80211_tag_extended_capabilities_byte10,
+                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  proto_item_append_text(ti_ex_cap, " (octet 10)");
+  offset += 1;
+
   return offset;
 }
 static int
@@ -11920,7 +13445,7 @@ dissect_vht_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset)
   mcs_tree = proto_item_add_subtree(ti, ett_vht_mcsset_tree);
 
   /* B0 - B15 */
-  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_vht_mcsset_rx_mcs_map,
+  proto_tree_add_bitmask_with_flags(mcs_tree, tvb, offset, hf_ieee80211_vht_mcsset_rx_mcs_map,
                                     ett_vht_rx_mcsbit_tree, ieee80211_vht_mcsset_rx_max_mcs,
                                     ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
   offset += 2;
@@ -11928,18 +13453,24 @@ dissect_vht_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset)
   /* B16 - B28 13 bits*/
   proto_tree_add_item(mcs_tree, hf_ieee80211_vht_mcsset_rx_highest_long_gi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
 
-  /* B29 - B31 2 reserved bits*/
+  /* B29 - B31 Max NSTS Total*/
+  proto_tree_add_item(mcs_tree, hf_ieee80211_vht_mcsset_max_nsts_total, tvb, offset, 2, ENC_LITTLE_ENDIAN);
 
   offset += 2;
 
   /* B32 - B47 */
-  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_vht_mcsset_tx_mcs_map,
+  proto_tree_add_bitmask_with_flags(mcs_tree, tvb, offset, hf_ieee80211_vht_mcsset_tx_mcs_map,
                                     ett_vht_tx_mcsbit_tree, ieee80211_vht_mcsset_tx_max_mcs,
                                     ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
   offset += 2;
   /* B48 - B60 13 bits */
   proto_tree_add_item(mcs_tree, hf_ieee80211_vht_mcsset_tx_highest_long_gi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  /* B61 - B63 2 reserved bits*/
+
+  /* B61 */
+  proto_tree_add_item(mcs_tree, hf_ieee80211_vht_mcsset_ext_nss_bw_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+  /* B62 - B63 2 reserved bits*/
+  proto_tree_add_item(mcs_tree, hf_ieee80211_vht_mcsset_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
 
   offset += 2;
   return offset;
@@ -12807,31 +14338,31 @@ dissect_ht_info_ie_1_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
   int offset = 0;
   static const int *ieee80211_ht_info1_field[] = {
     &hf_ieee80211_ht_info_secondary_channel_offset,
-    &hf_ieee80211_ht_info_channel_width,
+    &hf_ieee80211_ht_info_sta_channel_width,
     &hf_ieee80211_ht_info_rifs_mode,
-    &hf_ieee80211_ht_info_psmp_stas_only,
-    &hf_ieee80211_ht_info_service_interval_granularity,
+    &hf_ieee80211_ht_info_reserved_b4_b7,
     NULL
   };
 
   static const int *ieee80211_ht_info2_field[] = {
-    &hf_ieee80211_ht_info_operating_mode,
+    &hf_ieee80211_ht_info_protection,
     &hf_ieee80211_ht_info_non_greenfield_sta_present,
-    &hf_ieee80211_ht_info_transmit_burst_limit,
+    &hf_ieee80211_ht_info_reserved_b11,
     &hf_ieee80211_ht_info_obss_non_ht_stas_present,
-    &hf_ieee80211_ht_info_reserved_1,
+    &hf_ieee80211_ht_info_channel_center_freq_seg_2,
+    &hf_ieee80211_ht_info_reserved_b21_b23,
     NULL
   };
 
   static const int *ieee80211_ht_info3_field[] = {
-    &hf_ieee80211_ht_info_reserved_2,
+    &hf_ieee80211_ht_info_reserved_b24_b29,
     &hf_ieee80211_ht_info_dual_beacon,
     &hf_ieee80211_ht_info_dual_cts_protection,
     &hf_ieee80211_ht_info_secondary_beacon,
     &hf_ieee80211_ht_info_lsig_txop_protection_full_support,
     &hf_ieee80211_ht_info_pco_active,
     &hf_ieee80211_ht_info_pco_phase,
-    &hf_ieee80211_ht_info_reserved_3,
+    &hf_ieee80211_ht_info_reserved_b36_b39,
     NULL
   };
 
@@ -13937,6 +15468,12 @@ dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
  * and that everything except for "AC Constraint" and "RDG/More Cowbell^W
  * PPDU" is different for the VHT version.
  *
+ *  802.11ax changes the meaning of the first two bits:
+ *
+ *     B0 = 0         means High Throughput
+ *     B0 = 1, B1 = 0 means Very High Throughput
+ *     B0 = 1, B1 = 1 means High Efficiency
+ *
  * I read the second clause of 8.2.4.1.10 "Order field", as modified by
  * 802.11ac, as meaning that, for QoS data and management frames, the
  * Order field will *only* be set to 1 for HT or VHT frames, and therefore
@@ -13949,81 +15486,362 @@ dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
  * the packet.  Omnipeek, which also appeared to have no clue that it was
  * an HT or VHT field - it called it an 802.11b frame - *did* dissect the
  * HT Control field.)
+ *
+ * 802.11ax changes the reserved bit to differentiate between the HE version
+ * and the VHT version, and adds different types of Aggregate Control info.
  */
+#define A_CONTROL_UMRS 0
+#define A_CONTROL_OM   1
+#define A_CONTROL_HLA  2
+#define A_CONTROL_BSR  3
+#define A_CONTROL_UPH  4
+#define A_CONTROL_BQR  5
+#define A_CONTROL_CCI  6
+#define A_CONTROL_BQR_REV 0x0A
+
+static const value_string a_control_control_id_vals[] = {
+  { A_CONTROL_UMRS, "UL MU response scheduling" },
+  { A_CONTROL_OM,   "Operating mode" },
+  { A_CONTROL_HLA,  "HE link adaptation" },
+  { A_CONTROL_BSR,  "Buffer status report" },
+  { A_CONTROL_UPH,  "UL power headroom" },
+  { A_CONTROL_BQR,  "Bandwidth query report" },
+  { A_CONTROL_CCI,  "Command Control Indication" },
+  { A_CONTROL_BQR_REV, "Bandwidth Query Report (reversed bits)" },
+  { 0, NULL }
+};
 
+/*
+ * Print the UL target RSSI field as per the spec.
+ *  0->30 map to -90 to -30 dBm.
+ *  31 maps to Max ransmit power
+ */
 static void
-dissect_ht_control(proto_tree *tree, tvbuff_t *tvb, int offset)
+ul_target_rssi_base_custom(gchar *result, guint32 target_rssi)
 {
-  proto_item *ti;
-  proto_tree *htc_tree, *lac_subtree, *mfb_subtree;
-  guint32 htc;
+  if (target_rssi <= 30) {
+    g_snprintf(result, ITEM_LABEL_LENGTH, "%ddBm", -90 + (2 * target_rssi));
+  } else if (target_rssi == 31) {
+    g_snprintf(result, ITEM_LABEL_LENGTH, "Max transmit power");
+  }
+}
 
-  htc = tvb_get_letohl(tvb, offset);
+static void
+dissect_a_control_umrs(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *umrs_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x03FFFFFF;
 
-  ti = proto_tree_add_item(tree, hf_ieee80211_htc, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  htc_tree = proto_item_add_subtree(ti, ett_htc_tree);
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  umrs_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_umrs_control,
+                                NULL, "UMRS Control: 0x%08x", the_bits);
+
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_umrs_he_tb_ppdu_len, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_umrs_ru_allocation, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_dl_tx_power, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_ul_target_rssi, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_ul_mcs, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(umrs_tree, hf_ieee80211_he_ul_reserved, tvb,
+                        offset, 4, the_bits);
+}
 
-  /* Check the HT vs. VHT bit. */
-  proto_tree_add_item(htc_tree, hf_ieee80211_htc_vht, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  if (htc & HTC_VHT) {
-    /* VHT */
-    proto_tree_add_item(htc_tree, hf_ieee80211_htc_mrq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    if (!(htc & HTC_UNSOLICITED_MFB)) {
-      if (htc & HTC_MRQ) {
-        proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      } else {
-        proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi_stbc_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      }
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_mfsi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    } else {
-      if (!HTC_NO_FEEDBACK_PRESENT(HTC_MFB(htc))) {
-        proto_tree_add_item(htc_tree, hf_ieee80211_htc_compressed_msi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-        proto_tree_add_item(htc_tree, hf_ieee80211_htc_ppdu_stbc_encoded, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      } else {
-        proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi_stbc_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      }
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_gid_l, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    }
-    ti = proto_tree_add_item(htc_tree, hf_ieee80211_htc_mfb, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    mfb_subtree = proto_item_add_subtree(ti, ett_mfb_subtree);
-    proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_num_sts, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_vht_mcs, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_bw, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    /* This should be converted to dB by adding 22  */
-    proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_snr, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    if (!HTC_NO_FEEDBACK_PRESENT(HTC_MFB(htc))) {
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_gid_h, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_coding_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_fb_tx_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    } else {
-      proto_tree_add_item(htc_tree, hf_ieee80211_htc_reserved3, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    }
-    proto_tree_add_item(htc_tree, hf_ieee80211_htc_unsolicited_mfb, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  } else {
-    /* Start: Link Adaptation Control */
-    ti = proto_tree_add_item(htc_tree, hf_ieee80211_htc_lac, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    lac_subtree = proto_item_add_subtree(ti, ett_lac_subtree);
-    proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_trq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+static void
+dissect_a_control_om(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *om_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000000FFF;
 
-    if (HTC_IS_ASELI(htc)) {
-      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_aseli, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    } else {
-      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_mrq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-      if (HTC_LAC_MAI_MRQ(htc)) {
-        proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_msi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-      } else {
-        proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-      }
-    }
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  om_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_om_control,
+                                NULL, "OM Control: 0x%04x", the_bits);
+
+  proto_tree_add_uint(om_tree, hf_ieee80211_he_om_rx_nss, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(om_tree, hf_ieee80211_he_om_channel_width, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(om_tree, hf_ieee80211_he_om_ul_mu_disable, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(om_tree, hf_ieee80211_he_om_tx_nsts, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(om_tree, hf_ieee80211_he_om_reserved, tvb,
+                        offset, 4, the_bits);
+}
 
-    proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mfsi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+static void
+dissect_a_control_hla(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *hla_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x03FFFFFF;
 
-    if (HTC_IS_ASELI(htc)) {
-      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_asel_command, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_asel_data, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    } else {
-      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mfb, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    }
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  hla_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_hla_control,
+                                NULL, "HLA Control: 0x%08x", the_bits);
+
+  proto_tree_add_boolean(hla_tree, hf_ieee80211_he_hla_unsolicited_mfb, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(hla_tree, hf_ieee80211_he_hla_mrq, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_nss, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_he_mcs, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(hla_tree, hf_ieee80211_he_hla_dcm, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_ru, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_bw, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_msi_ppdu_type, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(hla_tree, hf_ieee80211_he_hla_tx_bf, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(hla_tree, hf_ieee80211_he_hla_reserved, tvb,
+                        offset, 4, the_bits);
+}
+
+static void
+dissect_a_control_bsr(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *bsr_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x03FFFFFF;
+
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  bsr_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_buffer_status_report,
+                                NULL, "Buffer Status Report: 0x%08x", the_bits);
+
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_aci_bitmap, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_delta_tid, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_aci_high, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_scaling_factor, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_queue_size_high, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bsr_tree, hf_ieee80211_he_bsr_queue_size_all, tvb,
+                        offset, 4, the_bits);
+}
+
+static void
+dissect_a_control_uph(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *uph_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000000FF;
+
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  uph_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_control_uph,
+                                NULL, "UPH Control: 0x%02x", the_bits);
+
+  proto_tree_add_uint(uph_tree, hf_ieee80211_he_uph_ul_power_headroom, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(uph_tree, hf_ieee80211_he_uph_ul_min_transmit_power_flag,
+                        tvb, offset, 4, the_bits);
+  proto_tree_add_uint(uph_tree, hf_ieee80211_he_uph_reserved,
+                        tvb, offset, 4, the_bits);
+}
+
+static void
+dissect_a_control_bqr(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *bqr_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000003FF;
+
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  bqr_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_bqr_control,
+                                NULL, "BQR Control: 0x%04x", the_bits);
+
+  proto_tree_add_uint(bqr_tree, hf_ieee80211_he_btc_avail_chan, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(bqr_tree, hf_ieee80211_he_btc_reserved, tvb,
+                        offset, 4, the_bits);
+}
+
+static void
+dissect_a_control_cci(proto_tree *tree, tvbuff_t *tvb, int offset,
+  guint32 bits _U_, guint32 start_bit)
+{
+  proto_tree *cci_tree = NULL;
+  guint the_bits = (tvb_get_letohl(tvb, offset) >> start_bit) & 0x000000FF;
+
+  /*
+   * We isolated the bits and moved them to the bottom ... so display them
+   */
+  cci_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+                                ett_ieee80211_control_cci,
+                                NULL, "Command Control Indication: 0x%02x", the_bits);
+
+  proto_tree_add_boolean(cci_tree, hf_ieee80211_he_cci_ac_constraint, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(cci_tree, hf_ieee80211_he_cci_rdg_more_ppdu, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_boolean(cci_tree, hf_ieee80211_he_cci_sr_ppdu_indic, tvb,
+                        offset, 4, the_bits);
+  proto_tree_add_uint(cci_tree, hf_ieee80211_he_cci_reserved, tvb,
+                        offset, 4, the_bits);
+}
+
+static void
+dissect_ht_control(proto_tree *tree, tvbuff_t *tvb, int offset)
+{
+  proto_item *ti;
+  proto_tree *htc_tree, *lac_subtree, *mfb_subtree;
+  guint32 htc;
+
+  htc = tvb_get_letohl(tvb, offset);
+
+  ti = proto_tree_add_item(tree, hf_ieee80211_htc, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  htc_tree = proto_item_add_subtree(ti, ett_htc_tree);
+
+  /* Check the HT vs. VHT bit. */
+  proto_tree_add_item(htc_tree, hf_ieee80211_htc_vht, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  if (htc & HTC_VHT) {
+    /* VHT or HE */
+    proto_tree_add_item(htc_tree, hf_ieee80211_htc_he, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    if (htc & HTC_HE) {
+      /*
+       * We have a 30-bit field, of which the first is a 4-bit Control ID which
+       * determines how the rest is handled. There can be multiple fields.
+       */
+      proto_tree *a_control_tree = NULL;
+      proto_item *pi = NULL;
+      guint8 start_bit_offset = 2;
+
+      a_control_tree = proto_tree_add_subtree_format(htc_tree, tvb, offset, 4,
+                                ett_htc_he_a_control, NULL,
+                                "Aggregate Control: 0x%0x", htc >> 2);
+      while (start_bit_offset < 32) {
+        guint8 control_id = (htc >> start_bit_offset) & 0x0F;
+        start_bit_offset += 4;
+        pi = proto_tree_add_uint(a_control_tree, hf_ieee80211_htc_he_ctrl_id,
+                        tvb, offset, 4, control_id);
+        proto_item_append_text(pi, ": %s",
+                        val_to_str(control_id, a_control_control_id_vals,
+                                        "Reserved (%u)"));
+        switch (control_id) {
+        case A_CONTROL_UMRS:
+          dissect_a_control_umrs(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 26;
+          break;
+        case A_CONTROL_OM:
+          dissect_a_control_om(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 12;
+          break;
+        case A_CONTROL_HLA:
+          dissect_a_control_hla(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 26;
+          break;
+        case A_CONTROL_BSR:
+          dissect_a_control_bsr(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 26;
+          break;
+        case A_CONTROL_UPH:
+          dissect_a_control_uph(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 8;
+          break;
+        case A_CONTROL_BQR:
+        case A_CONTROL_BQR_REV:
+          dissect_a_control_bqr(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 10;
+          break;
+        case A_CONTROL_CCI:
+          dissect_a_control_cci(a_control_tree, tvb, offset, htc, start_bit_offset);
+          start_bit_offset += 8;
+          break;
+        default:
+          /* Add an expert info ... */
+          start_bit_offset += 32;  /* Abandon */
+          break;
+        }
+      }
+    } else {
+      proto_tree_add_item(htc_tree, hf_ieee80211_htc_mrq, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      if (!(htc & HTC_UNSOLICITED_MFB)) {
+        if (htc & HTC_MRQ) {
+          proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        } else {
+          proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi_stbc_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        }
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_mfsi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      } else {
+        if (!HTC_NO_FEEDBACK_PRESENT(HTC_MFB(htc))) {
+          proto_tree_add_item(htc_tree, hf_ieee80211_htc_compressed_msi, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+          proto_tree_add_item(htc_tree, hf_ieee80211_htc_ppdu_stbc_encoded, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        } else {
+          proto_tree_add_item(htc_tree, hf_ieee80211_htc_msi_stbc_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        }
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_gid_l, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      }
+      ti = proto_tree_add_item(htc_tree, hf_ieee80211_htc_mfb, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      mfb_subtree = proto_item_add_subtree(ti, ett_mfb_subtree);
+      proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_num_sts, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_vht_mcs, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_bw, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      /* This should be converted to dB by adding 22  */
+      proto_tree_add_item(mfb_subtree, hf_ieee80211_htc_snr, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      if (!HTC_NO_FEEDBACK_PRESENT(HTC_MFB(htc))) {
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_gid_h, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_coding_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_fb_tx_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      } else {
+        proto_tree_add_item(htc_tree, hf_ieee80211_htc_reserved3, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+      }
+      proto_tree_add_item(htc_tree, hf_ieee80211_htc_unsolicited_mfb, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    }
+  } else {
+    /* Start: Link Adaptation Control */
+    ti = proto_tree_add_item(htc_tree, hf_ieee80211_htc_ht_lac, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    lac_subtree = proto_item_add_subtree(ti, ett_lac_subtree);
+    proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_trq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+    if (HTC_IS_ASELI(htc)) {
+      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_aseli, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    } else {
+      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_mrq, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+      if (HTC_LAC_MAI_MRQ(htc)) {
+        proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_msi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+      } else {
+        proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mai_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+      }
+    }
+
+    proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mfsi, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+    if (HTC_IS_ASELI(htc)) {
+      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_asel_command, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_asel_data, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    } else {
+      proto_tree_add_item(lac_subtree, hf_ieee80211_htc_lac_mfb, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    }
     /* End: Link Adaptation Control */
 
     proto_tree_add_item(htc_tree, hf_ieee80211_htc_cal_pos, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -14034,8 +15852,14 @@ dissect_ht_control(proto_tree *tree, tvbuff_t *tvb, int offset)
     proto_tree_add_item(htc_tree, hf_ieee80211_htc_ndp_announcement, tvb, offset, 4, ENC_LITTLE_ENDIAN);
     proto_tree_add_item(htc_tree, hf_ieee80211_htc_reserved2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   }
-  proto_tree_add_item(htc_tree, hf_ieee80211_htc_ac_constraint, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(htc_tree, hf_ieee80211_htc_rdg_more_ppdu, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+
+  /*
+   * These bits are part of the Aggregate Control field for 802.11ax
+   */
+  if (!(htc & HTC_HE)) {
+    proto_tree_add_item(htc_tree, hf_ieee80211_htc_ac_constraint, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(htc_tree, hf_ieee80211_htc_rdg_more_ppdu, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  }
 
   /* offset += 2; */
 }
@@ -14224,7 +16048,7 @@ dissect_qos_map_set(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
   left = tag_len - 16;
   while (left >= 2) {
     dscp_item = proto_tree_add_item(tree, hf_ieee80211_tag_qos_map_set_dscp_exc,
-                                    tvb, offset, 2, ENC_NA);
+                                    tvb, offset, 2, ENC_LITTLE_ENDIAN);
     dscp_tree = proto_item_add_subtree(dscp_item, ett_qos_map_set_exception);
 
     item = proto_tree_add_item(dscp_tree,
@@ -14327,8 +16151,9 @@ dissect_roaming_consortium(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
   }
 
   if (oi2_len > 0) {
-    proto_tree_add_item(tree, hf_ieee80211_tag_roaming_consortium_oi2,
+    item = proto_tree_add_item(tree, hf_ieee80211_tag_roaming_consortium_oi2,
                         tvb, offset, oi2_len, ENC_NA);
+    add_manuf(item, tvb, offset);
     offset += oi2_len;
   }
 
@@ -14400,7 +16225,7 @@ ieee80211_tag_ssid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
    * assume that it's *valid* ASCII or *valid* UTF-8.)
    *
    * So we really should extract it as an array of ssid_len bytes,
-   * pass those bytes to AirPDcapSetLastSSID(), and:
+   * pass those bytes to Dot11DecryptSetLastSSID(), and:
    *
    *    If the UTF-8 SSID subfield isn't set to 1, put the SSID in
    *    as an ENC_ASCII string;
@@ -14434,7 +16259,7 @@ ieee80211_tag_ssid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
    */
   ssid = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, ssid_len, ENC_ASCII);
   if (ssid_len == (gint)tag_len) {
-    AirPDcapSetLastSSID(&airpdcap_ctx, (CHAR *) ssid, ssid_len);
+    Dot11DecryptSetLastSSID(&dot11decrypt_ctx, (CHAR *) ssid, ssid_len);
   }
   proto_tree_add_item(tree, hf_ieee80211_tag_ssid, tvb, offset, tag_len,
                       ENC_ASCII|ENC_NA);
@@ -14460,6 +16285,14 @@ ieee80211_tag_ssid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
   return offset + tag_len;
 }
 
+static void
+dissect_he_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset, int len);
+
+static void
+dissect_he_operation(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset, int len _U_);
+
 static int
 dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
@@ -14501,6 +16334,8 @@ dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
   proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_high_throughput, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_very_high_throughput, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_ftm, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_high_efficiency, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_er_bss, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   proto_tree_add_item(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   offset += 4;
 
@@ -14562,6 +16397,16 @@ dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
                             ett_tag_neighbor_report_sub_tag_tree, NULL, "Secondary Channel Offset");
         dissect_secondary_channel_offset_ie(sub_tag_tvb, pinfo, sub_tag_tree, data);
         break;
+      case NR_SUB_ID_HE_CAPABILITIES:
+        sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length,
+                            ett_tag_neighbor_report_sub_tag_tree, NULL, "HE Capabilities");
+        dissect_he_capabilities(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length);
+        break;
+      case NR_SUB_ID_HE_OPERATION:
+        sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length,
+                            ett_tag_neighbor_report_sub_tag_tree, NULL, "HE Operation");
+        dissect_he_operation(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length);
+        break;
       case NR_SUB_ID_VENDOR_SPECIFIC:
       default:
         break;
@@ -14825,12 +16670,12 @@ ieee80211_tag_country_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
 
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_fnm_fcn,
                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
-      proto_item_append_text(sub_item, ": First Channel Number: %d",
+      proto_item_append_text(sub_item, ": First Channel Number: %u",
                              tvb_get_guint8(tvb, offset));
       offset += 1;
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_fnm_nc,
                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
-      proto_item_append_text(sub_item, ", Number of Channels: %d",
+      proto_item_append_text(sub_item, ", Number of Channels: %u",
                              tvb_get_guint8(tvb, offset));
       offset += 1;
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_fnm_mtpl,
@@ -14847,17 +16692,17 @@ ieee80211_tag_country_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_rrc_oei,
                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
       proto_item_append_text(sub_item,
-                             ": Operating Extension Identifier: %d",
+                             ": Operating Extension Identifier: %u",
                              tvb_get_guint8(tvb, offset));
       offset += 1;
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_rrc_oc,
                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
-      proto_item_append_text(sub_item, ", Operating Class: %d",
+      proto_item_append_text(sub_item, ", Operating Class: %u",
                              tvb_get_guint8(tvb, offset));
       offset += 1;
       proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_rrc_cc,
                           tvb, offset, 1, ENC_LITTLE_ENDIAN);
-      proto_item_append_text(sub_item, ", Coverage Class: %d",
+      proto_item_append_text(sub_item, ", Coverage Class: %u",
                              tvb_get_guint8(tvb, offset));
       offset += 1;
     }
@@ -15377,11 +17222,11 @@ ieee80211_tag_power_capability(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
   }
 
   proto_tree_add_item(tree, hf_ieee80211_tag_power_capability_min, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  proto_item_append_text(field_data->item_tag, " Min: %d", tvb_get_guint8(tvb, offset));
+  proto_item_append_text(field_data->item_tag, " Min: %d", tvb_get_gint8(tvb, offset));
   offset += 1;
 
   proto_tree_add_item(tree, hf_ieee80211_tag_power_capability_max, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  proto_item_append_text(field_data->item_tag, ", Max :%d", tvb_get_guint8(tvb, offset));
+  proto_item_append_text(field_data->item_tag, ", Max: %d", tvb_get_gint8(tvb, offset));
   return tvb_captured_length(tvb);
 }
 
@@ -16345,6 +18190,9 @@ ieee80211_tag_vendor_specific_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
     case OUI_ZEBRA_EXTREME:
       dissect_vendor_ie_extreme(field_data->item_tag, tree, tvb, offset, tag_vs_len, pinfo);
       break;
+    case OUI_AEROHIVE:
+      dissect_vendor_ie_aerohive(field_data->item_tag, tree, tvb, offset, tag_vs_len, pinfo);
+      break;
     default:
       proto_tree_add_item(tree, hf_ieee80211_tag_vendor_data, tvb, offset, tag_vs_len, ENC_NA);
       break;
@@ -16353,12169 +18201,15399 @@ ieee80211_tag_vendor_specific_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
   return tvb_captured_length(tvb);
 }
 
-static int
-ieee80211_tag_element_id_extension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
-{
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
-  guint32 ext_tag_len;
-  guint8 ext_tag_no;
+#define HE_HTC_HE_SUPPORT                0x00000001
+#define HE_FRAGMENTATION_SUPPORT         0x00000018
+#define HE_ALL_ACK_SUPPORT               0x00000200
+#define HE_UMRS_SUPPORT                  0x00000400
+#define HE_BSR_SUPPORT                   0x00000800
 
-  if (tag_len < 1)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 1", tag_len);
-    return tvb_captured_length(tvb);
-  }
-  ext_tag_no = tvb_get_guint8(tvb, offset++);
-  ext_tag_len = tag_len - 1;
+static const val64_string he_fragmentation_support_vals[] = {
+  { 0, "No support for dynamic fragmentation" },
+  { 1, "Support for dynamic fragments in MPDUs or S-MPDUs" },
+  { 2, "Support for dynamic fragments in MPDUs and S-MPDUs and up to 1 dyn frag in MSDUs..." },
+  { 3, "Support for all types of dynamic fragments" },
+  { 0, NULL }
+};
 
-  switch (ext_tag_no) {
-    case ETAG_FILS_SESSION:
-      proto_tree_add_item(tree, hf_ieee80211_fils_session, tvb, offset, ext_tag_len, ENC_NA);
-      break;
-    case ETAG_FILS_WRAPPED_DATA:
-      proto_tree_add_item(tree, hf_ieee80211_fils_wrapped_data, tvb, offset, ext_tag_len, ENC_NA);
-      break;
-    case ETAG_FILS_NONCE:
-      proto_tree_add_item(tree, hf_ieee80211_fils_nonce, tvb, offset, ext_tag_len, ENC_NA);
-      break;
-    default:
-      break;
-  }
+static const val64_string he_minimum_fragmentation_size_vals[] = {
+  { 0, "No restriction on minimum payload size" },
+  { 1, "Minimum payload size of 128 bytes" },
+  { 2, "Minimum payload size of 256 bytes" },
+  { 3, "Minimum payload size of 512 bytes" },
+  { 0, NULL }
+};
 
-  return tvb_captured_length(tvb);
-}
+static const val64_string he_link_adaptation_support_vals[] = {
+  { 0, "No feedback if the STA does not provide HE MFB" },
+  { 1, "Reserved" },
+  { 2, "Unsolicited if the STA can receive and provide only unsolicited HE MFB" },
+  { 3, "Both" },
+  { 0, NULL }
+};
 
-/* Conflict: WAPI Vs. IEEE */
-static int
-ieee80211_tag_ie_68_conflict(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
-{
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  if (tag_len >= 20) { /* It Might be WAPI*/
-    dissect_wapi_param_set(tvb, pinfo, tree, 0, tag_len, field_data->item_tag_length, field_data->item_tag, field_data->ftype);
-  }
-  else { /* BSS AC Access Delay (68) */
-     dissect_bss_ac_access_delay_ie(tvb, pinfo, tree, 0, tag_len, field_data->item_tag_length);
-  }
-  return tvb_captured_length(tvb);
-}
+static const int *he_mac_headers[] = {
+  &hf_he_htc_he_support,                           /* 0 */
+  &hf_he_twt_requester_support,                    /* 1 */
+  &hf_he_twt_responder_support,                    /* 2 */
+  &hf_he_fragmentation_support,                    /* 3 */
+  &hf_he_max_number_fragmented_msdus,              /* 4 */
+  &hf_he_min_fragment_size,                        /* 5 */
+  &hf_he_trigger_frame_mac_padding_dur,            /* 6 */
+  &hf_he_multi_tid_aggregation_support,            /* 7 */
+  &hf_he_he_link_adaptation_support,               /* 8 */
+  &hf_he_all_ack_support,                          /* 9 */
+  &hf_he_umrs_support,                             /* 10 */
+  &hf_he_bsr_support,                              /* 11 */
+  &hf_he_broadcast_twt_support,                    /* 12 */
+  &hf_he_32_bit_ba_bitmap_support,                 /* 13 */
+  &hf_he_mu_cascading_support,                     /* 14 */
+  &hf_he_ack_enabled_aggregation_support,          /* 15 */
+  &hf_he_group_addressed_multi_sta_blkack_support, /* 16 */
+  &hf_he_om_control_support,                       /* 17 */
+  &hf_he_ofdma_ra_support,                         /* 18 */
+  &hf_he_max_a_mpdu_length_exponent,               /* 19 */
+  &hf_he_a_msdu_fragmentation_support,             /* 20 */
+  &hf_he_flexible_twt_schedule_support,            /* 21 */
+  &hf_he_rx_control_frame_to_multibss,             /* 22 */
+  &hf_he_bsrp_bqrp_a_mpdu_aggregation,             /* 23 */
+  &hf_he_qtp_support,                              /* 24 */
+  &hf_he_bqr_support,                              /* 25 */
+  &hf_he_sr_responder,                             /* 26 */
+  &hf_he_ndp_feedback_report_support,              /* 27 */
+  &hf_he_ops_support,                              /* 28 */
+  &hf_he_a_msdu_in_a_mpdu_support,                 /* 29 */
+  &hf_he_reserved,                                 /* 30 */
+  NULL
+};
 
-static int
-ieee80211_tag_mesh_peering_mgmt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  int tag_len = tvb_reported_length(tvb);
-  int offset = 0;
+static const int *he_phy_first_byte_headers[] = {
+  &hf_he_phy_cap_dual_band_support,
+  NULL,
+};
 
-  proto_tree_add_item(tree, hf_ieee80211_mesh_peering_proto, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_mesh_peering_local_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  switch (tvb_get_guint8(tvb, 1))
-  {                                         /* Self-protected action field */
-    case SELFPROT_ACTION_MESH_PEERING_OPEN:
-      break;
+static const int *he_phy_channel_width_set_headers[] _U_ = {
+  &hf_he_40mhz_channel_2_4ghz,
+  &hf_he_40_and_80_mhz_5ghz,
+  &hf_he_160_mhz_5ghz,
+  &hf_he_160_80_plus_80_mhz_5ghz,
+  &hf_he_242_tone_rus_in_2_4ghz,
+  &hf_he_242_tone_rus_in_5ghz,
+  &hf_he_chan_width_reserved,
+  NULL
+};
 
-    case SELFPROT_ACTION_MESH_PEERING_CONFIRM:
-      proto_tree_add_item(tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-      break;
+static const int *he_phy_b8_to_b23_headers[] = {
+  &hf_he_phy_cap_punctured_preamble_rx,
+  &hf_he_phy_cap_device_class,
+  &hf_he_phy_cap_ldpc_coding_in_payload,
+  &hf_he_phy_cap_he_su_ppdu_1x_he_ltf_08us,
+  &hf_he_phy_cap_midamble_rx_max_nsts,
+  &hf_he_phy_cap_ndp_with_4x_he_ltf_32us,
+  &hf_he_phy_cap_stbc_tx_lt_80mhz,
+  &hf_he_phy_cap_stbc_rx_lt_80mhz,
+  &hf_he_phy_cap_doppler_tx,
+  &hf_he_phy_cap_doppler_rx,
+  &hf_he_phy_cap_full_bw_ul_mu_mimo,
+  &hf_he_phy_cap_partial_bw_ul_mu_mimo,
+  NULL
+};
 
-    case SELFPROT_ACTION_MESH_PEERING_CLOSE:
-      if ((tag_len == 8) || (tag_len == 24))
-      {
-        proto_tree_add_item(tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-        offset += 2;
-      }
-      add_ff_reason_code(tree, tvb, pinfo, offset);
-      break;
+static const int *he_phy_b24_to_b39_headers[] = {
+  &hf_he_phy_cap_dcm_max_constellation_tx,
+  &hf_he_phy_cap_dcm_max_nss_tx,
+  &hf_he_phy_cap_dcm_max_constellation_rx,
+  &hf_he_phy_cap_dcm_max_nss_rx,
+  &hf_he_phy_cap_rx_he_muppdu_from_non_ap,
+  &hf_he_phy_cap_su_beamformer,
+  &hf_he_phy_cap_su_beamformee,
+  &hf_he_phy_cap_mu_beamformer,
+  &hf_he_phy_cap_beamformer_sts_lte_80mhz,
+  &hf_he_phy_cap_beamformer_sts_gt_80mhz,
+  NULL
+};
 
-      /* unexpected values */
-    default:
-      proto_tree_add_expert(tree, pinfo, &ei_ieee80211_mesh_peering_unexpected , tvb, offset, tag_len);
-      break;
-  }
-  if (tag_len - offset == 16)
-  {
-    proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid, tvb, offset, 16, ENC_NA);
-  }
-  return tvb_captured_length(tvb);
-}
+static const int *he_phy_b40_to_b55_headers[] = {
+  &hf_he_phy_cap_number_of_sounding_dims_lte_80,
+  &hf_he_phy_cap_number_of_sounding_dims_gt_80,
+  &hf_he_phy_cap_ng_eq_16_su_fb,
+  &hf_he_phy_cap_ng_eq_16_mu_fb,
+  &hf_he_phy_cap_codebook_size_eq_4_2_fb,
+  &hf_he_phy_cap_codebook_size_eq_7_5_fb,
+  &hf_he_phy_cap_triggered_su_beamforming_fb,
+  &hf_he_phy_cap_triggered_mu_beamforming_fb,
+  &hf_he_phy_cap_triggered_cqi_fb,
+  &hf_he_phy_cap_partial_bw_extended_range,
+  &hf_he_phy_cap_partial_bw_dl_mu_mimo,
+  &hf_he_phy_cap_ppe_threshold_present,
+  NULL
+};
 
-static int
-ieee80211_tag_mesh_configuration(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
-{
-  int offset = 0;
-  proto_item *item;
-  proto_tree *subtree;
-  static const int *ieee80211_mesh_config_cap[] = {
-    &hf_ieee80211_mesh_config_cap_accepting,
-    &hf_ieee80211_mesh_config_cap_mcca_support,
-    &hf_ieee80211_mesh_config_cap_mcca_enabled,
-    &hf_ieee80211_mesh_config_cap_forwarding,
-    &hf_ieee80211_mesh_config_cap_mbca_enabled,
-    &hf_ieee80211_mesh_config_cap_tbtt_adjusting,
-    &hf_ieee80211_mesh_config_cap_power_save_level,
-    NULL
-  };
+static const int *he_phy_b56_to_b71_headers[] = {
+  &hf_he_phy_cap_srp_based_sr_support,
+  &hf_he_phy_cap_power_boost_factor_ar_support,
+  &hf_he_phy_cap_he_su_ppdu_etc_gi,
+  &hf_he_phy_cap_max_nc,
+  &hf_he_phy_cap_stbc_tx_gt_80_mhz,
+  &hf_he_phy_cap_stbc_rx_gt_80_mhz,
+  &hf_he_phy_cap_he_er_su_ppdu_4xxx_gi,
+  &hf_he_phy_cap_20mhz_in_40mhz_24ghz_band,
+  &hf_he_phy_cap_20mhz_in_160_80p80_ppdu,
+  &hf_he_phy_cap_80mgz_in_160_80p80_ppdu,
+  &hf_he_phy_cap_he_er_su_ppdu_1xxx_gi,
+  &hf_he_phy_cap_midamble_rx_2x_xxx_ltf,
+  &hf_he_phy_cap_b70_b71_reserved,
+  NULL
+};
 
-  proto_tree_add_item(tree, hf_ieee80211_mesh_config_path_sel_protocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(tree, hf_ieee80211_mesh_config_path_sel_metric, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(tree, hf_ieee80211_mesh_config_congestion_control, tvb, offset + 2, 1, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(tree, hf_ieee80211_mesh_config_sync_method, tvb, offset + 3, 1, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(tree, hf_ieee80211_mesh_config_auth_protocol, tvb, offset + 4, 1, ENC_LITTLE_ENDIAN);
-  item = proto_tree_add_item(tree, hf_ieee80211_mesh_config_formation_info, tvb, offset + 5, 1, ENC_LITTLE_ENDIAN);
-  subtree = proto_item_add_subtree(item, ett_mesh_formation_info_tree);
-  proto_tree_add_item(subtree, hf_ieee80211_mesh_form_info_num_of_peerings, tvb, offset + 5, 1, ENC_LITTLE_ENDIAN);
+static const int *he_mcs_map_80_rx_headers [] = {
+  &hf_he_mcs_max_he_mcs_80_rx_1_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_2_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_3_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_4_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_5_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_6_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_7_ss,
+  &hf_he_mcs_max_he_mcs_80_rx_8_ss,
+  NULL
+};
 
-  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_mesh_config_capability,
-                                    ett_mesh_config_cap_tree, ieee80211_mesh_config_cap,
-                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
-  return tvb_captured_length(tvb);
-}
+static const int *he_mcs_map_80_tx_headers [] = {
+  &hf_he_mcs_max_he_mcs_80_tx_1_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_2_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_3_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_4_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_5_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_6_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_7_ss,
+  &hf_he_mcs_max_he_mcs_80_tx_8_ss,
+  NULL
+};
 
-static int
-ieee80211_tag_mesh_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
-{
-  int offset = 0;
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int tag_len = tvb_reported_length(tvb);
-  const guint8* mesh_id;
+static const int *he_mcs_map_80p80_rx_headers [] = {
+  &hf_he_mcs_max_he_mcs_80p80_rx_1_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_2_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_3_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_4_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_5_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_6_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_7_ss,
+  &hf_he_mcs_max_he_mcs_80p80_rx_8_ss,
+  NULL
+};
 
-  proto_tree_add_item_ret_string(tree, hf_ieee80211_mesh_id, tvb, offset, tag_len, ENC_ASCII|ENC_NA, wmem_packet_scope(), &mesh_id);
-  if (tag_len > 0) {
-    gchar* s = format_text(wmem_packet_scope(), mesh_id, tag_len);
-    col_append_fstr(pinfo->cinfo, COL_INFO, ", MESHID=%s", s);
-    proto_item_append_text(field_data->item_tag, ": %s", s);
-  }
-  /* Make sure dissector is accepted */
-  return ((tag_len > 0) ? tag_len : 1);
-}
+static const int *he_mcs_map_80p80_tx_headers [] = {
+  &hf_he_mcs_max_he_mcs_80p80_tx_1_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_2_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_3_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_4_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_5_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_6_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_7_ss,
+  &hf_he_mcs_max_he_mcs_80p80_tx_8_ss,
+  NULL
+};
 
-static int
-ieee80211_tag_mesh_preq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
-{
-  int offset = 0;
+static const int *he_mcs_map_160_rx_headers [] = {
+  &hf_he_mcs_max_he_mcs_160_rx_1_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_2_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_3_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_4_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_5_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_6_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_7_ss,
+  &hf_he_mcs_max_he_mcs_160_rx_8_ss,
+  NULL
+};
 
-  guint32 flags;
-  guint8 targs, i;
+static const int *he_mcs_map_160_tx_headers [] = {
+  &hf_he_mcs_max_he_mcs_160_tx_1_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_2_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_3_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_4_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_5_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_6_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_7_ss,
+  &hf_he_mcs_max_he_mcs_160_tx_8_ss,
+  NULL
+};
 
-  proto_tree_add_item_ret_uint(tree, hf_ieee80211_ff_hwmp_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN, &flags);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_pdid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sta, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
+static const value_string ru_alloc_vals[] = {
+  { 0, "242" },
+  { 1, "484" },
+  { 2, "996" },
+  { 3, "2x996" },
+  { 0, NULL }
+};
 
-  if (flags & (1<<6)) {
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_ext, tvb, offset, 6, ENC_NA);
-    offset += 6;
-  }
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  targs = tvb_get_guint8(tvb, offset);
-  offset += 1;
-  for (i = 0; i < targs; i++) {
-    const int * targ_flags[] = {
-      &hf_ieee80211_ff_hwmp_targ_to_flags,
-      &hf_ieee80211_ff_hwmp_targ_usn_flags,
-      NULL
-    };
+static const value_string constellation_vals[] = {
+  { 0, "BPSK" },
+  { 1, "QPSK" },
+  { 2, "16-QAM" },
+  { 3, "64-QAM" },
+  { 4, "256-QAM" },
+  { 5, "1024-QAM" },
+  { 6, "Reserved" },
+  { 7, "None" },
+  { 0, NULL }
+};
 
-    proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_hwmp_targ_flags,
-                                   ett_hwmp_targ_flags_tree, targ_flags, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+#define HE_CHANNEL_WIDTH_SET_B2 0x04
+#define HE_CHANNEL_WIDTH_SET_B3 0x08
 
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
-    offset += 6;
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    offset += 4;
+static void
+dissect_he_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset, int len)
+{
+  guint64 he_mac_caps = tvb_get_letoh40(tvb, offset);
+  guint8 phy_channel_width_set = 0;
+  proto_tree *phy_cap_tree = NULL;
+  guint he_mcs_and_nss_len = 4;
+  proto_tree *sup_he_mcs_and_nss_tree = NULL;
+  proto_tree *rx_tx_he_mcs_map_80 = NULL;
+  proto_tree *rx_tx_he_mcs_map_160 = NULL;
+  proto_tree *rx_tx_he_mcs_map_80_80 = NULL;
+
+  /* Change some header fields depending on HE_HTC_HE_SUPPORT and FRAGMENTATION */
+  if (!(he_mac_caps & HE_HTC_HE_SUPPORT)) {
+    he_mac_headers[8] = &hf_he_reserved_bits_15_16;
+    he_mac_headers[10] = &hf_he_reserved_bit_18;
+    he_mac_headers[11] = &hf_he_reserved_bit_19;
+    he_mac_headers[17] = &hf_he_reserved_bit_25;
+  }
+  if (!(he_mac_caps & HE_FRAGMENTATION_SUPPORT)) {
+    he_mac_headers[4] = &hf_he_reserved_bits_5_7;
+    he_mac_headers[5] = &hf_he_reserved_bits_8_9;
+  }
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_he_mac_capabilities,
+                        ett_he_mac_capabilities, he_mac_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 5;
+
+  /* Get and isolate the phy channel witdth set */
+  phy_channel_width_set = tvb_get_guint8(tvb, offset) >> 1;
+  phy_cap_tree = proto_tree_add_subtree(tree, tvb, offset, 9, ett_he_phy_capabilities,
+                        NULL,
+                        "HE Phy Capabilities Information");
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_dual_band_support, ett_he_phy_cap_first_byte,
+                        he_phy_first_byte_headers, ENC_NA, BMT_NO_APPEND);
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_chan_width_set,  ett_he_phy_cap_chan_width_set,
+                        he_phy_channel_width_set_headers, ENC_NA, BMT_NO_APPEND);
+  offset++;
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_b8_to_b23, ett_he_phy_cap_b8_to_b23,
+                        he_phy_b8_to_b23_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_b24_to_b39, ett_he_phy_cap_b24_to_b39,
+                        he_phy_b24_to_b39_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_b40_to_b55, ett_he_phy_cap_b40_to_b55,
+                        he_phy_b40_to_b55_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+  proto_tree_add_bitmask_with_flags(phy_cap_tree, tvb, offset,
+                        hf_he_phy_b56_to_b71, ett_he_phy_cap_b56_to_b71,
+                        he_phy_b56_to_b71_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+
+  /* Need the length first */
+  if (phy_channel_width_set & HE_CHANNEL_WIDTH_SET_B2)
+    he_mcs_and_nss_len += 4;
+
+  if (phy_channel_width_set & HE_CHANNEL_WIDTH_SET_B3)
+    he_mcs_and_nss_len += 4;
+
+  sup_he_mcs_and_nss_tree = proto_tree_add_subtree(tree, tvb, offset,
+                        he_mcs_and_nss_len, ett_he_mcs_and_nss_set, NULL,
+                        "Tx Rx HE-MCS NSS Support");
+  rx_tx_he_mcs_map_80 = proto_tree_add_subtree(sup_he_mcs_and_nss_tree, tvb,
+                        offset, 4, ett_he_rx_tx_he_mcs_map_lte_80, NULL,
+                        "Rx and Tx MCS Maps <= 80 MHz");
+  proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_80, tvb, offset,
+                        hf_he_rx_he_mcs_map_lte_80,
+                        ett_he_rx_mcs_map_lte_80, he_mcs_map_80_rx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+  proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_80, tvb, offset,
+                        hf_he_tx_he_mcs_map_lte_80,
+                        ett_he_tx_mcs_map_lte_80, he_mcs_map_80_tx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+
+  if (phy_channel_width_set & HE_CHANNEL_WIDTH_SET_B2) {
+    rx_tx_he_mcs_map_160 = proto_tree_add_subtree(sup_he_mcs_and_nss_tree,
+                        tvb, offset, 4, ett_he_rx_tx_he_mcs_map_160, NULL,
+                        "Rx and Tx MCS Maps 160 MHz");
+    proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_160, tvb, offset,
+                        hf_he_rx_he_mcs_map_160,
+                        ett_he_rx_mcs_map_160, he_mcs_map_160_rx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 2;
+    proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_160, tvb, offset,
+                        hf_he_tx_he_mcs_map_160,
+                        ett_he_tx_mcs_map_160, he_mcs_map_160_tx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 2;
   }
 
-  return tvb_captured_length(tvb);
-}
+  if (phy_channel_width_set & HE_CHANNEL_WIDTH_SET_B3) {
+    rx_tx_he_mcs_map_80_80 = proto_tree_add_subtree(sup_he_mcs_and_nss_tree,
+                        tvb, offset, 4, ett_he_rx_tx_he_mcs_map_80_80, NULL,
+                        "Rx and Tx MCS Maps 80+80 MHz");
+    proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_80_80, tvb, offset,
+                        hf_he_rx_he_mcs_map_80_80,
+                        ett_he_rx_mcs_map_80_80, he_mcs_map_80p80_rx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 2;
+    proto_tree_add_bitmask_with_flags(rx_tx_he_mcs_map_80_80, tvb, offset,
+                        hf_he_tx_he_mcs_map_80_80,
+                        ett_he_tx_mcs_map_80_80, he_mcs_map_80p80_tx_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 2;
+  }
 
-static int
-ieee80211_tag_mesh_prep(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
-{
-  int offset = 0;
+  if (offset < len) {
+    guint8 ppe_thresholds_field = tvb_get_guint8(tvb, offset);
+    guint8 nss_count = ppe_thresholds_field & 0x07, nss_index = 0;
+    guint8 ru_index_bitmask = (ppe_thresholds_field >> 3) & 0x0F;
+    proto_tree *ppe_tree = NULL;
+    int i = 0;
+    int bit_offset = 7;  /* How many bits we are into the bytes */
+
+    ppe_tree = proto_tree_add_subtree(tree, tvb, offset, len - offset + 1,
+                        ett_he_ppe_threshold, NULL,
+                        "PPE Thresholds");
+    proto_tree_add_item(ppe_tree, hf_he_ppe_thresholds_nss, tvb, offset,
+                        1, ENC_NA);
+    proto_tree_add_item(ppe_tree, hf_he_ppe_thresholds_ru_index_bitmask, tvb,
+                        offset, 1, ENC_NA);
 
-  guint32 flags;
-  proto_tree_add_item_ret_uint(tree, hf_ieee80211_ff_hwmp_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN, &flags);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset , 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  if (flags & (1<<6)) {
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_ext, tvb, offset, 6, ENC_NA);
-    offset += 6;
+    /*
+     * Now, for each of the nss values, add a sub-tree with its thresholds.
+     * The actual count is one more than the number in the first three bits.
+     */
+    while (nss_index < nss_count + 1) {
+      int start_offset = 0;
+      proto_tree *nss_tree = NULL;
+      proto_item *nssti = NULL;
+      guint8 l_ru_bitmask = ru_index_bitmask;
+
+      nss_tree = proto_tree_add_subtree_format(ppe_tree, tvb, offset, -1,
+                        ett_he_ppe_nss, &nssti, "NSS %d", nss_index);
+      start_offset = offset;
+
+      for (i = 0; i < 4; i++) {
+        if (l_ru_bitmask & 0x01) {
+          int bits_avail = 8 - bit_offset, bits_needed = 6 - bits_avail;
+          guint8 the_bits = 0;
+          int ru_start_offset = offset;
+          proto_tree *ru_alloc_tree = NULL;
+          proto_item *rualti = NULL;
+
+          ru_alloc_tree = proto_tree_add_subtree_format(nss_tree, tvb, offset,
+                                        -1, ett_he_ppe_ru_alloc, &rualti,
+                                        "RU allocation: %s",
+                                        val_to_str(i, ru_alloc_vals, "Unk"));
+
+          /*
+           * Assemble the bits we require ... we need 6, or 2x3
+           */
+          if (bits_avail >= 6) { /* We can use the current byte */
+            the_bits = (tvb_get_guint8(tvb, offset) >> bit_offset) & 0x3F;
+          } else { /* We need two adjacent bytes */
+            the_bits = (tvb_get_guint8(tvb, offset) >> bit_offset);
+            offset++;
+            the_bits = the_bits |
+                        ((tvb_get_guint8(tvb, offset) &
+                                ((1 << bits_needed) - 1)) << bits_avail);
+          }
+          /*
+           * Now we have two three bit fields, use them.
+           */
+          proto_tree_add_uint(ru_alloc_tree, hf_he_ppe_ppet16, tvb, ru_start_offset,
+                              offset - ru_start_offset + 1, the_bits & 0x07);
+          proto_tree_add_uint(ru_alloc_tree, hf_he_ppe_ppet8, tvb, ru_start_offset,
+                              offset - ru_start_offset + 1, the_bits >> 3);
+
+          bit_offset = (bit_offset + 6) % 8;
+          proto_item_set_len(rualti, offset - ru_start_offset + 1);
+        }
+        l_ru_bitmask = l_ru_bitmask >> 1;
+      }
+
+
+      proto_item_set_len(nssti, offset - start_offset);
+      nss_index++;
+    }
   }
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sta, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+
+  /* Add an Expert Info about extra bytes ... */
+
 }
 
-static int
-ieee80211_tag_mesh_perr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  int offset = 0;
-  guint8 targs, i;
+static const int *he_operation_headers[] = {
+  &hf_he_operation_bss_color,
+  &hf_he_operation_default_pe_duration,
+  &hf_he_operation_twt_required,
+  &hf_he_operation_txop_duration_rts_threshold,
+  &hf_he_operation_partial_bss_color,
+  &hf_he_operation_vht_operation_information_present,
+  &hf_he_operation_reserved_b22_b27,
+  &hf_he_operation_multiple_bssid_ap,
+  &hf_he_operation_txbssid_indicator,
+  &hf_he_operation_bss_color_disabled,
+  &hf_he_operation_reserved_b31,
+  NULL
+};
 
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  targs = tvb_get_guint8(tvb, offset);
-  offset += 1;
-  for (i = 0; i < targs; i++) {
-    guint8 flags = tvb_get_guint8(tvb, offset);
+static const value_string he_mcs_map_vals[] = {
+  { 0, "Support for HE-MCS 0-7" },
+  { 1, "Support for HE-MCS 0-9" },
+  { 2, "Support for HE-MCS 0-11" },
+  { 3, "Not supported for HE PPDUs" },
+  { 0, NULL }
+};
 
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
-    offset += 6;
-    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+static const int *he_basic_he_mcs_header[] = {
+  &hf_he_oper_max_he_mcs_for_1_ss,
+  &hf_he_oper_max_he_mcs_for_2_ss,
+  &hf_he_oper_max_he_mcs_for_3_ss,
+  &hf_he_oper_max_he_mcs_for_4_ss,
+  &hf_he_oper_max_he_mcs_for_5_ss,
+  &hf_he_oper_max_he_mcs_for_6_ss,
+  &hf_he_oper_max_he_mcs_for_7_ss,
+  &hf_he_oper_max_he_mcs_for_8_ss,
+  NULL
+};
+
+#define VHT_OPERATION_INFORMATION_PRESENT 0x00200000
+#define MULTIPLE_BSSID_AP                 0x10000000
+
+static const value_string channel_width_vals[] = {
+  { 0, "20 MHz or 40 MHz BSS Bandwidth" },
+  { 1, "80 MHz, 160 MHz or 80+80 MHz BSS Bandwidth" },
+  { 2, "160 MHz BSS Bandwidth (deprecated)" },
+  { 3, "Non-contiguous 80+80 MHz BSS Bandwidth (deprecated)" },
+  { 0, NULL }
+};
+
+static void
+dissect_he_operation(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset, int len _U_)
+{
+    guint32 op_params = tvb_get_letohl(tvb, offset);
+
+    proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_he_operation_parameter, ett_he_operation_params,
+                        he_operation_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
     offset += 4;
-    if (flags & (1<<6)) {
-      proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_ext, tvb, offset, 6, ENC_NA);
-      offset += 6;
+
+    proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_he_operation_basic_mcs, ett_he_oper_basic_mcs,
+                        he_basic_he_mcs_header, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 2;
+
+    if (op_params & VHT_OPERATION_INFORMATION_PRESENT) {
+      proto_tree *vht_op_info = NULL;
+      proto_item *pi = NULL;
+
+      vht_op_info = proto_tree_add_subtree(tree, tvb, offset, 3,
+                        ett_he_operation_vht_op_info, NULL,
+                        "VHT Operation Information");
+      pi = proto_tree_add_item(vht_op_info, hf_he_operation_channel_width, tvb,
+                        offset, 1, ENC_NA);
+      proto_item_append_text(pi, ": %s",
+                        val_to_str(tvb_get_guint8(tvb, offset),
+                                channel_width_vals,
+                                "Reserved %u"));
+      offset++;
+
+      proto_tree_add_item(vht_op_info, hf_he_operation_channel_center_freq_0,
+                        tvb, offset, 1, ENC_NA);
+      offset++;
+
+      proto_tree_add_item(vht_op_info, hf_he_operation_channel_center_freq_1,
+                        tvb, offset, 1, ENC_NA);
+      offset++;
+    }
+
+    if (op_params & MULTIPLE_BSSID_AP) {
+      proto_tree_add_item(tree, hf_he_operation_max_bssid_indicator, tvb, offset,
+                        1, ENC_NA);
+      offset++;
     }
-    offset += add_ff_reason_code(tree, tvb, pinfo, offset);
-  }
-  return tvb_captured_length(tvb);
 }
 
-static int
-ieee80211_tag_rann(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
+static const int *uora_headers[] = {
+  &hf_he_uora_eocwmin,
+  &hf_he_uora_owcwmax,
+  &hf_he_uora_reserved,
+  NULL
+};
+
+static void
+dissect_uora_parameter_set(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset)
 {
-  int offset = 0;
-  proto_tree_add_item(tree, hf_ieee80211_rann_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_rann_root_sta, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_rann_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_rann_interval, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_he_uora_field, ett_he_uora_tree, uora_headers,
+                        ENC_NA, BMT_NO_APPEND);
+  offset++;
 }
 
-/* Mesh Channel Switch Parameters (118) */
 static int
-ieee80211_tag_mesh_channel_switch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+dissect_muac_param_record(tvbuff_t *tvb, proto_tree *tree, int offset)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
-  static const int * ieee80211_mesh_chswitch_flag[] = {
-    &hf_ieee80211_mesh_chswitch_flag_initiator,
-    &hf_ieee80211_mesh_chswitch_flag_txrestrict,
-    NULL
-  };
-
-  if (tag_len != 6)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len);
-    return tvb_captured_length(tvb);
-  }
-
-  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-  proto_item_append_text(field_data->item_tag, " TTL: %d", tvb_get_guint8(tvb, offset));
-  offset += 1;
+  proto_tree_add_item(tree, hf_he_muac_aci_aifsn, tvb, offset, 1, ENC_NA);
+  offset++;
 
-  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_mesh_channel_switch_flag,
-                                   ett_mesh_chswitch_flag_tree, ieee80211_mesh_chswitch_flag, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
-  offset += 1;
+  proto_tree_add_item(tree, hf_he_muac_ecwmin_ecwmax, tvb, offset, 1, ENC_NA);
+  offset++;
 
-  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_reason_code, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
+  proto_tree_add_item(tree, hf_he_mu_edca_timer, tvb, offset, 1, ENC_NA);
+  offset++;
 
-  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_precedence_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+  return offset;
 }
 
-/* Mesh Awake Window Parameters (119) */
 static int
-ieee80211_tag_mesh_awake_window(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+dissect_mu_edca_parameter_set(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
+  int offset, int len _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
+  proto_tree *param_tree = NULL;
 
-  if (tag_len != 2) {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length,
-        "Tag length %u wrong, must be = 2", tag_len);
-    return tvb_captured_length(tvb);
-  }
+  /* Is this from an AP or an STA? */
+  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);
+  offset++;
 
-  proto_tree_add_item(tree, hf_ieee80211_mesh_awake_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+  param_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_he_mu_edca_param,
+                        NULL, "MUAC_BE Parameter Record");
+  offset = dissect_muac_param_record(tvb, param_tree, offset);
+
+  param_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_he_mu_edca_param,
+                        NULL, "MUAC_BK Parameter Record");
+  offset = dissect_muac_param_record(tvb, param_tree, offset);
+
+  param_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_he_mu_edca_param,
+                        NULL, "MUAC_VI Parameter Record");
+  offset = dissect_muac_param_record(tvb, param_tree, offset);
+
+  param_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_he_mu_edca_param,
+                        NULL, "MUAC_VO Parameter Record");
+  offset = dissect_muac_param_record(tvb, param_tree, offset);
+
+  return offset;
 }
 
+#define SRP_DISALLOWED                     0x01
+#define NON_SRG_OBSS_PD_SR_DISALLOWED      0x02
+#define NON_SRG_OFFSET_PRESENT             0x04
+#define SRG_INFORMATION_PRESENT            0x08
+#define HESIGA_SPATIAL_REUSE_VAL15_ALLOWED 0x10
+
+static const int *sr_control_field_headers[] = {
+  &hf_he_srp_disallowed,
+  &hf_he_non_srg_obss_pd_sr_disallowed,
+  &hf_he_non_srg_offset_present,
+  &hf_he_srg_information_present,
+  &hf_he_hesiga_spatial_reuse_value15_allowed,
+  &hf_he_sr_control_reserved,
+  NULL
+};
+
 static int
-ieee80211_tag_channel_switch_announcement(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+dissect_spatial_reuse_parameter_set(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
-  if (tag_len != 4)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4", tag_len);
-    return tvb_captured_length(tvb);
-  }
+  guint8 sr_control = tvb_get_guint8(tvb, offset);
 
-  add_ff_extended_channel_switch_announcement(tree, tvb, pinfo, offset);
-  return tvb_captured_length(tvb);
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_he_spatial_reuse_sr_control,
+                                    ett_he_spatial_reuse_control,
+                                    sr_control_field_headers,
+                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset++;
+
+  if (sr_control & NON_SRG_OFFSET_PRESENT) {
+    proto_tree_add_item(tree, hf_he_spatial_non_srg_obss_pd_max_offset,
+                        tvb, offset, 1, ENC_NA);
+    offset++;
+  }
+
+  if (sr_control & SRG_INFORMATION_PRESENT) {
+    proto_tree_add_item(tree, hf_he_spatial_srg_obss_pd_min_offset, tvb,
+                        offset, 1, ENC_NA);
+    offset++;
+    proto_tree_add_item(tree, hf_he_spatial_srg_obss_pd_max_offset, tvb,
+                        offset, 1, ENC_NA);
+    offset++;
+    proto_tree_add_item(tree, hf_he_spatial_srg_bss_color_bitmap, tvb,
+                        offset, 8, ENC_NA);
+    offset += 8;
+    proto_tree_add_item(tree, hf_he_spatial_srg_partial_bssid_bitmap,
+                        tvb, offset, 8, ENC_NA);
+    offset += 8;
+  }
+
+  return offset;
+}
+
+static void
+dissect_ndp_feedback_report_set(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len _U_)
+{
+  proto_tree_add_item(tree, hf_he_resource_request_buffer_thresh, tvb, offset,
+                        1, ENC_NA);
+}
+
+static const int *bss_new_color_headers[] = {
+  &hf_he_new_bss_color_info_color,
+  &hf_he_new_bss_color_info_reserved,
+  NULL
+};
+
+static void
+dissect_bss_color_change(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len _U_)
+{
+  proto_tree_add_item(tree, hf_he_bss_color_change_switch_countdown, tvb, offset,
+                        1, ENC_NA);
+  offset++;
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                                hf_he_bss_color_change_new_color_info,
+                                ett_he_bss_new_color_info, bss_new_color_headers,
+                                ENC_NA, BMT_NO_APPEND);
+}
+
+static const int *ess_info_field_headers[] = {
+  &hf_he_ess_report_planned_ess,
+  &hf_he_ess_report_edge_of_ess,
+  NULL
+};
+
+static void
+dissect_ess_report(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len _U_)
+{
+  guint8 bss_trans_thresh = tvb_get_guint8(tvb, offset) >> 2;
+
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_he_ess_report_info_field,
+                                    ett_he_ess_report_info_field,
+                                    ess_info_field_headers,
+                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  if (bss_trans_thresh == 63)
+    proto_tree_add_int_format(tree, hf_he_ess_report_recommend_transition_thresh, tvb,
+                        offset, 1, bss_trans_thresh, " (%ddBm)",
+                        -100 + bss_trans_thresh);
+  else
+    proto_tree_add_int_format(tree, hf_he_ess_report_recommend_transition_thresh,
+                        tvb, offset, 1, bss_trans_thresh, " (No recommendation)");
 }
 
+/*
+ * There will be from 1 to 4 24-bit fields in the order of AC=BK, AC=BE,
+ * AC=VI and AC=VO.
+ */
+
+static const int *esp_headers[] = {
+  &hf_ieee80211_esp_access_category,
+  &hf_ieee80211_esp_reserved,
+  &hf_ieee80211_esp_data_format,
+  &hf_ieee80211_esp_ba_windows_size,
+  &hf_ieee80211_esp_est_air_time_frac,
+  &hf_ieee80211_esp_data_ppdu_duration_target,
+  NULL
+};
+
+static const value_string esp_access_category_vals[] = {
+  { 0, "AC=BK" },
+  { 1, "AC=BE" },
+  { 2, "AC=VI" },
+  { 3, "AC=VO" },
+  { 0, NULL }
+};
+
+static const value_string esp_data_format_vals[] = {
+  { 0, "No aggregation is expected to be performed" },
+  { 1, "A-MSDU aggregation is expected but not A-MPDUs when type is data" },
+  { 2, "A-MSDU aggregation is NOT expected but A-MPDUs aggregation is when type is data" },
+  { 3, "A-MSDU aggregation is expected and A-MPDU aggregation is when type is data" },
+  { 0, NULL }
+};
+
+static const value_string esp_ba_window_size_vals[] = {
+  { 0, "Block Ack not expected to be used" },
+  { 1, "2" },
+  { 2, "4" },
+  { 3, "6" },
+  { 4, "8" },
+  { 5, "16" },
+  { 6, "32" },
+  { 7, "64" },
+  { 0, NULL }
+};
+
 static int
-ieee80211_tag_supported_operating_classes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+dissect_estimated_service_params(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len)
+{
+  while (len > 0) {
+    proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_estimated_service_params, ett_ieee80211_esp,
+                        esp_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 3;
+    len -= 3;
+  }
+
+  return offset;
+}
+
+static int
+dissect_future_channel_guidance(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, int len _U_)
+{
+  proto_tree_add_item(tree, hf_ieee80211_fcg_new_channel_number, tvb, offset,
+                        4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+
+  if (len - 4 > 0) {
+    proto_tree_add_item(tree, hf_ieee80211_fcg_extra_info, tvb, offset, len - 4,
+                        ENC_NA);
+    offset += len - 4;
+  }
+
+  return offset;
+}
+
+static int
+ieee80211_tag_element_id_extension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  proto_item* item = NULL;
-  guint8 i;
-  guint8 field_len = 0;
-  guint8 alt_op_class_field[256];
+  int ext_tag_len;
+  guint8 ext_tag_no;
 
-  if (tag_len < 2) {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 2", tag_len);
-    return tvb_captured_length(tvb);
-  } else if (tag_len > 255) {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, uint8 <= 255", tag_len);
+  if (tag_len < 1)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 1", tag_len);
     return tvb_captured_length(tvb);
   }
+  ext_tag_no = tvb_get_guint8(tvb, offset++);
+  ext_tag_len = tag_len - 1;
 
-  proto_tree_add_item(tree, hf_ieee80211_tag_supported_ope_classes_current, tvb, offset++, 1, ENC_NA);
+  switch (ext_tag_no) {
+    case ETAG_FILS_SESSION:
+      proto_tree_add_item(tree, hf_ieee80211_fils_session, tvb, offset, ext_tag_len, ENC_NA);
+      break;
+    case ETAG_FILS_WRAPPED_DATA:
+      proto_tree_add_item(tree, hf_ieee80211_fils_wrapped_data, tvb, offset, ext_tag_len, ENC_NA);
+      break;
+    case ETAG_FILS_NONCE:
+      proto_tree_add_item(tree, hf_ieee80211_fils_nonce, tvb, offset, ext_tag_len, ENC_NA);
+      break;
+    case ETAG_ESTIMATED_SERVICE_PARAM:
+      dissect_estimated_service_params(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_FUTURE_CHANNEL_GUIDANCE:
+      dissect_future_channel_guidance(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_HE_CAPABILITIES:
+      dissect_he_capabilities(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_HE_OPERATION:
+      dissect_he_operation(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_UORA_PARAMETER_SET:
+      dissect_uora_parameter_set(tvb, pinfo, tree, offset);
+      break;
+    case ETAG_MU_EDCA_PARAMETER_SET:
+      dissect_mu_edca_parameter_set(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_SPATIAL_REUSE_PARAMETER_SET:
+      dissect_spatial_reuse_parameter_set(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_NDP_FEEDBACK_REPORT_PARAMETER_SET:
+      dissect_ndp_feedback_report_set(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_BSS_COLOR_CHANGE_ANNOUNCEMENT:
+      dissect_bss_color_change(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    case ETAG_QUIET_TIME_PERIOD_SETUP:
 
-  for (i = offset; i < tag_len; i++) {
-    guint8 op_class =  tvb_get_guint8(tvb, i);
-    /* Field terminates immediately before OneHundredAndThirty or Zero delimiter */
-    if (op_class == 130 || op_class == 0) {
       break;
-    }
-    alt_op_class_field[field_len++] = op_class;
-  }
-  if (field_len) {
-    item = proto_tree_add_item(tree, hf_ieee80211_tag_supported_ope_classes_alternate, tvb, offset, field_len, ENC_NA);
-  }
-  for (i = 0; i < field_len; i++) {
-    proto_item_append_text(item, i == 0 ? ": %d":", %d", alt_op_class_field[i]);
+    case ETAG_ESS_REPORT:
+      dissect_ess_report(tvb, pinfo, tree, offset, ext_tag_len);
+      break;
+    default:
+      break;
   }
 
-  /* TODO parse optional Current Operating Class Extension Sequence field */
-  /* TODO parse optional Operating Class Duple Sequence field */
   return tvb_captured_length(tvb);
 }
 
+/* Conflict: WAPI Vs. IEEE */
 static int
-ieee80211_tag_bss_parameter_change(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_ie_68_conflict(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
-  gboolean size;
-  if (tag_len != 7)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 7", tag_len);
-    return tvb_captured_length(tvb);
+  if (tag_len >= 20) { /* It Might be WAPI*/
+    dissect_wapi_param_set(tvb, pinfo, tree, 0, tag_len, field_data->item_tag_length, field_data->item_tag, field_data->ftype);
   }
-  size = (tvb_get_guint8(tvb, offset) & 0x02) >> 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_move, tvb, offset, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_size, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_tbtt_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-  offset += 4;
-  if(size == TRUE) { /* if size bit is 0, the field is reserved. */
-    proto_tree_add_item(tree, hf_ieee80211_tag_bi_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  else { /* BSS AC Access Delay (68) */
+     dissect_bss_ac_access_delay_ie(tvb, pinfo, tree, 0, tag_len, field_data->item_tag_length);
   }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_capabilities(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_peering_mgmt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
 {
   int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  static const int * ieee80211_tag_dmg_cap1[] = {
-    &hf_ieee80211_tag_reverse_direction,
-    &hf_ieee80211_tag_hlts,
-    &hf_ieee80211_tag_tpc,
-    &hf_ieee80211_tag_spsh,
-    &hf_ieee80211_tag_rx_antenna,
-    &hf_ieee80211_tag_fast_link,
-    &hf_ieee80211_tag_num_sectors,
-    &hf_ieee80211_tag_rxss_length,
-    &hf_ieee80211_tag_reciprocity,
-    &hf_ieee80211_tag_max_ampdu_exp,
-    NULL
-  };
 
-  static const int * ieee80211_tag_dmg_cap2[] = {
-    &hf_ieee80211_tag_min_mpdu_spacing,
-    &hf_ieee80211_tag_ba_flow_control,
-    &hf_ieee80211_tag_max_sc_rx_mcs,
-    &hf_ieee80211_tag_max_ofdm_rx_mcs,
-    &hf_ieee80211_tag_max_sc_tx_mcs,
-    &hf_ieee80211_tag_max_ofdm_tx_mcs,
-    NULL
-  };
+  proto_tree_add_item(tree, hf_ieee80211_mesh_peering_proto, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_mesh_peering_local_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  switch (tvb_get_guint8(tvb, 1))
+  {                                         /* Self-protected action field */
+    case SELFPROT_ACTION_MESH_PEERING_OPEN:
+      break;
 
-  static const int * ieee80211_tag_dmg_cap3[] = {
-    &hf_ieee80211_tag_low_power_supported,
-    &hf_ieee80211_tag_code_rate,
-    &hf_ieee80211_tag_dtp,
-    &hf_ieee80211_tag_appdu_supp,
-    &hf_ieee80211_tag_heartbeat,
-    &hf_ieee80211_tag_other_aid,
-    &hf_ieee80211_tag_pattern_recip,
-    &hf_ieee80211_tag_heartbeat_elapsed,
-    &hf_ieee80211_tag_grant_ack_supp,
-    &hf_ieee80211_tag_RXSSTxRate_supp,
-    NULL
-  };
+    case SELFPROT_ACTION_MESH_PEERING_CONFIRM:
+      proto_tree_add_item(tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+      break;
 
-  static const int * ieee80211_tag_dmg_cap4[] = {
-    &hf_ieee80211_tag_pcp_tddti,
-    &hf_ieee80211_tag_pcp_PSA,
-    &hf_ieee80211_tag_pcp_handover,
-    &hf_ieee80211_tag_pcp_max_assoc,
-    &hf_ieee80211_tag_pcp_power_src,
-    &hf_ieee80211_tag_pcp_decenter,
-    &hf_ieee80211_tag_pcp_forwarding,
-    &hf_ieee80211_tag_pcp_center,
-    NULL
-  };
+    case SELFPROT_ACTION_MESH_PEERING_CLOSE:
+      if ((tag_len == 8) || (tag_len == 24))
+      {
+        proto_tree_add_item(tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+        offset += 2;
+      }
+      add_ff_reason_code(tree, tvb, pinfo, offset);
+      break;
 
-  if (tag_len != 17)
+      /* unexpected values */
+    default:
+      proto_tree_add_expert(tree, pinfo, &ei_ieee80211_mesh_peering_unexpected , tvb, offset, tag_len);
+      break;
+  }
+  if (tag_len - offset == 16)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 17", tag_len);
-    return tvb_captured_length(tvb);
+    proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid, tvb, offset, 16, ENC_NA);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_capa_sta_addr, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_capa_aid, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_dmg_cap1, ENC_LITTLE_ENDIAN);
-  offset += 3;
-  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_dmg_cap2, ENC_LITTLE_ENDIAN);
-  offset += 3;
-  proto_tree_add_bitmask_list(tree, tvb, offset, 2, ieee80211_tag_dmg_cap3, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_bitmask_list(tree, tvb, offset, 2, ieee80211_tag_dmg_cap4, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_operation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_configuration(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  static const int * ieee80211_tag_dmg_operation_flags[] = {
-    &hf_ieee80211_tag_pcp_tddti,
-    &hf_ieee80211_tag_pcp_PSA,
-    &hf_ieee80211_tag_pcp_handover,
+  proto_item *item;
+  proto_tree *subtree;
+  static const int *ieee80211_mesh_config_cap[] = {
+    &hf_ieee80211_mesh_config_cap_accepting,
+    &hf_ieee80211_mesh_config_cap_mcca_support,
+    &hf_ieee80211_mesh_config_cap_mcca_enabled,
+    &hf_ieee80211_mesh_config_cap_forwarding,
+    &hf_ieee80211_mesh_config_cap_mbca_enabled,
+    &hf_ieee80211_mesh_config_cap_tbtt_adjusting,
+    &hf_ieee80211_mesh_config_cap_power_save_level,
     NULL
   };
 
-  if (tag_len != 10)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 10", tag_len);
-    return tvb_captured_length(tvb);
-  }
-  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_dmg_operation_flags, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_PSRSI, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_min_BHI_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_brdct_sta_info_dur, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_assoc_resp_confirm_time, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_min_pp_duration, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_SP_idle_timeout, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_max_lost_beacons, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_mesh_config_path_sel_protocol, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_mesh_config_path_sel_metric, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_mesh_config_congestion_control, tvb, offset + 2, 1, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_mesh_config_sync_method, tvb, offset + 3, 1, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_mesh_config_auth_protocol, tvb, offset + 4, 1, ENC_LITTLE_ENDIAN);
+  item = proto_tree_add_item(tree, hf_ieee80211_mesh_config_formation_info, tvb, offset + 5, 1, ENC_LITTLE_ENDIAN);
+  subtree = proto_item_add_subtree(item, ett_mesh_formation_info_tree);
+  proto_tree_add_item(subtree, hf_ieee80211_mesh_form_info_num_of_peerings, tvb, offset + 5, 1, ENC_LITTLE_ENDIAN);
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_mesh_config_capability,
+                                    ett_mesh_config_cap_tree, ieee80211_mesh_config_cap,
+                                    ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_antenna_section_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  static const int * ieee80211_tag_antenna[] = {
-    &hf_ieee80211_tag_type,
-    &hf_ieee80211_tag_tap1,
-    &hf_ieee80211_tag_state1,
-    &hf_ieee80211_tag_tap2,
-    &hf_ieee80211_tag_state2,
-    NULL
-  };
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int tag_len = tvb_reported_length(tvb);
+  const guint8* mesh_id;
 
-  if (tag_len != 4)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4", tag_len);
-    return tvb_captured_length(tvb);
+  proto_tree_add_item_ret_string(tree, hf_ieee80211_mesh_id, tvb, offset, tag_len, ENC_ASCII|ENC_NA, wmem_packet_scope(), &mesh_id);
+  if (tag_len > 0) {
+    gchar* s = format_text(wmem_packet_scope(), mesh_id, tag_len);
+    col_append_fstr(pinfo->cinfo, COL_INFO, ", MESHID=%s", s);
+    proto_item_append_text(field_data->item_tag, ": %s", s);
   }
-  proto_tree_add_bitmask_list(tree, tvb, offset, 4, ieee80211_tag_antenna, ENC_LITTLE_ENDIAN);
-  return tvb_captured_length(tvb);
+  /* Make sure dissector is accepted */
+  return ((tag_len > 0) ? tag_len : 1);
 }
 
 static int
-ieee80211_tag_extended_schedule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_preq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  int i;
-  gboolean isGrant;
-  proto_tree * alloc_tree;
-  if ((tag_len%15) != 0)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be N*15 where 0<=N<=17", tag_len);
-    return tvb_captured_length(tvb);
+
+  guint32 flags;
+  guint8 targs, i;
+
+  proto_tree_add_item_ret_uint(tree, hf_ieee80211_ff_hwmp_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN, &flags);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_pdid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sta, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+
+  if (flags & (1<<6)) {
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_ext, tvb, offset, 6, ENC_NA);
+    offset += 6;
   }
-  isGrant = ((field_data->ftype==CTRL_GRANT)||(field_data->ftype==CTRL_GRANT_ACK));
-  for(i=0; i < tag_len; i+=15) {
-    alloc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 15, ett_allocation_tree, NULL, "Allocation %d", i/15);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pseudo_static, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_truncatable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_extendable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pcp_active, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_lp_sc_used, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
-    offset += add_ff_beamforming_ctrl(alloc_tree, tvb, pinfo, offset, isGrant);
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_src_aid, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_dest_aid, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  targs = tvb_get_guint8(tvb, offset);
+  offset += 1;
+  for (i = 0; i < targs; i++) {
+    const int * targ_flags[] = {
+      &hf_ieee80211_ff_hwmp_targ_to_flags,
+      &hf_ieee80211_ff_hwmp_targ_usn_flags,
+      NULL
+    };
+
+    proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_ff_hwmp_targ_flags,
+                                   ett_hwmp_targ_flags_tree, targ_flags, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+
     offset += 1;
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_start, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
+    offset += 6;
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
     offset += 4;
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_block_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_num_blocks, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_block_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
   }
-  return tvb_captured_length(tvb);
-}
 
-static int
-ieee80211_tag_sta_availability(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
-{
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-  int offset = 0;
-  int i;
-  proto_tree * sta_info_tree;
-  if ((tag_len%2) != 0)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be N*2 where N>=0", tag_len);
-    return tvb_captured_length(tvb);
-  }
-  for(i=0; i < tag_len; i+=2) {
-    sta_info_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_sta_info, NULL, "STA Info %d", i/2);
-    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_aid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_cbap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_pp_avail, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
-  }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_next_dmg_ati(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_prep(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  if (tag_len != 6)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len);
-    return tvb_captured_length(tvb);
+
+  guint32 flags;
+  proto_tree_add_item_ret_uint(tree, hf_ieee80211_ff_hwmp_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN, &flags);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset , 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  if (flags & (1<<6)) {
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_ext, tvb, offset, 6, ENC_NA);
+    offset += 6;
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_next_ati_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_tag_next_ati_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sta, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_orig_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_nextpcp_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_perr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  int i;
-  if (tag_len < 1)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 1", tag_len);
-    return tvb_captured_length(tvb);
-  }
-  proto_tree_add_item(tree, hf_ieee80211_tag_nextpcp_token, tvb, offset, 1, ENC_NA);
+  guint8 targs, i;
+
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
   offset += 1;
-  for(i=0; i < tag_len-1; i+=1) {
-    proto_tree_add_item(tree, hf_ieee80211_tag_nextpcp_list, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_count, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  targs = tvb_get_guint8(tvb, offset);
+  offset += 1;
+  for (i = 0; i < targs; i++) {
+    guint8 flags = tvb_get_guint8(tvb, offset);
+
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
     offset += 1;
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sta, tvb, offset, 6, ENC_NA);
+    offset += 6;
+    proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    offset += 4;
+    if (flags & (1<<6)) {
+      proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_targ_ext, tvb, offset, 6, ENC_NA);
+      offset += 6;
+    }
+    offset += add_ff_reason_code(tree, tvb, pinfo, offset);
   }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_pcp_handover(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_rann(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
 {
-  int tag_len = tvb_reported_length(tvb);
-  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  if (tag_len != 13)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 13", tag_len);
-    return tvb_captured_length(tvb);
-  }
-  proto_tree_add_item(tree, hf_ieee80211_tag_old_bssid, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_tag_new_pcp_addr, tvb, offset, 6, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_rann_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_rann_root_sta, tvb, offset, 6, ENC_NA);
   offset += 6;
-  proto_tree_add_item(tree, hf_ieee80211_tag_reamaining_BI, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_rann_sn, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_rann_interval, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_ff_hwmp_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
+/* Mesh Channel Switch Parameters (118) */
 static int
-ieee80211_tag_beamlink_maintenance(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_channel_switch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  if (tag_len != 1)
+  static const int * ieee80211_mesh_chswitch_flag[] = {
+    &hf_ieee80211_mesh_chswitch_flag_initiator,
+    &hf_ieee80211_mesh_chswitch_flag_txrestrict,
+    NULL
+  };
+
+  if (tag_len != 6)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 1", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len);
     return tvb_captured_length(tvb);
   }
-  add_ff_beamformed_link(tree, tvb, pinfo, offset);
+
+  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+  proto_item_append_text(field_data->item_tag, " TTL: %d", tvb_get_guint8(tvb, offset));
+  offset += 1;
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_mesh_channel_switch_flag,
+                                   ett_mesh_chswitch_flag_tree, ieee80211_mesh_chswitch_flag, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 1;
+
+  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_reason_code, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+
+  proto_tree_add_item(tree, hf_ieee80211_mesh_channel_switch_precedence_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
+/* Mesh Awake Window Parameters (119) */
 static int
-ieee80211_tag_quiet_period_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_mesh_awake_window(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  if (tag_len != 10)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 10", tag_len);
+
+  if (tag_len != 2) {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length,
+        "Tag length %u wrong, must be = 2", tag_len);
     return tvb_captured_length(tvb);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_request_token, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_bssid, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  add_ff_sta_address(tree, tvb, pinfo, offset);
+
+  proto_tree_add_item(tree, hf_ieee80211_mesh_awake_window, tvb, offset, 2, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_relay_transfer_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_channel_switch_announcement(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-
-  if (tag_len != 8)
+  if (tag_len != 4)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4", tag_len);
     return tvb_captured_length(tvb);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_duplex_relay, tvb, offset, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_cooperation_relay, tvb, offset, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_tx_mode, tvb, offset, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_link_change_interval, tvb, offset+1, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_data_sensing_time, tvb, offset+2, 1, ENC_NA);
-  proto_tree_add_item(tree, hf_ieee80211_tag_first_period, tvb, offset+3, 2, ENC_LITTLE_ENDIAN);
-  proto_tree_add_item(tree, hf_ieee80211_tag_second_period, tvb, offset+5, 2, ENC_LITTLE_ENDIAN);
+
+  add_ff_extended_channel_switch_announcement(tree, tvb, pinfo, offset);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_beam_refinement(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_supported_operating_classes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  static const int * ieee80211_dmg_beam_refinement_fields[] = {
-    &hf_ieee80211_tag_initiator,
-    &hf_ieee80211_tag_tx_train_res,
-    &hf_ieee80211_tag_rx_train_res,
-    &hf_ieee80211_tag_tx_trn_ok,
-    &hf_ieee80211_tag_txss_fbck_req,
-    &hf_ieee80211_tag_bs_fbck,
-    &hf_ieee80211_tag_bs_fbck_antenna_id,
-    &hf_ieee80211_tag_snr_requested,
-    &hf_ieee80211_tag_channel_measurement_requested,
-    &hf_ieee80211_tag_number_of_taps_requested,
-    &hf_ieee80211_tag_sector_id_order_req,
-    &hf_ieee80211_tag_snr_present,
-    &hf_ieee80211_tag_channel_measurement_present,
-    &hf_ieee80211_tag_tap_delay_present,
-    &hf_ieee80211_tag_number_of_taps_present,
-    &hf_ieee80211_tag_number_of_measurement,
-    &hf_ieee80211_tag_sector_id_order_present,
-    &hf_ieee80211_tag_number_of_beams,
-    &hf_ieee80211_tag_mid_extension,
-    &hf_ieee80211_tag_capability_request,
-    &hf_ieee80211_tag_beam_refine_reserved,
-    NULL
-  };
+  proto_item* item = NULL;
+  guint8 i;
+  guint8 field_len = 0;
+  guint8 alt_op_class_field[256];
 
-  if (tag_len != 5)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 5", tag_len);
+  if (tag_len < 2) {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 2", tag_len);
+    return tvb_captured_length(tvb);
+  } else if (tag_len > 255) {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, uint8 <= 255", tag_len);
     return tvb_captured_length(tvb);
   }
 
-  proto_tree_add_bitmask_list(tree, tvb, offset, 5, ieee80211_dmg_beam_refinement_fields, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_tag_supported_ope_classes_current, tvb, offset++, 1, ENC_NA);
+
+  for (i = offset; i < tag_len; i++) {
+    guint8 op_class =  tvb_get_guint8(tvb, i);
+    /* Field terminates immediately before OneHundredAndThirty or Zero delimiter */
+    if (op_class == 130 || op_class == 0) {
+      break;
+    }
+    alt_op_class_field[field_len++] = op_class;
+  }
+  if (field_len) {
+    item = proto_tree_add_item(tree, hf_ieee80211_tag_supported_ope_classes_alternate, tvb, offset, field_len, ENC_NA);
+  }
+  for (i = 0; i < field_len; i++) {
+    proto_item_append_text(item, i == 0 ? ": %d":", %d", alt_op_class_field[i]);
+  }
+
+  /* TODO parse optional Current Operating Class Extension Sequence field */
+  /* TODO parse optional Operating Class Duple Sequence field */
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_wakeup_schedule_ad(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_bss_parameter_change(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-
-  if (tag_len != 8)
+  gboolean size;
+  if (tag_len != 7)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 7", tag_len);
     return tvb_captured_length(tvb);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_bi_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  size = (tvb_get_guint8(tvb, offset) & 0x02) >> 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_move, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_size, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_tbtt_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN);
   offset += 4;
-  proto_tree_add_item(tree, hf_ieee80211_tag_sleep_cycle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_num_awake_bis, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  if(size == TRUE) { /* if size bit is 0, the field is reserved. */
+    proto_tree_add_item(tree, hf_ieee80211_tag_bi_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_tspec(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_dmg_capabilities(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
 
-  gboolean isGrant;
-  int num_constraints;
-  if (tag_len < 14)
+  static const int * ieee80211_tag_dmg_cap1[] = {
+    &hf_ieee80211_tag_reverse_direction,
+    &hf_ieee80211_tag_hlts,
+    &hf_ieee80211_tag_tpc,
+    &hf_ieee80211_tag_spsh,
+    &hf_ieee80211_tag_rx_antenna,
+    &hf_ieee80211_tag_fast_link,
+    &hf_ieee80211_tag_num_sectors,
+    &hf_ieee80211_tag_rxss_length,
+    &hf_ieee80211_tag_reciprocity,
+    &hf_ieee80211_tag_max_ampdu_exp,
+    NULL
+  };
+
+  static const int * ieee80211_tag_dmg_cap2[] = {
+    &hf_ieee80211_tag_min_mpdu_spacing,
+    &hf_ieee80211_tag_ba_flow_control,
+    &hf_ieee80211_tag_max_sc_rx_mcs,
+    &hf_ieee80211_tag_max_ofdm_rx_mcs,
+    &hf_ieee80211_tag_max_sc_tx_mcs,
+    &hf_ieee80211_tag_max_ofdm_tx_mcs,
+    NULL
+  };
+
+  static const int * ieee80211_tag_dmg_cap3[] = {
+    &hf_ieee80211_tag_low_power_supported,
+    &hf_ieee80211_tag_code_rate,
+    &hf_ieee80211_tag_dtp,
+    &hf_ieee80211_tag_appdu_supp,
+    &hf_ieee80211_tag_heartbeat,
+    &hf_ieee80211_tag_other_aid,
+    &hf_ieee80211_tag_pattern_recip,
+    &hf_ieee80211_tag_heartbeat_elapsed,
+    &hf_ieee80211_tag_grant_ack_supp,
+    &hf_ieee80211_tag_RXSSTxRate_supp,
+    NULL
+  };
+
+  static const int * ieee80211_tag_dmg_cap4[] = {
+    &hf_ieee80211_tag_pcp_tddti,
+    &hf_ieee80211_tag_pcp_PSA,
+    &hf_ieee80211_tag_pcp_handover,
+    &hf_ieee80211_tag_pcp_max_assoc,
+    &hf_ieee80211_tag_pcp_power_src,
+    &hf_ieee80211_tag_pcp_decenter,
+    &hf_ieee80211_tag_pcp_forwarding,
+    &hf_ieee80211_tag_pcp_center,
+    NULL
+  };
+
+  static const int * ieee80211_tag_dmg_cap5[] = {
+    &hf_ieee80211_tag_ext_sc_mcs_max_tx,
+    &hf_ieee80211_tag_ext_sc_mcs_tx_code_7_8,
+    &hf_ieee80211_tag_ext_sc_mcs_max_rx,
+    &hf_ieee80211_tag_ext_sc_mcs_rx_code_7_8,
+    NULL
+  };
+
+  /*
+   * Plenty of devices still do not conform to the older version of this
+   * field. So, it must be at least 17 bytes in length.
+   */
+  if (tag_len < 17)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 14", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must contain at least 17 bytes", tag_len);
     return tvb_captured_length(tvb);
   }
-  static const int * ieee80211_tag_tspec_flags[] = {
-    &hf_ieee80211_tag_tspec_allocation_id,
-    &hf_ieee80211_tag_tspec_allocation_type,
-    &hf_ieee80211_tag_tspec_allocation_format,
-    &hf_ieee80211_tag_tspec_pseudo_static,
-    &hf_ieee80211_tag_tspec_truncatable,
-    &hf_ieee80211_tag_tspec_extendable,
-    &hf_ieee80211_tag_tspec_lp_sc_used,
-    &hf_ieee80211_tag_tspec_up,
-    &hf_ieee80211_tag_tap2,
-    &hf_ieee80211_tag_tspec_dest_aid,
-    NULL
-  };
 
-  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_tspec_flags, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_capa_sta_addr, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_capa_aid, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_dmg_cap1, ENC_LITTLE_ENDIAN);
   offset += 3;
-  isGrant = ((field_data->ftype==CTRL_GRANT)||(field_data->ftype==CTRL_GRANT_ACK));
-  offset += add_ff_beamforming_ctrl(tree, tvb, pinfo, 2, isGrant);
-  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_allocation_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_min_allocation, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_dmg_cap2, ENC_LITTLE_ENDIAN);
+  offset += 3;
+  proto_tree_add_bitmask_list(tree, tvb, offset, 2, ieee80211_tag_dmg_cap3, ENC_LITTLE_ENDIAN);
   offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_max_allocation, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  proto_tree_add_bitmask_list(tree, tvb, offset, 2, ieee80211_tag_dmg_cap4, ENC_LITTLE_ENDIAN);
   offset += 2;
-  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_min_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+  /*
+   * There are many captures out there that do not conform to the 2016
+   * version, so give them a malformed IE message now after we have dissected
+   * the above
+   */
+  if (tag_len != 22)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u does not conform to IEEE802.11-2016, should contain 22 bytes", tag_len);
+    return tvb_captured_length(tvb);
+  }
+
+  proto_tree_add_item(tree, hf_ieee80211_tag_sta_beam_track, tvb, offset, 2, ENC_NA);
   offset += 2;
-  num_constraints = tvb_get_guint8(tvb, offset);
-  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_num_of_constraints, tvb, offset, 1, ENC_NA);
+  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_dmg_cap5, ENC_LITTLE_ENDIAN);
   offset += 1;
-  while(num_constraints > 0) {
-    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
-    offset += 4;
-    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
-    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    offset += 2;
-    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_interferer_mac, tvb, offset, 2, ENC_NA);
-    offset += 6;
-    num_constraints--;
-  }
+  proto_tree_add_item(tree, hf_ieee80211_tag_max_basic_sf_amsdu, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_max_short_sf_amsdu, tvb, offset, 1, ENC_NA);
+
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_channel_measurement_fb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_dmg_operation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
+  static const int * ieee80211_tag_dmg_operation_flags[] = {
+    &hf_ieee80211_tag_pcp_tddti,
+    &hf_ieee80211_tag_pcp_PSA,
+    &hf_ieee80211_tag_pcp_handover,
+    NULL
+  };
 
-  int num_measurement;
-  if (tag_len%5 != 0)
+  if (tag_len != 10)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be multiple of 5", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 10", tag_len);
     return tvb_captured_length(tvb);
   }
-  num_measurement = tvb_get_guint8(tvb, offset+1);
+  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_dmg_operation_flags, ENC_LITTLE_ENDIAN);
   offset += 2;
-  while(num_measurement > 0) {
-    proto_tree_add_item(tree, hf_ieee80211_ff_snr, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_realtive_I, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_realtive_Q, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_tap_delay, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_sector_id, tvb, offset, 1, ENC_NA);
-    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_antenna_id, tvb, offset, 1, ENC_NA);
-    offset += 1;
-    num_measurement--;
-  }
+  proto_tree_add_item(tree, hf_ieee80211_tag_PSRSI, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_min_BHI_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_brdct_sta_info_dur, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_assoc_resp_confirm_time, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_min_pp_duration, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_SP_idle_timeout, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_max_lost_beacons, tvb, offset, 1, ENC_NA);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_awake_window(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_antenna_section_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  static const int * ieee80211_tag_antenna[] = {
+    &hf_ieee80211_tag_type,
+    &hf_ieee80211_tag_tap1,
+    &hf_ieee80211_tag_state1,
+    &hf_ieee80211_tag_tap2,
+    &hf_ieee80211_tag_state2,
+    NULL
+  };
 
-  if (tag_len != 2)
-  {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 2", tag_len);
-  }
-  else
+  if (tag_len != 4)
   {
-    proto_tree_add_item(tree, hf_ieee80211_tag_awake_window, tvb, 0, 2, ENC_LITTLE_ENDIAN);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4", tag_len);
+    return tvb_captured_length(tvb);
   }
+  proto_tree_add_bitmask_list(tree, tvb, offset, 4, ieee80211_tag_antenna, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_addba_ext(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_extended_schedule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
-
-  if (tag_len != 1)
+  int offset = 0;
+  int i;
+  gboolean isGrant;
+  proto_tree * alloc_tree;
+  if ((tag_len%15) != 0)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 1", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be N*15 where 0<=N<=17", tag_len);
+    return tvb_captured_length(tvb);
   }
-  else
-  {
-    proto_tree_add_item(tree, hf_ieee80211_tag_addba_ext_no_frag, tvb, 0, 1, ENC_NA);
+  isGrant = ((field_data->ftype==CTRL_GRANT)||(field_data->ftype==CTRL_GRANT_ACK));
+  for(i=0; i < tag_len; i+=15) {
+    alloc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 15, ett_allocation_tree, NULL, "Allocation %d", i/15);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pseudo_static, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_truncatable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_extendable, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pcp_active, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_lp_sc_used, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+    offset += add_ff_beamforming_ctrl(alloc_tree, tvb, pinfo, offset, isGrant);
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_src_aid, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_dest_aid, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_start, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    offset += 4;
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_block_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_num_blocks, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(alloc_tree, hf_ieee80211_tag_alloc_block_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
   }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_multi_band(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_sta_availability(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  gboolean chiper_present, addr_present;
-  static const int * ieee80211_tag_multi_band_ctrl[] = {
-    &hf_ieee80211_tag_multi_band_ctrl_sta_role,
-    &hf_ieee80211_tag_multi_band_ctrl_addr_present,
-    &hf_ieee80211_tag_multi_band_ctrl_cipher_present,
-    NULL
-  };
-  static const int * ieee80211_tag_multi_band_conn[] = {
-    &hf_ieee80211_tag_multi_band_conn_ap,
-    &hf_ieee80211_tag_multi_band_conn_pcp,
-    &hf_ieee80211_tag_multi_band_conn_dls,
-    &hf_ieee80211_tag_multi_band_conn_tdls,
-    &hf_ieee80211_tag_multi_band_conn_ibss,
-    NULL
-  };
-
-  if (tag_len < 22)
+  int i;
+  proto_tree * sta_info_tree;
+  if ((tag_len%2) != 0)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 22", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be N*2 where N>=0", tag_len);
     return tvb_captured_length(tvb);
   }
-  chiper_present = (tvb_get_letohs(tvb, offset) & 0x08) >> 3;
-  addr_present = (tvb_get_letohs(tvb, offset) & 0x10) >> 4;
-  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_multi_band_ctrl, ENC_NA);
-  offset += 1;
-  offset += add_ff_band_id(tree, tvb, pinfo, 1);
-  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_oper_class, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_channel_number, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_bssid, tvb, offset, 6, ENC_NA);
-  offset += 6;
-  offset += add_ff_beacon_interval(tree, tvb, pinfo, 2);
-  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_tsf_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN);
-  offset += 8;
-
-  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_multi_band_conn, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_fst_timeout, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  if(addr_present)
-  {
-    proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_sta_mac, tvb, offset, 6, ENC_NA);
-    offset += 6;
-  }
-  if(chiper_present)
-  {
-    proto_item *rsn_pcs_count, *rsn_pcs_item, *rsn_sub_pcs_item;
-    proto_tree *rsn_pcs_tree, *rsn_sub_pcs_tree;
-    gint ii;
-    guint16     pcs_count;
-    int tag_end = tvb_reported_length(tvb);
-    rsn_pcs_count = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-    pcs_count = tvb_get_letohs(tvb, offset);
+  for(i=0; i < tag_len; i+=2) {
+    sta_info_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_sta_info, NULL, "STA Info %d", i/2);
+    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_aid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_cbap, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_pp_avail, tvb, offset, 2, ENC_LITTLE_ENDIAN);
     offset += 2;
-
-    if (offset + (pcs_count * 4) > tag_end)
-    {
-        expert_add_info_format(pinfo, rsn_pcs_count, &ei_ieee80211_rsn_pcs_count,
-        "Pairwise Cipher Suite Count too large, 4*%u > %d", pcs_count, tag_end - offset);
-        pcs_count = (tag_end - offset) / 4;
-    }
-
-    rsn_pcs_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_list, tvb, offset, pcs_count * 4, ENC_NA);
-    rsn_pcs_tree = proto_item_add_subtree(rsn_pcs_item, ett_rsn_pcs_tree);
-    for (ii = 0; ii < pcs_count; ii++)
-    {
-      rsn_sub_pcs_item = proto_tree_add_item(rsn_pcs_tree, hf_ieee80211_rsn_pcs, tvb, offset, 4, ENC_BIG_ENDIAN);
-      rsn_sub_pcs_tree = proto_item_add_subtree(rsn_sub_pcs_item, ett_rsn_sub_pcs_tree);
-      proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
-
-      /* Check if OUI is 00:0F:AC (ieee80211) */
-      if (tvb_get_ntoh24(tvb, offset) == OUI_RSN)
-      {
-        proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_80211_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
-        proto_item_append_text(rsn_pcs_item, " %s", rsn_pcs_return(tvb_get_ntohl(tvb, offset)));
-      } else {
-        proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
-      }
-      offset += 4;
-    }
   }
-
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_link_margin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_next_dmg_ati(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-
-  if (tag_len != 8)
+  if (tag_len != 6)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len);
     return tvb_captured_length(tvb);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_activity, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_link_adapt_mcs, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_link_adapt_link_margin, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_ff_snr, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_ref_timestamp, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_tag_next_ati_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_tag_next_ati_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_dmg_link_adaption_ack(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_nextpcp_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-
-  if (tag_len != 5)
+  int i;
+  if (tag_len < 1)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 5", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 1", tag_len);
     return tvb_captured_length(tvb);
   }
-  proto_tree_add_item(tree, hf_ieee80211_tag_activity, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_nextpcp_token, tvb, offset, 1, ENC_NA);
   offset += 1;
-  proto_tree_add_item(tree, hf_ieee80211_tag_ref_timestamp, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+  for(i=0; i < tag_len-1; i+=1) {
+    proto_tree_add_item(tree, hf_ieee80211_tag_nextpcp_list, tvb, offset, 1, ENC_NA);
+    offset += 1;
+  }
   return tvb_captured_length(tvb);
 }
 
 static int
-ieee80211_tag_switching_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+ieee80211_tag_pcp_handover(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
   int tag_len = tvb_reported_length(tvb);
   ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
   int offset = 0;
-  static const int * ieee80211_tag_switching_stream_flags[] = {
-    &hf_ieee80211_tag_switching_stream_old_tid,
-    &hf_ieee80211_tag_switching_stream_old_direction,
-    &hf_ieee80211_tag_switching_stream_new_tid,
-    &hf_ieee80211_tag_switching_stream_new_direction,
-    &hf_ieee80211_tag_switching_stream_new_valid_id,
-    &hf_ieee80211_tag_switching_stream_llt_type,
-    NULL
-  };
-
-  int param_num;
-  if (tag_len < 4)
+  if (tag_len != 13)
   {
-    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 4", tag_len);
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 13", tag_len);
     return tvb_captured_length(tvb);
   }
-  offset += add_ff_band_id(tree, tvb, pinfo, 1);
-  offset += add_ff_band_id(tree, tvb, pinfo, 1);
-  proto_tree_add_item(tree, hf_ieee80211_tag_switching_stream_non_qos, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  param_num = tvb_get_letohs(tvb, offset);
-  proto_tree_add_item(tree, hf_ieee80211_tag_switching_stream_param_num, tvb, offset, 1, ENC_NA);
-  offset += 1;
-  while(param_num > 0)
+  proto_tree_add_item(tree, hf_ieee80211_tag_old_bssid, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_tag_new_pcp_addr, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  proto_tree_add_item(tree, hf_ieee80211_tag_reamaining_BI, tvb, offset, 1, ENC_NA);
+  return tvb_captured_length(tvb);
+}
+
+static int
+ieee80211_tag_beamlink_maintenance(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  if (tag_len != 1)
   {
-    proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_switching_stream_flags, ENC_NA);
-    param_num--;
-    offset += 2;
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 1", tag_len);
+    return tvb_captured_length(tvb);
   }
+  add_ff_beamformed_link(tree, tvb, pinfo, offset);
   return tvb_captured_length(tvb);
 }
 
-static void
-ieee_80211_add_tagged_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo,
-                                  proto_tree *tree, int tagged_parameters_len, int ftype,
-                                  association_sanity_check_t *association_sanity_check)
+static int
+ieee80211_tag_quiet_period_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  int next_len;
-  beacon_padding = 0; /* this is for the beacon padding confused with ssid fix */
-  while (tagged_parameters_len > 0) {
-    /* TODO make callers optionally specify the list of valid IE IDs? */
-    if ((next_len=add_tagged_field (pinfo, tree, tvb, offset, ftype, NULL, 0, association_sanity_check)) == 0)
-      break;
-    if (next_len > tagged_parameters_len) {
-      /* XXX - flag this as an error? */
-      next_len = tagged_parameters_len;
-    }
-    offset                += next_len;
-    tagged_parameters_len -= next_len;
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  if (tag_len != 10)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 10", tag_len);
+    return tvb_captured_length(tvb);
   }
+  proto_tree_add_item(tree, hf_ieee80211_tag_request_token, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_bssid, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  add_ff_sta_address(tree, tvb, pinfo, offset);
+  return tvb_captured_length(tvb);
 }
 
-static void
-ieee_80211_do_association_sanity_check(packet_info *pinfo, association_sanity_check_t *sanity_check)
+static int
+ieee80211_tag_relay_transfer_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  /* Given a [re-]association request frame, consider it in its totality and
-     add expert information as appropriate */
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
-  if (sanity_check->association_has_mobility_domain_element) {
-    /* This is an FT association, warn about any non-FT AKM suites */
-    if (sanity_check->has_non_ft_akm_suite) {
-      expert_add_info_format(pinfo, sanity_check->rsn_first_non_ft_akm_suite, &ei_ieee80211_mismatched_akm_suite,
-                             "Non-FT AKM suite is prohibited for FT association request");
-    }
-  } else {
-    /* This is a non-FT association, warn about any FT AKM suites */
-    if (sanity_check->has_ft_akm_suite) {
-      expert_add_info_format(pinfo, sanity_check->rsn_first_ft_akm_suite, &ei_ieee80211_mismatched_akm_suite,
-                             "FT AKM suite is prohibited for non-FT association request");
-    }
+  if (tag_len != 8)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    return tvb_captured_length(tvb);
   }
+  proto_tree_add_item(tree, hf_ieee80211_tag_duplex_relay, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_cooperation_relay, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_tx_mode, tvb, offset, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_link_change_interval, tvb, offset+1, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_data_sensing_time, tvb, offset+2, 1, ENC_NA);
+  proto_tree_add_item(tree, hf_ieee80211_tag_first_period, tvb, offset+3, 2, ENC_LITTLE_ENDIAN);
+  proto_tree_add_item(tree, hf_ieee80211_tag_second_period, tvb, offset+5, 2, ENC_LITTLE_ENDIAN);
+  return tvb_captured_length(tvb);
 }
 
-/* ************************************************************************* */
-/*                     Dissect 802.11 management frame                       */
-/* ************************************************************************* */
-static void
-dissect_ieee80211_mgt(guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+ieee80211_tag_dmg_beam_refinement(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  proto_item *ti;
-  proto_tree *mgt_tree;
-  proto_tree *fixed_tree;
-  proto_tree *tagged_tree;
-  int         offset = 0;
-  int         tagged_parameter_tree_len;
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  static const int * ieee80211_dmg_beam_refinement_fields[] = {
+    &hf_ieee80211_tag_initiator,
+    &hf_ieee80211_tag_tx_train_res,
+    &hf_ieee80211_tag_rx_train_res,
+    &hf_ieee80211_tag_tx_trn_ok,
+    &hf_ieee80211_tag_txss_fbck_req,
+    &hf_ieee80211_tag_bs_fbck,
+    &hf_ieee80211_tag_bs_fbck_antenna_id,
+    &hf_ieee80211_tag_snr_requested,
+    &hf_ieee80211_tag_channel_measurement_requested,
+    &hf_ieee80211_tag_number_of_taps_requested,
+    &hf_ieee80211_tag_sector_id_order_req,
+    &hf_ieee80211_tag_snr_present,
+    &hf_ieee80211_tag_channel_measurement_present,
+    &hf_ieee80211_tag_tap_delay_present,
+    &hf_ieee80211_tag_number_of_taps_present,
+    &hf_ieee80211_tag_number_of_measurement,
+    &hf_ieee80211_tag_sector_id_order_present,
+    &hf_ieee80211_tag_number_of_beams,
+    &hf_ieee80211_tag_mid_extension,
+    &hf_ieee80211_tag_capability_request,
+    &hf_ieee80211_tag_beam_refine_reserved,
+    NULL
+  };
 
-  association_sanity_check_t association_sanity_check;
-  memset(&association_sanity_check, 0, sizeof(association_sanity_check));
+  if (tag_len != 5)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 5", tag_len);
+    return tvb_captured_length(tvb);
+  }
 
-  ieee80211_tvb_invalid = FALSE;
+  proto_tree_add_bitmask_list(tree, tvb, offset, 5, ieee80211_dmg_beam_refinement_fields, ENC_LITTLE_ENDIAN);
+  return tvb_captured_length(tvb);
+}
 
-  ti = proto_tree_add_item(tree, proto_wlan, tvb, 0, -1, ENC_NA);
-  mgt_tree = proto_item_add_subtree(ti, ett_80211_mgt);
+static int
+ieee80211_tag_wakeup_schedule_ad(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
-  switch (COMPOSE_FRAME_TYPE(fcf))
+  if (tag_len != 8)
   {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  proto_tree_add_item(tree, hf_ieee80211_tag_bi_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+  offset += 4;
+  proto_tree_add_item(tree, hf_ieee80211_tag_sleep_cycle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_num_awake_bis, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  return tvb_captured_length(tvb);
+}
 
-    case MGT_ASSOC_REQ:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 4);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
-      add_ff_listen_ival(fixed_tree, tvb, pinfo, 2);
-      offset = 4;  /* Size of fixed fields */
-
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                 tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_ASSOC_REQ, &association_sanity_check);
-      ieee_80211_do_association_sanity_check(pinfo, &association_sanity_check);
-      break;
+static int
+ieee80211_tag_dmg_tspec(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
+  gboolean isGrant;
+  int num_constraints;
+  if (tag_len < 14)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 14", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  static const int * ieee80211_tag_tspec_flags[] = {
+    &hf_ieee80211_tag_tspec_allocation_id,
+    &hf_ieee80211_tag_tspec_allocation_type,
+    &hf_ieee80211_tag_tspec_allocation_format,
+    &hf_ieee80211_tag_tspec_pseudo_static,
+    &hf_ieee80211_tag_tspec_truncatable,
+    &hf_ieee80211_tag_tspec_extendable,
+    &hf_ieee80211_tag_tspec_lp_sc_used,
+    &hf_ieee80211_tag_tspec_up,
+    &hf_ieee80211_tag_tap2,
+    &hf_ieee80211_tag_tspec_dest_aid,
+    NULL
+  };
 
-    case MGT_ASSOC_RESP:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 6);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
-      add_ff_status_code(fixed_tree, tvb, pinfo, 2);
-      add_ff_assoc_id(fixed_tree, tvb, pinfo, 4);
-      offset = 6;  /* Size of fixed fields */
+  proto_tree_add_bitmask_list(tree, tvb, offset, 3, ieee80211_tag_tspec_flags, ENC_LITTLE_ENDIAN);
+  offset += 3;
+  isGrant = ((field_data->ftype==CTRL_GRANT)||(field_data->ftype==CTRL_GRANT_ACK));
+  offset += add_ff_beamforming_ctrl(tree, tvb, pinfo, 2, isGrant);
+  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_allocation_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_min_allocation, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_max_allocation, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_min_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+  offset += 2;
+  num_constraints = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_ieee80211_tag_tspec_num_of_constraints, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  while(num_constraints > 0) {
+    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+    offset += 4;
+    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_period, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+    proto_tree_add_item(tree, hf_ieee80211_tag_tspec_tsconst_interferer_mac, tvb, offset, 2, ENC_NA);
+    offset += 6;
+    num_constraints--;
+  }
+  return tvb_captured_length(tvb);
+}
 
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                 tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_ASSOC_RESP, NULL);
-      break;
+static int
+ieee80211_tag_channel_measurement_fb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
+  int num_measurement;
+  if (tag_len%5 != 0)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be multiple of 5", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  num_measurement = tvb_get_guint8(tvb, offset+1);
+  offset += 2;
+  while(num_measurement > 0) {
+    proto_tree_add_item(tree, hf_ieee80211_ff_snr, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_realtive_I, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_realtive_Q, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_tap_delay, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_sector_id, tvb, offset, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_ieee80211_tag_channel_measurement_feedback_antenna_id, tvb, offset, 1, ENC_NA);
+    offset += 1;
+    num_measurement--;
+  }
+  return tvb_captured_length(tvb);
+}
 
-    case MGT_REASSOC_REQ:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 10);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
-      add_ff_listen_ival(fixed_tree, tvb, pinfo, 2);
-      add_ff_current_ap_addr(fixed_tree, tvb, pinfo, 4);
-      offset = 10;  /* Size of fixed fields */
+static int
+ieee80211_tag_awake_window(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
 
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                 tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_REASSOC_REQ, &association_sanity_check);
-      ieee_80211_do_association_sanity_check(pinfo, &association_sanity_check);
-      break;
+  if (tag_len != 2)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 2", tag_len);
+  }
+  else
+  {
+    proto_tree_add_item(tree, hf_ieee80211_tag_awake_window, tvb, 0, 2, ENC_LITTLE_ENDIAN);
+  }
+  return tvb_captured_length(tvb);
+}
 
-    case MGT_REASSOC_RESP:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 6);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
-      add_ff_status_code(fixed_tree, tvb, pinfo, 2);
-      add_ff_assoc_id(fixed_tree, tvb, pinfo, 4);
-      offset = 6;  /* Size of fixed fields */
+static int
+ieee80211_tag_addba_ext(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
 
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                 tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_REASSOC_RESP, NULL);
-      break;
+  if (tag_len != 1)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 1", tag_len);
+  }
+  else
+  {
+    proto_tree_add_item(tree, hf_ieee80211_tag_addba_ext_no_frag, tvb, 0, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_ieee80211_tag_addba_ext_he_fragmentation_operation, tvb, 0, 1, ENC_NA);
+    proto_tree_add_item(tree, hf_ieee80211_tag_addba_ext_reserved, tvb, 0, 1, ENC_NA);
+  }
+  return tvb_captured_length(tvb);
+}
 
+static int
+ieee80211_tag_multi_band(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  gboolean chiper_present, addr_present;
+  static const int * ieee80211_tag_multi_band_ctrl[] = {
+    &hf_ieee80211_tag_multi_band_ctrl_sta_role,
+    &hf_ieee80211_tag_multi_band_ctrl_addr_present,
+    &hf_ieee80211_tag_multi_band_ctrl_cipher_present,
+    NULL
+  };
+  static const int * ieee80211_tag_multi_band_conn[] = {
+    &hf_ieee80211_tag_multi_band_conn_ap,
+    &hf_ieee80211_tag_multi_band_conn_pcp,
+    &hf_ieee80211_tag_multi_band_conn_dls,
+    &hf_ieee80211_tag_multi_band_conn_tdls,
+    &hf_ieee80211_tag_multi_band_conn_ibss,
+    NULL
+  };
 
-    case MGT_PROBE_REQ:
-      offset = 0;
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                 tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_PROBE_REQ, NULL);
-      break;
+  if (tag_len < 22)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 22", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  chiper_present = (tvb_get_letohs(tvb, offset) & 0x08) >> 3;
+  addr_present = (tvb_get_letohs(tvb, offset) & 0x10) >> 4;
+  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_multi_band_ctrl, ENC_NA);
+  offset += 1;
+  offset += add_ff_band_id(tree, tvb, pinfo, 1);
+  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_oper_class, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_channel_number, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_bssid, tvb, offset, 6, ENC_NA);
+  offset += 6;
+  offset += add_ff_beacon_interval(tree, tvb, pinfo, 2);
+  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_tsf_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN);
+  offset += 8;
 
-    case MGT_PROBE_RESP:
-    {
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
-      add_ff_timestamp(fixed_tree, tvb, pinfo, 0);
-      add_ff_beacon_interval(fixed_tree, tvb, pinfo, 8);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 10);
-      offset = 12;  /* Size of fixed fields */
+  proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_multi_band_conn, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_fst_timeout, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  if(addr_present)
+  {
+    proto_tree_add_item(tree, hf_ieee80211_tag_multi_band_sta_mac, tvb, offset, 6, ENC_NA);
+    offset += 6;
+  }
+  if(chiper_present)
+  {
+    proto_item *rsn_pcs_count, *rsn_pcs_item, *rsn_sub_pcs_item;
+    proto_tree *rsn_pcs_tree, *rsn_sub_pcs_tree;
+    gint ii;
+    guint16     pcs_count;
+    int tag_end = tvb_reported_length(tvb);
+    rsn_pcs_count = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    pcs_count = tvb_get_letohs(tvb, offset);
+    offset += 2;
 
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset, tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, tagged_parameter_tree_len, MGT_PROBE_RESP, NULL);
-      break;
-    }
-    case MGT_MEASUREMENT_PILOT:
+    if (offset + (pcs_count * 4) > tag_end)
     {
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
-      offset += add_ff_timestamp(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_measurement_pilot_int(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_beacon_interval(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_cap_info(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_country_str(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_max_reg_pwr(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_max_tx_pwr(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_tx_pwr_used(fixed_tree, tvb, pinfo, offset);
-      offset += add_ff_transceiver_noise_floor(fixed_tree, tvb, pinfo, offset);
-      /* TODO DS Parameter Set ??? */
-
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset, tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, tagged_parameter_tree_len, MGT_MEASUREMENT_PILOT, NULL);
-      break;
+        expert_add_info_format(pinfo, rsn_pcs_count, &ei_ieee80211_rsn_pcs_count,
+        "Pairwise Cipher Suite Count too large, 4*%u > %d", pcs_count, tag_end - offset);
+        pcs_count = (tag_end - offset) / 4;
     }
-    case MGT_BEACON:    /* Dissect protocol payload fields  */
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
-      add_ff_timestamp(fixed_tree, tvb, pinfo, 0);
-      add_ff_beacon_interval(fixed_tree, tvb, pinfo, 8);
-      add_ff_cap_info(fixed_tree, tvb, pinfo, 10);
-      offset = 12;  /* Size of fixed fields */
-
-      tagged_parameter_tree_len =
-          tvb_reported_length_remaining(tvb, offset);
-      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-      tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-      tagged_parameter_tree_len, MGT_BEACON, NULL);
-      break;
-
-    case MGT_ATIM:
-      break;
-
-    case MGT_DISASS:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 2);
-      add_ff_reason_code(fixed_tree, tvb, pinfo, 0);
-      offset = 2; /* Size of fixed fields */
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      if (tagged_parameter_tree_len > 0) {
-        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                                                tagged_parameter_tree_len);
-        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-                                         tagged_parameter_tree_len, MGT_DISASS, NULL);
-      }
-      break;
-
-    case MGT_AUTHENTICATION:
-      offset = 6;  /* Size of fixed fields */
-      offset += get_ff_auth_sae_len(tvb);
-
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, offset);
-      add_ff_auth_alg(fixed_tree, tvb, pinfo, 0);
-      add_ff_auth_trans_seq(fixed_tree, tvb, pinfo, 2);
-      add_ff_status_code(fixed_tree, tvb, pinfo, 4);
-      add_ff_auth_sae(fixed_tree, tvb);
-
-      tagged_parameter_tree_len =
-        tvb_reported_length_remaining(tvb, offset);
-      if (tagged_parameter_tree_len > 0)
-      {
-        tagged_tree = get_tagged_parameter_tree(mgt_tree,
-            tvb,
-            offset,
-            tagged_parameter_tree_len);
-        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-        tagged_parameter_tree_len, MGT_AUTHENTICATION, NULL);
-      }
-      break;
-
-    case MGT_DEAUTHENTICATION:
-      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 2);
-      add_ff_reason_code(fixed_tree, tvb, pinfo, 0);
-      offset = 2; /* Size of fixed fields */
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      if (tagged_parameter_tree_len > 0) {
-        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-                                                tagged_parameter_tree_len);
-        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-                                         tagged_parameter_tree_len, MGT_DEAUTHENTICATION, NULL);
-      }
-      break;
 
-    case MGT_ACTION:
+    rsn_pcs_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_list, tvb, offset, pcs_count * 4, ENC_NA);
+    rsn_pcs_tree = proto_item_add_subtree(rsn_pcs_item, ett_rsn_pcs_tree);
+    for (ii = 0; ii < pcs_count; ii++)
     {
-      proto_item *lcl_fixed_hdr;
-      proto_tree *lcl_fixed_tree;
-      lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
-      offset += add_ff_action(lcl_fixed_tree, tvb, pinfo, 0);
+      rsn_sub_pcs_item = proto_tree_add_item(rsn_pcs_tree, hf_ieee80211_rsn_pcs, tvb, offset, 4, ENC_BIG_ENDIAN);
+      rsn_sub_pcs_tree = proto_item_add_subtree(rsn_sub_pcs_item, ett_rsn_sub_pcs_tree);
+      proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN);
 
-      proto_item_set_len(lcl_fixed_hdr, offset);
-      if (ieee80211_tvb_invalid)
-        break; /* Buffer not available for further processing */
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      if (tagged_parameter_tree_len > 0)
+      /* Check if OUI is 00:0F:AC (ieee80211) */
+      if (tvb_get_ntoh24(tvb, offset) == OUI_RSN)
       {
-        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-          tagged_parameter_tree_len);
-        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_ACTION, NULL);
+        proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_80211_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
+        proto_item_append_text(rsn_pcs_item, " %s", rsn_pcs_return(tvb_get_ntohl(tvb, offset)));
+      } else {
+        proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_type, tvb, offset+3, 1, ENC_LITTLE_ENDIAN);
       }
-      break;
+      offset += 4;
     }
-    case MGT_ACTION_NO_ACK:
-    {
-      proto_item *lcl_fixed_hdr;
-      proto_tree *lcl_fixed_tree;
-      lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
+  }
 
-      offset += add_ff_action(lcl_fixed_tree, tvb, pinfo, 0);
+  return tvb_captured_length(tvb);
+}
 
-      proto_item_set_len(lcl_fixed_hdr, offset);
-      if (ieee80211_tvb_invalid)
-        break; /* Buffer not available for further processing */
-      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-      if (tagged_parameter_tree_len > 0)
-      {
-        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
-          tagged_parameter_tree_len);
-        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-          tagged_parameter_tree_len, MGT_ACTION_NO_ACK, NULL);
-      }
-      break;
-    }
-    case MGT_ARUBA_WLAN:
-    {
-      proto_tree *aruba_tree;
-      guint16 type;
-      type = tvb_get_ntohs(tvb, offset);
-
-      aruba_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, NULL, "Aruba Management");
+static int
+ieee80211_tag_dmg_link_margin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
+{
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
-      proto_tree_add_item(aruba_tree, hf_ieee80211_aruba, tvb, offset, 2, ENC_BIG_ENDIAN);
-      offset += 2;
-      switch(type){
-        case 0x0003: /* MTU Size */
-          proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_mtu, tvb, offset, 2, ENC_BIG_ENDIAN);
-        break;
-        case 0x0005: /* HeartBeat Sequence */
-          proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_hb_seq, tvb, offset, 8, ENC_BIG_ENDIAN);
-        break;
-      }
-      break;
-    }
+  if (tag_len != 8)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 8", tag_len);
+    return tvb_captured_length(tvb);
   }
+  proto_tree_add_item(tree, hf_ieee80211_tag_activity, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_link_adapt_mcs, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_dmg_link_adapt_link_margin, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_ff_snr, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_ref_timestamp, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+  return tvb_captured_length(tvb);
 }
 
-static void
-set_src_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
+static int
+ieee80211_tag_dmg_link_adaption_ack(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  address      ether_addr;
-
-  set_address_tvb(&ether_addr, AT_ETHER, 6, tvb, offset);
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
 
-  col_add_fstr(pinfo->cinfo, COL_RES_DL_SRC, "%s (%s)",
-        address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
+  if (tag_len != 5)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be 5", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  proto_tree_add_item(tree, hf_ieee80211_tag_activity, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  proto_tree_add_item(tree, hf_ieee80211_tag_ref_timestamp, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+  return tvb_captured_length(tvb);
 }
 
-static void
-set_dst_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
+static int
+ieee80211_tag_switching_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
 {
-  address      ether_addr;
-
-  set_address_tvb(&ether_addr, AT_ETHER, 6, tvb, offset);
+  int tag_len = tvb_reported_length(tvb);
+  ieee80211_tagged_field_data_t* field_data = (ieee80211_tagged_field_data_t*)data;
+  int offset = 0;
+  static const int * ieee80211_tag_switching_stream_flags[] = {
+    &hf_ieee80211_tag_switching_stream_old_tid,
+    &hf_ieee80211_tag_switching_stream_old_direction,
+    &hf_ieee80211_tag_switching_stream_new_tid,
+    &hf_ieee80211_tag_switching_stream_new_direction,
+    &hf_ieee80211_tag_switching_stream_new_valid_id,
+    &hf_ieee80211_tag_switching_stream_llt_type,
+    NULL
+  };
 
-  col_add_fstr(pinfo->cinfo, COL_RES_DL_DST, "%s (%s)",
-        address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
+  int param_num;
+  if (tag_len < 4)
+  {
+    expert_add_info_format(pinfo, field_data->item_tag_length, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be at least 4", tag_len);
+    return tvb_captured_length(tvb);
+  }
+  offset += add_ff_band_id(tree, tvb, pinfo, 1);
+  offset += add_ff_band_id(tree, tvb, pinfo, 1);
+  proto_tree_add_item(tree, hf_ieee80211_tag_switching_stream_non_qos, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  param_num = tvb_get_letohs(tvb, offset);
+  proto_tree_add_item(tree, hf_ieee80211_tag_switching_stream_param_num, tvb, offset, 1, ENC_NA);
+  offset += 1;
+  while(param_num > 0)
+  {
+    proto_tree_add_bitmask_list(tree, tvb, offset, 1, ieee80211_tag_switching_stream_flags, ENC_NA);
+    param_num--;
+    offset += 2;
+  }
+  return tvb_captured_length(tvb);
 }
 
-static guint32
-crc32_802_tvb_padded(tvbuff_t *tvb, guint hdr_len, guint hdr_size, guint len)
+static void
+ieee_80211_add_tagged_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo,
+                                  proto_tree *tree, int tagged_parameters_len, int ftype,
+                                  association_sanity_check_t *association_sanity_check)
 {
-  guint32 c_crc;
+  int next_len;
+  beacon_padding = 0; /* this is for the beacon padding confused with ssid fix */
+  while (tagged_parameters_len > 0) {
+    /* TODO make callers optionally specify the list of valid IE IDs? */
+    if ((next_len=add_tagged_field (pinfo, tree, tvb, offset, ftype, NULL, 0, association_sanity_check)) == 0)
+      break;
+    if (next_len > tagged_parameters_len) {
+      /* XXX - flag this as an error? */
+      next_len = tagged_parameters_len;
+    }
+    offset                += next_len;
+    tagged_parameters_len -= next_len;
+  }
+}
 
-  c_crc = crc32_ccitt_tvb(tvb, hdr_len);
-  c_crc = crc32_ccitt_tvb_offset_seed(tvb, hdr_size, len, ~c_crc);
+static void
+ieee_80211_do_association_sanity_check(packet_info *pinfo, association_sanity_check_t *sanity_check)
+{
+  /* Given a [re-]association request frame, consider it in its totality and
+     add expert information as appropriate */
 
-  return (c_crc);
+  if (sanity_check->association_has_mobility_domain_element) {
+    /* This is an FT association, warn about any non-FT AKM suites */
+    if (sanity_check->has_non_ft_akm_suite) {
+      expert_add_info_format(pinfo, sanity_check->rsn_first_non_ft_akm_suite, &ei_ieee80211_mismatched_akm_suite,
+                             "Non-FT AKM suite is prohibited for FT association request");
+    }
+  } else {
+    /* This is a non-FT association, warn about any FT AKM suites */
+    if (sanity_check->has_ft_akm_suite) {
+      expert_add_info_format(pinfo, sanity_check->rsn_first_ft_akm_suite, &ei_ieee80211_mismatched_akm_suite,
+                             "FT AKM suite is prohibited for non-FT association request");
+    }
+  }
 }
 
-typedef enum {
-    ENCAP_802_2,
-    ENCAP_IPX,
-    ENCAP_ETHERNET
-} encap_t;
-
 /* ************************************************************************* */
-/*                          Dissect 802.11 frame                             */
+/*                     Dissect 802.11 management frame                       */
 /* ************************************************************************* */
-/*
- * The 802.11n specification makes some fairly significant changes to the
- * layout of the MAC header.  The first two bits of the MAC header are the
- * protocol version.  You'd think that the 802.11 committee would have
- * bumped the version to indicate a different MAC layout, but NOOOO -- we
- * have to go digging for bits in various locations instead.
- */
-static int
-dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
-                          proto_tree *tree, guint32 option_flags,
-                          struct ieee_802_11_phdr *phdr)
+static void
+dissect_ieee80211_mgt(guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 {
-  guint16          fcf, flags, frame_type_subtype, ctrl_fcf, ctrl_type_subtype;
-  guint16          cw_fcf;
-  guint16          seq_control;
-  guint32          seq_number, frag_number;
-  gboolean         more_frags;
-  proto_item      *ti          = NULL;
-  proto_item      *cw_item     = NULL;
-  proto_item      *hidden_item;
-  proto_tree      *cw_tree     = NULL;
-  guint16          hdr_len, ohdr_len;
-  guint16          htc_len     = 0;
-  gboolean         has_fcs;
-  gint             len, reported_len, ivlen;
-  gint             sta_addr_offset = 0;
-  const gchar     *station_name;
-  gboolean         is_amsdu    = 0;
-  gboolean         save_fragmented;
-  guint32          addr_type;
-  guint8           octet1, octet2;
-  char             out_buff[SHORT_STR];
-  gint             is_iv_bad;
-  guchar           iv_buff[4];
-  const char      *addr1_str   = "RA";
-  guint            offset;
-  const gchar     *fts_str;
-  gchar            flag_str[]  = "opmPRMFTC";
-  gint             ii;
-  guint16          qosoff      = 0;
-  guint16          qos_control = 0;
-  gint             meshctl_len = 0;
-  guint8           mesh_flags;
-  guint16          meshoff     = 0;
-  static wlan_hdr_t whdrs[4];
-  gboolean         retransmitted;
-  gboolean         isDMG = (phdr->has_frequency ?
-                                IS_80211AD(phdr->frequency) :
-                                FALSE);
+  proto_item *ti;
+  proto_tree *mgt_tree;
+  proto_tree *fixed_tree;
+  proto_tree *tagged_tree;
+  int         offset = 0;
+  int         tagged_parameter_tree_len;
 
-  encap_t     encap_type;
-  proto_tree *hdr_tree = NULL;
-  tvbuff_t   *next_tvb = NULL;
-  wlan_hdr_t *whdr;
+  association_sanity_check_t association_sanity_check;
+  memset(&association_sanity_check, 0, sizeof(association_sanity_check));
 
-  AIRPDCAP_KEY_ITEM  used_key;
+  ieee80211_tvb_invalid = FALSE;
 
-  p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_DMG_KEY, GINT_TO_POINTER(isDMG));
+  ti = proto_tree_add_item(tree, proto_wlan, tvb, 0, -1, ENC_NA);
+  mgt_tree = proto_item_add_subtree(ti, ett_80211_mgt);
 
-  whdr= &whdrs[0];
+  switch (COMPOSE_FRAME_TYPE(fcf))
+  {
 
-  col_set_str(pinfo->cinfo, COL_PROTOCOL, "802.11");
-  col_clear(pinfo->cinfo, COL_INFO);
+    case MGT_ASSOC_REQ:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 4);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
+      add_ff_listen_ival(fixed_tree, tvb, pinfo, 2);
+      offset = 4;  /* Size of fixed fields */
 
-  fcf = FETCH_FCF(0);
-  frame_type_subtype = COMPOSE_FRAME_TYPE(fcf);
-  whdr->type = frame_type_subtype;
-  if (frame_type_subtype == CTRL_CONTROL_WRAPPER)
-    ctrl_fcf = FETCH_FCF(10);
-  else
-    ctrl_fcf = 0;
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                 tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_ASSOC_REQ, &association_sanity_check);
+      ieee_80211_do_association_sanity_check(pinfo, &association_sanity_check);
+      break;
 
-  fts_str = val_to_str_ext_const(frame_type_subtype, &frame_type_subtype_vals_ext,
-                                 "Unrecognized (Reserved frame)");
-  col_set_str(pinfo->cinfo, COL_INFO, fts_str);
 
+    case MGT_ASSOC_RESP:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 6);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
+      add_ff_status_code(fixed_tree, tvb, pinfo, 2);
+      add_ff_assoc_id(fixed_tree, tvb, pinfo, 4);
+      offset = 6;  /* Size of fixed fields */
 
-# define FROM_TO_DS 3
-  flags = FCF_FLAGS(fcf);
-  more_frags = HAVE_FRAGMENTS(flags);
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                 tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_ASSOC_RESP, NULL);
+      break;
 
-  for (ii = 0; ii < 8; ii++) {
-    if (! (flags & 0x80 >> ii)) {
-      flag_str[ii] = '.';
-    }
-  }
 
-  switch (FCF_FRAME_TYPE (fcf)) {
+    case MGT_REASSOC_REQ:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 10);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
+      add_ff_listen_ival(fixed_tree, tvb, pinfo, 2);
+      add_ff_current_ap_addr(fixed_tree, tvb, pinfo, 4);
+      offset = 10;  /* Size of fixed fields */
 
-  case MGT_FRAME:
-    hdr_len = MGT_FRAME_HDR_LEN;
-    if (HAS_HT_CONTROL(FCF_FLAGS(fcf))) {
-      /*
-       * Management frames with the Order bit set have an HT Control field;
-       * see 8.2.4.1.10 "Order field".  If they're not HT frames, they should
-       * never have the Order bit set.
-       */
-      hdr_len += 4;
-      htc_len = 4;
-    }
-    break;
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                 tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_REASSOC_REQ, &association_sanity_check);
+      ieee_80211_do_association_sanity_check(pinfo, &association_sanity_check);
+      break;
 
-  case CONTROL_FRAME:
-    if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
-      hdr_len = 6;
-      cw_fcf = ctrl_fcf;
-    } else {
-      hdr_len = 0;
-      cw_fcf = fcf;
-    }
-    switch (COMPOSE_FRAME_TYPE (cw_fcf)) {
+    case MGT_REASSOC_RESP:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 6);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 0);
+      add_ff_status_code(fixed_tree, tvb, pinfo, 2);
+      add_ff_assoc_id(fixed_tree, tvb, pinfo, 4);
+      offset = 6;  /* Size of fixed fields */
 
-    case CTRL_BEAMFORM_RPT_POLL:
-      hdr_len += 17;
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                 tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_REASSOC_RESP, NULL);
       break;
 
-    case CTRL_VHT_NDP_ANNC:
-      hdr_len += 17;
-      /* TODO: for now we only consider a single STA, add support for more */
-      hdr_len += 2;
-      break;
 
-    case CTRL_CTS:
-    case CTRL_ACKNOWLEDGEMENT:
-      hdr_len += 10;
+    case MGT_PROBE_REQ:
+      offset = 0;
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                 tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_PROBE_REQ, NULL);
       break;
 
-    case CTRL_POLL:
-      hdr_len += 18;
-      break;
+    case MGT_PROBE_RESP:
+    {
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
+      add_ff_timestamp(fixed_tree, tvb, pinfo, 0);
+      add_ff_beacon_interval(fixed_tree, tvb, pinfo, 8);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 10);
+      offset = 12;  /* Size of fixed fields */
 
-    case CTRL_SPR:
-    case CTRL_GRANT:
-    case CTRL_GRANT_ACK:
-      hdr_len += 23;
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset, tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, tagged_parameter_tree_len, MGT_PROBE_RESP, NULL);
       break;
+    }
+    case MGT_MEASUREMENT_PILOT:
+    {
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
+      offset += add_ff_timestamp(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_measurement_pilot_int(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_beacon_interval(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_cap_info(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_country_str(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_max_reg_pwr(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_max_tx_pwr(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_tx_pwr_used(fixed_tree, tvb, pinfo, offset);
+      offset += add_ff_transceiver_noise_floor(fixed_tree, tvb, pinfo, offset);
+      /* TODO DS Parameter Set ??? */
 
-    case CTRL_DMG_CTS:
-      hdr_len += 16;
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset, tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, tagged_parameter_tree_len, MGT_MEASUREMENT_PILOT, NULL);
       break;
+    }
+    case MGT_BEACON:    /* Dissect protocol payload fields  */
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 12);
+      add_ff_timestamp(fixed_tree, tvb, pinfo, 0);
+      add_ff_beacon_interval(fixed_tree, tvb, pinfo, 8);
+      add_ff_cap_info(fixed_tree, tvb, pinfo, 10);
+      offset = 12;  /* Size of fixed fields */
 
-    case CTRL_DMG_DTS:
-    case CTRL_SSW:
-      hdr_len += 22;
+      tagged_parameter_tree_len =
+          tvb_reported_length_remaining(tvb, offset);
+      tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+      tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+      tagged_parameter_tree_len, MGT_BEACON, NULL);
       break;
 
-    case CTRL_SSW_FEEDBACK:
-    case CTRL_SSW_ACK:
-      hdr_len += 24;
+    case MGT_ATIM:
       break;
 
-    case CTRL_RTS:
-    case CTRL_PS_POLL:
-    case CTRL_CFP_END:
-    case CTRL_CFP_ENDACK:
-    case CTRL_BLOCK_ACK_REQ:
-    case CTRL_BLOCK_ACK:
-      hdr_len += 16;
+    case MGT_DISASS:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 2);
+      add_ff_reason_code(fixed_tree, tvb, pinfo, 0);
+      offset = 2; /* Size of fixed fields */
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      if (tagged_parameter_tree_len > 0) {
+        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                                                tagged_parameter_tree_len);
+        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+                                         tagged_parameter_tree_len, MGT_DISASS, NULL);
+      }
       break;
 
-    default:
-      hdr_len += 4;  /* XXX */
-      break;
-    }
-    break;
+    case MGT_AUTHENTICATION:
+      offset = 6;  /* Size of fixed fields */
+      offset += get_ff_auth_sae_len(tvb);
 
-  case DATA_FRAME:
-    hdr_len = (FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T4) ? DATA_LONG_HDR_LEN : DATA_SHORT_HDR_LEN;
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, offset);
+      add_ff_auth_alg(fixed_tree, tvb, pinfo, 0);
+      add_ff_auth_trans_seq(fixed_tree, tvb, pinfo, 2);
+      add_ff_status_code(fixed_tree, tvb, pinfo, 4);
+      add_ff_auth_sae(fixed_tree, tvb);
 
-    if ((option_flags & IEEE80211_COMMON_OPT_NORMAL_QOS) && DATA_FRAME_IS_QOS(frame_type_subtype)) {
-      /* QoS frame */
-      qosoff = hdr_len;
-      hdr_len += 2; /* Include the QoS field in the header length */
+      tagged_parameter_tree_len =
+        tvb_reported_length_remaining(tvb, offset);
+      if (tagged_parameter_tree_len > 0)
+      {
+        tagged_tree = get_tagged_parameter_tree(mgt_tree,
+            tvb,
+            offset,
+            tagged_parameter_tree_len);
+        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+        tagged_parameter_tree_len, MGT_AUTHENTICATION, NULL);
+      }
+      break;
 
-      if (HAS_HT_CONTROL(FCF_FLAGS(fcf))) {
-        /*
-         * QoS data frames with the Order bit set have an HT Control field;
-         * see 8.2.4.1.10 "Order field".  If they're not HT frames, they
-         * should never have the Order bit set.
-         */
-        hdr_len += 4;
-        htc_len = 4;
+    case MGT_DEAUTHENTICATION:
+      fixed_tree = get_fixed_parameter_tree(mgt_tree, tvb, 0, 2);
+      add_ff_reason_code(fixed_tree, tvb, pinfo, 0);
+      offset = 2; /* Size of fixed fields */
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      if (tagged_parameter_tree_len > 0) {
+        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+                                                tagged_parameter_tree_len);
+        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+                                         tagged_parameter_tree_len, MGT_DEAUTHENTICATION, NULL);
       }
+      break;
 
-      /*
-       * Does it look as if we have a mesh header?
-       * Look at the Mesh Control subfield of the QoS field and at the
-       * purported mesh flag fields.
-       */
-      qos_control = tvb_get_letohs(tvb, qosoff);
-      if (tvb_bytes_exist(tvb, hdr_len, 1)) {
-        meshoff = hdr_len;
-        mesh_flags = tvb_get_guint8(tvb, meshoff);
-        if (has_mesh_control(fcf, qos_control, mesh_flags)) {
-          /* Yes, add the length of that in as well. */
-          meshctl_len = find_mesh_control_length(mesh_flags);
-          hdr_len += meshctl_len;
-        }
+    case MGT_ACTION:
+    {
+      proto_item *lcl_fixed_hdr;
+      proto_tree *lcl_fixed_tree;
+      lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
+      offset += add_ff_action(lcl_fixed_tree, tvb, pinfo, 0);
+
+      proto_item_set_len(lcl_fixed_hdr, offset);
+      if (ieee80211_tvb_invalid)
+        break; /* Buffer not available for further processing */
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      if (tagged_parameter_tree_len > 0)
+      {
+        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+          tagged_parameter_tree_len);
+        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_ACTION, NULL);
       }
+      break;
     }
-    break;
-
-  case EXTENSION_FRAME:
-    hdr_len = 10;
-    break;
+    case MGT_ACTION_NO_ACK:
+    {
+      proto_item *lcl_fixed_hdr;
+      proto_tree *lcl_fixed_tree;
+      lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
 
-  default:
-    hdr_len = 4;  /* XXX */
-    break;
-  }
+      offset += add_ff_action(lcl_fixed_tree, tvb, pinfo, 0);
 
-  /*
-   * Some portions of this code calculate offsets relative to the end of the
-   * header.  But when the header has been padded to align the data this must
-   * be done relative to true header size, not the padded/aligned value.  To
-   * simplify this work we stash the original header size in ohdr_len instead
-   * of recalculating it every time we need it.
-   */
-  ohdr_len = hdr_len;
-  if (phdr->datapad) {
-    /*
-     * Add in Atheros padding between the 802.11 header and body.
-     *
-     * XXX - would the mesh header be part of the header or the body
-     * from the point of view of the Atheros adapters that insert
-     * the padding, assuming they even recognize a mesh header?
-     */
-    hdr_len = roundup2(hdr_len, 4);
-  }
-
-  /* Add the FC and duration/id to the current tree */
-  ti = proto_tree_add_protocol_format (tree, proto_wlan, tvb, 0, hdr_len,
-                                           "IEEE 802.11 %s", fts_str);
-  hdr_tree = proto_item_add_subtree(ti, ett_80211);
-
-  dissect_frame_control(hdr_tree, tvb, option_flags, 0, pinfo);
-  dissect_durid(hdr_tree, tvb, frame_type_subtype, 2);
-
-  switch (phdr->fcs_len)
+      proto_item_set_len(lcl_fixed_hdr, offset);
+      if (ieee80211_tvb_invalid)
+        break; /* Buffer not available for further processing */
+      tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+      if (tagged_parameter_tree_len > 0)
+      {
+        tagged_tree = get_tagged_parameter_tree(mgt_tree, tvb, offset,
+          tagged_parameter_tree_len);
+        ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+          tagged_parameter_tree_len, MGT_ACTION_NO_ACK, NULL);
+      }
+      break;
+    }
+    case MGT_ARUBA_WLAN:
     {
-      case 0: /* Definitely has no FCS */
-        has_fcs = FALSE;
-        break;
+      proto_tree *aruba_tree;
+      guint16 type;
+      type = tvb_get_ntohs(tvb, offset);
 
-      case 4: /* Definitely has an FCS */
-        has_fcs = TRUE;
-        break;
+      aruba_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, NULL, "Aruba Management");
 
-      case -2: /* Data frames have no FCS, other frames may have an FCS */
-               /* XXX: -2 currently used only in wiretap/netmon.c       */
-        if (FCF_FRAME_TYPE (fcf) == DATA_FRAME)
-          has_fcs = FALSE;
-        else /* Management, Control, Extension */
-          has_fcs = wlan_check_fcs;
+      proto_tree_add_item(aruba_tree, hf_ieee80211_aruba, tvb, offset, 2, ENC_BIG_ENDIAN);
+      offset += 2;
+      switch(type){
+        case 0x0003: /* MTU Size */
+          proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_mtu, tvb, offset, 2, ENC_BIG_ENDIAN);
         break;
-
-      default: /* Don't know - use "wlan_check_fcs" */
-        has_fcs = wlan_check_fcs;
+        case 0x0005: /* HeartBeat Sequence */
+          proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_hb_seq, tvb, offset, 8, ENC_BIG_ENDIAN);
         break;
+      }
+      break;
     }
-
-  /*
-   * Decode the part of the frame header that isn't the same for all
-   * frame types.
-   */
-  seq_control = 0;
-  frag_number = 0;
-  seq_number = 0;
-
-  /* all frames have address 1 = RA */
-  if (tree) {
-    const gchar *ether_name = tvb_get_ether_name(tvb, 4);
-    proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
-    hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6, ether_name);
-    PROTO_ITEM_SET_HIDDEN(hidden_item);
-    hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
-    PROTO_ITEM_SET_HIDDEN(hidden_item);
-    hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6, ether_name);
-    PROTO_ITEM_SET_HIDDEN(hidden_item);
   }
+}
 
-  switch (FCF_FRAME_TYPE (fcf))
-  {
-
-    case MGT_FRAME:
-      /*
-       * All management frame types have the same header.
-       */
-      set_address_tvb(&pinfo->dl_src, wlan_address_type, 6, tvb, 10);
-      copy_address_shallow(&pinfo->src, &pinfo->dl_src);
-      set_address_tvb(&pinfo->dl_dst, wlan_address_type, 6, tvb, 4);
-      copy_address_shallow(&pinfo->dst, &pinfo->dl_dst);
+/*
+ * Dissect a Block Ack request (which is also used in Trigger frames).
+ */
+static const int *block_ack_control_headers[] = {
+  &hf_ieee80211_block_ack_control_ack_policy,
+  &hf_ieee80211_block_ack_control_type,
+  &hf_ieee80211_block_ack_control_reserved,
+  &hf_ieee80211_block_ack_control_tid_info,
+  NULL
+};
 
-      /* for tap */
-      set_address_tvb(&whdr->bssid, wlan_bssid_address_type, 6, tvb, 16);
-      copy_address_shallow(&whdr->src, &pinfo->dl_src);
-      copy_address_shallow(&whdr->dst, &pinfo->dl_dst);
+static const int *multi_sta_aid_tid_headers[] = {
+  &hf_ieee80211_block_ack_multi_sta_aid11,
+  &hf_ieee80211_block_ack_multi_sta_ack_type,
+  &hf_ieee80211_block_ack_multi_sta_tid,
+ NULL
+};
 
-      seq_control = tvb_get_letohs(tvb, 22);
-      frag_number = SEQCTL_FRAGMENT_NUMBER(seq_control);
-      seq_number = SEQCTL_SEQUENCE_NUMBER(seq_control);
+/*
+ * These bits are shown in reverse order in the spec.
+ */
+#define BASIC_BLOCK_ACK               0x0
+#define EXTENDED_COMPRESSED_BLOCK_ACK 0x1
+#define COMPRESSED_BLOCK_ACK          0x2
+#define MULTI_TID_BLOCK_ACK           0x3
+#define GCR_BLOCK_ACK                 0x6
+#define GLK_GCR_BLOCK_ACK             0xA
+#define MULTI_STA_BLOCK_ACK           0xB
+
+static const value_string block_ack_type_vals[] = {
+  { BASIC_BLOCK_ACK,               "Basic BlockAck" },
+  { EXTENDED_COMPRESSED_BLOCK_ACK, "Extended Compressed BlockAck" },
+  { COMPRESSED_BLOCK_ACK,          "Compressed BlockAck" },
+  { MULTI_TID_BLOCK_ACK,           "Multi-TID BlockAck" },
+  { GCR_BLOCK_ACK,                 "GCR BlockAck" },
+  { GLK_GCR_BLOCK_ACK,             "GLK-GCR BlockAck" },
+  { MULTI_STA_BLOCK_ACK,           "Multi-STA BlockAck" },
+  { 0, NULL }
+};
 
-      col_append_fstr(pinfo->cinfo, COL_INFO,
-            ", SN=%d", seq_number);
+static int
+dissect_ieee80211_block_ack_details(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, gboolean isDMG, gboolean is_req, gboolean has_fcs)
+{
+  proto_item     *pi;
+  guint16         ba_control;
+  guint8          block_ack_type;
+  proto_tree     *ba_tree;
+  guint8          tid_count, frag_num;
+  guint           i;
+  proto_tree     *ba_mtid_tree, *ba_mtid_sub_tree;
+  guint16         ssn;
+  guint64         bmap;
+  int             f;
+  proto_item     *ba_bitmap_item;
+  proto_tree     *ba_bitmap_tree;
+  guint16         aid_tid;
+  proto_tree     *ba_multi_sta_tree;
+  int             ba_start = offset;
+
+  ba_control = tvb_get_letohs(tvb, offset);
+  block_ack_type = (ba_control & 0x001E) >> 1;
+  ba_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_block_ack,
+                        &pi, is_req ? "%s Request" : "%s Response",
+                        val_to_str(block_ack_type, block_ack_type_vals,
+                                "Reserved (%d)"));
+  proto_tree_add_bitmask_with_flags(ba_tree, tvb, offset,
+                        hf_ieee80211_block_ack_control,
+                        ett_block_ack_request_control,
+                        block_ack_control_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
 
-      col_append_fstr(pinfo->cinfo, COL_INFO,
-            ", FN=%d", frag_number);
+  switch (block_ack_type) {
+  case BASIC_BLOCK_ACK:
+    if (isDMG == TRUE) {
+      expert_add_info_format(pinfo, ba_tree, &ei_ieee80211_dmg_subtype,
+                        "DMG STAs shouldn't transmit BlockAckReq frames "
+                        "with Basic BlockAckReqs");
+    }
 
-      if (tree)
-      {
-        const gchar *ra_da_name, *ta_sa_name, *bssid_name;
+    /* Both request and response have an SSC */
+    offset += add_ff_block_ack_ssc(ba_tree, tvb, pinfo, offset);
 
-        ra_da_name = tvb_get_ether_name(tvb, 4);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6, ra_da_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
-        ta_sa_name = tvb_get_ether_name(tvb, 10);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6, ta_sa_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_sa, tvb, 10, 6, ENC_NA);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6, ta_sa_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 16, 6, ENC_NA);
-        bssid_name = tvb_get_ether_name(tvb, 16);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6, bssid_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
+    if (!is_req) {
+      proto_tree_add_item(ba_tree, hf_ieee80211_block_ack_bitmap, tvb, offset,
+                        128, ENC_NA);
+      offset += 128;
+    }
+    break;
 
-        /* FIXME: With mgmt frames FROM_TO_DS is always 0, perhaps compare address to bssid instead? */
-        if ((flags & FROM_TO_DS) == FLAG_FROM_DS) { /* Receiver address */
-          sta_addr_offset = 4;
-        } else if ((flags & FROM_TO_DS) == FLAG_TO_DS) { /* Transmitter address */
-          sta_addr_offset = 10;
-        }
-        if (sta_addr_offset > 0) {
-          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_staa, tvb, sta_addr_offset, 6, ENC_NA);
-          station_name = tvb_get_ether_name(tvb, sta_addr_offset);
-          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_staa_resolved, tvb, sta_addr_offset, 6, station_name);
-          PROTO_ITEM_SET_HIDDEN(hidden_item);
+  case COMPRESSED_BLOCK_ACK:
+    /*
+     * FIXME: For 802.11ax, the block ack bitmap can be 8 or 32 bytes
+     * depending on the values of the fragment number subfield in the
+     * SSC! All values other that 0 and 2 in bits B1 & B2 are reserved.
+     */
+    ssn = tvb_get_letohs(tvb, offset);
+    frag_num = ssn & 0x0F;
+    ssn >>= 4;
+    offset += add_ff_block_ack_ssc(ba_tree, tvb, pinfo, offset);
+
+    if (!is_req) {
+      if ((frag_num & 0x06) == 0) {
+        bmap = tvb_get_letoh64(tvb, offset);
+        ba_bitmap_item = proto_tree_add_item(ba_tree,
+                          hf_ieee80211_block_ack_bitmap,
+                          tvb, offset, 8, ENC_NA);
+        ba_bitmap_tree = proto_item_add_subtree(ba_bitmap_item,
+                          ett_block_ack_bitmap);
+        for (f = 0; f < 64; f++) {
+          if (bmap & (G_GUINT64_CONSTANT(1) << f))
+            continue;
+          proto_tree_add_uint_format_value(ba_bitmap_tree,
+                          hf_ieee80211_block_ack_bitmap_missing_frame,
+                          tvb, offset + (f/8), 1, ssn + f, "%u",
+                          (ssn + f) & 0x0fff);
         }
-        /* add items for wlan.addr filter */
-        hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6, ta_sa_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6, bssid_name);
-        PROTO_ITEM_SET_HIDDEN(hidden_item);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
-        proto_tree_add_item(hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
-      }
-      break;
+        offset += 8;
+      } else if ((frag_num & 0x06) == 2) {
 
-    case CONTROL_FRAME:
-    {
-      /*
-       * Control Wrapper frames insert themselves between address 1
-       * and address 2 in a normal control frame.  Process address 1
-       * first, then handle the rest of the frame in dissect_control.
-       */
-      if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
-        offset = 10; /* FC + D/ID + Address 1 + CFC + HTC */
-        ctrl_fcf = FETCH_FCF(10);
-        ctrl_type_subtype = COMPOSE_FRAME_TYPE(ctrl_fcf);
+        proto_tree_add_item(ba_tree, hf_ieee80211_block_ack_bitmap, tvb,
+                        offset, 32, ENC_NA);
+        offset += 32;
       } else {
-        offset = 10; /* FC + D/ID + Address 1 */
-        ctrl_type_subtype = frame_type_subtype;
+        /* Reserved ... */
       }
-      /* Added to disallow DMG STA to transfer packets of certain forbidden types. */
-      switch (ctrl_type_subtype)
-      {
-        case CTRL_PS_POLL:
-        case CTRL_CTS:
-        case CTRL_CFP_ENDACK:
-        if(isDMG == TRUE) {
-          expert_add_info_format(pinfo, hdr_tree, &ei_ieee80211_dmg_subtype,
-              "DMG STA shouldn't transmit control frame of type contention-free period end+ack");
-        }
-        break;
-        default:
-          break;
+    }
+    break;
+
+  case EXTENDED_COMPRESSED_BLOCK_ACK:
+    if (isDMG == FALSE) {
+      expert_add_info_format(pinfo, ba_tree, &ei_ieee80211_dmg_subtype,
+                        "Non-DMG STAs shouldn't transmit BlockAckReq "
+                        "frames with Extended Compressed BlockAckReqs");
+    }
+
+    offset += add_ff_block_ack_ssc(ba_tree, tvb, pinfo, offset);
+
+    if (!is_req) {
+      ssn = tvb_get_letohs(tvb, offset);
+      ssn >>= 4;
+
+      bmap = tvb_get_letoh64(tvb, offset);
+      ba_bitmap_item = proto_tree_add_item(ba_tree,
+                        hf_ieee80211_block_ack_bitmap,
+                        tvb, offset, 8, ENC_NA);
+      ba_bitmap_tree = proto_item_add_subtree(ba_bitmap_item,
+                        ett_block_ack_bitmap);
+      for (f = 0; f < 64; f++) {
+        if (bmap & (G_GUINT64_CONSTANT(1) << f))
+          continue;
+        proto_tree_add_uint(ba_bitmap_tree,
+                        hf_ieee80211_block_ack_bitmap_missing_frame,
+                        tvb, offset + (f/8), 1, ssn + f);
       }
+      offset += 8;
+      proto_tree_add_item(ba_tree, hf_ieee80211_block_ack_RBUFCAP, tvb, offset,
+                        1, ENC_LITTLE_ENDIAN);
+      offset += 1;
+    }
+    break;
 
-      if (ctrl_type_subtype == CTRL_PS_POLL) {
-        addr1_str = "BSSID";
-        if (tree) {
-          const gchar *ether_name = tvb_get_ether_name(tvb, 4);
-          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
-          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 4, 6, ether_name);
-          PROTO_ITEM_SET_HIDDEN(hidden_item);
-        }
+  case MULTI_TID_BLOCK_ACK:
+
+    if (isDMG == TRUE) {
+      expert_add_info_format(pinfo, ba_tree, &ei_ieee80211_dmg_subtype,
+                        "DMG STAs shouldn't transmit BlockAckReq frames "
+                        "with Multi-TID BlockAckReqs");
+    }
+
+    tid_count = ((ba_control & 0xF000) >> 12) + 1;
+    if (is_req) {
+      ba_mtid_tree = proto_tree_add_subtree(ba_tree, tvb, offset, tid_count*4,
+                ett_block_ack, NULL, "TID List");
+      for (i = 0; i < tid_count; i++) {
+        guint8 tid = tvb_get_guint8(tvb, offset) & 0x0F;
+        ba_mtid_sub_tree = proto_tree_add_subtree_format(ba_mtid_tree, tvb,
+                                offset, 4, ett_block_ack_tid, NULL,
+                                "TID %u details", tid);
+
+        proto_tree_add_item(ba_mtid_sub_tree,
+                hf_ieee80211_block_ack_multi_tid_reserved, tvb, offset, 2,
+                ENC_LITTLE_ENDIAN);
+        proto_tree_add_item(ba_mtid_sub_tree,
+                hf_ieee80211_block_ack_multi_tid_value, tvb, offset, 2,
+                ENC_LITTLE_ENDIAN);
+        offset += 2;
+
+        offset += add_ff_block_ack_ssc(ba_mtid_sub_tree, tvb, pinfo, offset);
       }
+    } else {
+      ba_mtid_tree = proto_tree_add_subtree(ba_tree, tvb, offset, tid_count*4,
+                ett_block_ack, NULL, "TID List");
+      for (i = 0; i < tid_count; i++) {
+        guint8 tid = tvb_get_guint8(tvb, offset) & 0x0F;
+        ba_mtid_sub_tree = proto_tree_add_subtree_format(ba_mtid_tree, tvb,
+                                offset, 4, ett_block_ack_tid, NULL,
+                                "TID %u details", tid);
+
+        proto_tree_add_item(ba_mtid_sub_tree,
+                        hf_ieee80211_block_ack_multi_tid_reserved,
+                        tvb, offset, 2, ENC_LITTLE_ENDIAN);
+        proto_tree_add_item(ba_mtid_sub_tree,
+                        hf_ieee80211_block_ack_multi_tid_value, tvb,
+                        offset, 2, ENC_LITTLE_ENDIAN);
+        offset += 2;
 
-      /* Add address 1 */
-      set_dst_addr_cols(pinfo, tvb, 4, addr1_str);
+        offset += add_ff_block_ack_ssc(ba_mtid_sub_tree, tvb, pinfo, offset);
+        proto_tree_add_item(ba_mtid_sub_tree,
+                        hf_ieee80211_block_ack_bitmap, tvb, offset, 8, ENC_NA);
+        offset += 8;
+      }
+    }
+    break;
 
-      /*
-       * Start shoving in other fields if needed.
-       */
-      if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
-        /* if (tree) */
-        {
-          cw_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
-                      ett_cntrl_wrapper_fc, NULL, "Contained Frame Control");
-          dissect_frame_control(cw_tree, tvb, 0, offset, pinfo);
-          dissect_ht_control(hdr_tree, tvb, offset + 2);
-          offset += 6;
-          hdr_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
-                      ett_cntrl_wrapper_fc, &cw_item, "Carried Frame");
-          if (isDMG) {
-            expert_add_info_format(pinfo, cw_item, &ei_ieee80211_dmg_subtype,
-                                   "DMG STA shouldn't transmit Control Wrapper frame");
+  case GCR_BLOCK_ACK:
+    offset += add_ff_block_ack_ssc(ba_tree, tvb, pinfo, offset);
+
+    proto_tree_add_item(ba_tree, hf_ieee80211_block_ack_gcr_addr, tvb,
+                        offset, 6, ENC_NA);
+    offset += 6;
+
+    if (!is_req) {
+      proto_tree_add_item(ba_tree,
+                        hf_ieee80211_block_ack_bitmap, tvb, offset, 8, ENC_NA);
+      offset += 8;
+    }
+    break;
+
+  case MULTI_STA_BLOCK_ACK:
+    while (tvb_reported_length_remaining(tvb, offset) > (has_fcs ? 4 : 0)) {
+        int start = offset;
+        proto_item *msta_ti = NULL;
+        aid_tid = tvb_get_letohs(tvb, offset);
+        ba_multi_sta_tree = proto_tree_add_subtree_format(ba_tree, tvb, offset, -1,
+                                ett_multi_sta_block_ack, &msta_ti,
+                                "Per AID TID Info: 0x%0x", aid_tid & 0x07ff);
+        proto_tree_add_bitmask_with_flags(ba_multi_sta_tree, tvb, offset,
+                        hf_ieee80211_block_ack_multi_sta_aid_tid,
+                        ett_block_ack_request_multi_sta_aid_tid,
+                        multi_sta_aid_tid_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+        offset += 2;
+
+        if ((aid_tid & 0x07ff) != 2045) {
+          if (((aid_tid & 0x0800) == 0) && (aid_tid & 0xf000) <= 7) {
+            guint8 bitmap_size;
+            frag_num = tvb_get_guint8(tvb, offset);
+            offset += add_ff_block_ack_ssc(ba_multi_sta_tree, tvb, pinfo, offset);
+            bitmap_size = ((frag_num + 2) & 0x6) >> 1;  /* Turn into an exponent */
+            bitmap_size = 4 << bitmap_size;  /* It goes 4, 8, 16, 32 */
+            proto_tree_add_item(ba_multi_sta_tree, hf_ieee80211_block_ack_bitmap, tvb,
+                        offset, bitmap_size, ENC_NA);
+            offset += bitmap_size;
           }
+        } else {
+          offset += add_ff_block_ack_ssc(ba_multi_sta_tree, tvb, pinfo, offset);
+          proto_tree_add_item(ba_multi_sta_tree, hf_ieee80211_block_ack_multi_sta_reserved,
+                                tvb, offset, 2, ENC_LITTLE_ENDIAN);
+          offset += 2;
+          proto_tree_add_item(ba_multi_sta_tree, hf_ieee80211_block_ack_multi_sta_ra,
+                                tvb, offset, 6, ENC_NA);
+          offset += 6;
         }
-      }
+        proto_item_set_len(msta_ti, offset - start);
+    }
+    break;
+  }
+  proto_item_set_len(pi, offset - ba_start);
 
-      switch (ctrl_type_subtype)
-      {
-        case CTRL_PS_POLL:
-        case CTRL_CFP_ENDACK:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
-          /* if (tree) */
-          {
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
-          }
-          break;
-        }
+  return offset;
+}
 
-        case CTRL_CFP_END:
-        {
-          if (isDMG)
-            set_src_addr_cols(pinfo, tvb, offset, "TA");
-          else
-            set_src_addr_cols(pinfo, tvb, offset, "BSSID");
-          /* if (tree) */
-          {
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
-            if (isDMG) {
-              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            } else {
-              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, offset, 6, ENC_NA);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, offset, 6, ether_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            }
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
-          }
-          break;
-        }
+static int
+dissect_ieee80211_block_ack(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, gboolean isDMG, gboolean is_req, gboolean has_fcs)
+{
+  const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  proto_item     *hidden_item;
 
-        case CTRL_BEAMFORM_RPT_POLL:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
-          /* if (tree) */
-          {
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  proto_tree_add_item(tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_ta_resolved, tvb,
+                        offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_item(tree, hf_ieee80211_addr, tvb, offset, 6,
+                        ENC_NA);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_resolved, tvb,
+                        offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  offset += 6;
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
+  return dissect_ieee80211_block_ack_details(tvb, pinfo, tree, offset, isDMG, is_req, has_fcs);
+}
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_beamform_feedback_seg_retrans_bitmap, tvb, offset, 1, ENC_NA);
-          }
-        break;
-        }
+/*
+ * Dissect an 802.11ax HE Trigger frame and return the actual len including
+ * padding!
+ */
 
-        case CTRL_VHT_NDP_ANNC:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
-          /* if (tree) */
-          {
-            guint16 sta_info;
-            guint8 len_fcs = 0;
-            proto_tree *dialog_token_tree;
-            proto_item *dialog_token_item;
-            proto_tree *sta_info_tree;
-            proto_item *sta_info_item;
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+#define TRIGGER_TYPE_BASIC      0
+#define TRIGGER_TYPE_BRP        1
+#define TRIGGER_TYPE_MU_BAR     2
+#define TRIGGER_TYPE_MU_RTS     3
+#define TRIGGER_TYPE_BSRP       4
+#define TRIGGER_TYPE_GCR_MU_BAR 5
+#define TRIGGER_TYPE_BQRP       6
+#define TRIGGER_TYPE_NFRP       7
+
+static const val64_string trigger_type_vals[] = {
+  { 0, "Basic" },
+  { 1, "Beamforming Report Poll (BRP)" },
+  { 2, "MU-BAR" },
+  { 3, "MU-RTS" },
+  { 4, "Buffer Status Report Poll (BSRP)" },
+  { 5, "GCR MU-BAR" },
+  { 6, "Bandwidth Query Report Poll (BQRP)" },
+  { 7, "NDP Feedback Report Poll (NFRP)" },
+  { 0, NULL }
+};
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
+static const val64_string bw_subfield_vals[] = {
+  { 0, "20 MHz" },
+  { 1, "40 MHz" },
+  { 2, "80 MHz" },
+  { 3, "80+80 MHz or 160 MHz" },
+  { 0, NULL }
+};
 
-            dialog_token_item = proto_tree_add_item(hdr_tree, hf_ieee80211_vht_ndp_annc_token,
-                                                    tvb, offset, 1, ENC_NA);
-            dialog_token_tree = proto_item_add_subtree(dialog_token_item, ett_vht_ndp_annc_token_tree);
-            proto_tree_add_item(dialog_token_tree, hf_ieee80211_vht_ndp_annc_token_number,
-                                tvb, offset, 1, ENC_NA);
-            proto_tree_add_item(dialog_token_tree, hf_ieee80211_vht_ndp_annc_token_reserved,
-                                tvb, offset, 1, ENC_NA);
-            offset++;
+static const val64_string gi_and_ltf_type_subfield_vals[] = {
+  { 0, "1x LTF + 1.6 us GI" },
+  { 1, "2x LTF + 1.6 us GI" },
+  { 2, "4x LTF + 3.2 us GI" },
+  { 3, "Reserved" },
+  { 0, NULL }
+};
 
-            /* Check if there is FCS in the packet */
-            if(has_fcs){
-              len_fcs = 4;
-            }
-            while (tvb_reported_length_remaining(tvb, offset) > len_fcs) {
-              sta_info_item = proto_tree_add_item(hdr_tree, hf_ieee80211_vht_ndp_annc_sta_info,
-                                                  tvb, offset, 2, ENC_LITTLE_ENDIAN);
-              sta_info_tree = proto_item_add_subtree(sta_info_item, ett_vht_ndp_annc_sta_info_tree);
-              proto_tree_add_item(sta_info_tree, hf_ieee80211_vht_ndp_annc_sta_info_aid12,
-                                  tvb, offset, 2, ENC_LITTLE_ENDIAN);
-              proto_tree_add_item(sta_info_tree, hf_ieee80211_vht_ndp_annc_sta_info_feedback_type,
-                                  tvb, offset, 2, ENC_LITTLE_ENDIAN);
-
-              sta_info = tvb_get_letohs(tvb, offset);
-
-              if (sta_info & 0x1000)
-                proto_tree_add_uint(sta_info_tree,
-                                    hf_ieee80211_vht_ndp_annc_sta_info_nc_index,
-                                    tvb, offset, 2, sta_info);
-              else
-                proto_tree_add_item(sta_info_tree, hf_ieee80211_vht_ndp_annc_sta_info_reserved,
-                                    tvb, offset, 2, ENC_LITTLE_ENDIAN);
-              offset += 2;
-            }
-          }
-        break;
-        }
+static const true_false_string mu_mimo_ltf_mode_tfs = {
+  "HE masked HE LTF sequence mode",
+  "HE single stream pilot HE LTF mode"
+};
 
-        case CTRL_GRANT_ACK:
-        case CTRL_SSW:
-        case CTRL_SSW_FEEDBACK:
-        case CTRL_SSW_ACK:
-        case CTRL_DMG_CTS:
-        case CTRL_GRANT:
-        case CTRL_SPR:
-        case CTRL_POLL:
-        case CTRL_RTS:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
-          /* if (tree) */
-          {
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
-          }
-          break;
-        }
+static const int *he_trig_frm_bar_ctrl_fields[] = {
+  &hf_ieee80211_he_trigger_bar_ctrl_ba_ack_policy,
+  &hf_ieee80211_he_trigger_bar_ctrl_ba_type,
+  &hf_ieee80211_he_trigger_bar_ctrl_reserved,
+  &hf_ieee80211_he_trigger_bar_ctrl_tid_info,
+  NULL
+};
 
-        case CTRL_CONTROL_WRAPPER:
-        {
-          /* XXX - We shouldn't see this.  Should we throw an error? */
-          break;
-        }
+static const int *he_trig_frm_bar_info_fields[] = {
+  &hf_ieee80211_he_trigger_bar_info_blk_ack_seq_ctrl,
+  NULL
+};
 
-        case CTRL_BLOCK_ACK_REQ:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
+static void
+add_gcr_mu_bar_trigger_frame_common_info(proto_tree *tree, tvbuff_t *tvb,
+  int offset)
+{
 
-          /* if (tree) */
-          {
-            guint16 bar_control;
-            guint8 block_ack_type;
-            proto_item *bar_parent_item;
-            proto_tree *bar_sub_tree;
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_trigger_bar_ctrl,
+                        ett_he_trigger_bar_ctrl,
+                        he_trig_frm_bar_ctrl_fields,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_trigger_bar_info,
+                        ett_he_trigger_bar_info,
+                        he_trig_frm_bar_info_fields,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+}
+
+static const int *common_info_headers[] = {
+  &hf_ieee80211_he_trigger_type,
+  &hf_ieee80211_he_trigger_length,
+  &hf_ieee80211_he_trigger_cascade_indication,
+  &hf_ieee80211_he_trigger_cs_required,
+  &hf_ieee80211_he_trigger_bw,
+  &hf_ieee80211_he_trigger_gi_and_ltf_type,
+  &hf_ieee80211_he_trigger_mu_mimo_ltf_mode,
+  &hf_ieee80211_he_trigger_num_he_ltf_syms_etc,
+  &hf_ieee80211_he_trigger_stbc,
+  &hf_ieee80211_he_trigger_ldpc_extra_sym_seg,
+  &hf_ieee80211_he_trigger_ap_tx_power,
+  &hf_ieee80211_he_trigger_packet_extension,
+  &hf_ieee80211_he_trigger_spatial_reuse,
+  &hf_ieee80211_he_trigger_doppler,
+  &hf_ieee80211_he_trigger_he_sig_a_reserved,
+  &hf_ieee80211_he_trigger_reserved,
+  NULL
+};
 
-            bar_control = tvb_get_letohs(tvb, offset);
-            /* According to the 802.11ad standard (28/12/12) there is need to find the
-             * GCR subfield which isn't described, thus the black_ack_type calculations
-             * should be changed.
-             */
-            block_ack_type = (bar_control & 0x0006) >> 1;
-            proto_tree_add_item(hdr_tree, hf_ieee80211_block_ack_request_type, tvb,
-              offset, 2, ENC_LITTLE_ENDIAN);
-            bar_parent_item = proto_tree_add_item(hdr_tree,
-              hf_ieee80211_block_ack_request_control, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            bar_sub_tree = proto_item_add_subtree(bar_parent_item,
-              ett_block_ack);
-            proto_tree_add_item(bar_sub_tree,
-              hf_ieee80211_block_ack_control_ack_policy, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(bar_sub_tree, hf_ieee80211_block_ack_control_multi_tid,
-              tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(bar_sub_tree,
-              hf_ieee80211_block_ack_control_compressed_bitmap, tvb, offset, 2,
-              ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(bar_sub_tree, hf_ieee80211_block_ack_control_reserved,
-              tvb, offset, 2, ENC_LITTLE_ENDIAN);
-
-            switch (block_ack_type)
-            {
-              case 0: /*Basic BlockAckReq */
-              {
-                if(isDMG == TRUE) {
-                   expert_add_info_format(pinfo, bar_sub_tree, &ei_ieee80211_dmg_subtype,
-                           "DMG STA shouldn't transmit BlockAckReq frame with Basic BlockAckReq");
-                   break;
-                }
-                proto_tree_add_item(bar_sub_tree,
-                hf_ieee80211_block_ack_control_basic_tid_info, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                offset += 2;
-
-                /*offset +=*/ add_ff_block_ack_ssc(hdr_tree, tvb, pinfo, offset);
-                break;
-              }
-              case 1: /* Extended Compressesd BlockAckReq */
-                if(isDMG == FALSE) {
-                   expert_add_info_format(pinfo, bar_sub_tree, &ei_ieee80211_dmg_subtype,
-                           "Non-DMG STA shouldn't transmit BlockAckReq frame with Extended Compressed BlockAckReq");
-                   break;
-                }
-              /* FALL THROUGH */
-              case 2: /* Compressed BlockAckReq */
-              {
-                proto_tree_add_item(bar_sub_tree,
-                hf_ieee80211_block_ack_control_compressed_tid_info, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                offset += 2;
-
-                /*offset +=*/ add_ff_block_ack_ssc(hdr_tree, tvb, pinfo, offset);
-                break;
-              }
-              case 3: /* Multi-TID BlockAckReq */
-              {
-                guint8 tid_count;
-                guint iii;
-                proto_tree *bar_mtid_tree, *bar_mtid_sub_tree;
-
-                if(isDMG == TRUE) {
-                   expert_add_info_format(pinfo, bar_sub_tree, &ei_ieee80211_dmg_subtype,
-                           "DMG STA shouldn't transmit BlockAckReq frame with Basic BlockAckReq");
-                   break;
-                }
-
-                tid_count = ((bar_control & 0xF000) >> 12) + 1;
-                proto_tree_add_uint(bar_sub_tree, hf_ieee80211_block_ack_control_multi_tid_info, tvb, offset, 2, tid_count);
-                offset += 2;
-
-                bar_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info");
-                for (iii = 0; iii < tid_count; iii++) {
-                  bar_parent_item = proto_tree_add_uint(bar_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii);
-                  bar_mtid_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
-
-                  proto_tree_add_item(bar_mtid_sub_tree, hf_ieee80211_block_ack_multi_tid_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                  proto_tree_add_item(bar_mtid_sub_tree, hf_ieee80211_block_ack_multi_tid_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                  offset += 2;
-
-                  offset += add_ff_block_ack_ssc(bar_mtid_sub_tree, tvb, pinfo, offset);
-                }
-                break;
-              }
-            }
-          }
-          break;
-        }
+static int
+add_he_trigger_common_info(proto_tree *tree, tvbuff_t *tvb, int offset,
+  packet_info *pinfo _U_, guint8 trigger_type, int *frame_len)
+{
+  proto_item     *pi = NULL;
+  proto_tree     *common_info = NULL;
+  int            length = 0;
+  int            start_offset = offset;
+
+  common_info = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_he_trigger_common_info, &pi, "Common Info");
+
+  proto_tree_add_bitmask_with_flags(common_info, tvb, offset,
+                        hf_ieee80211_he_trigger_common_info,
+                        ett_he_trigger_base_common_info,
+                        common_info_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+  offset += 8;
+  length += 8;
 
-        case CTRL_BLOCK_ACK:
-        {
-          set_src_addr_cols(pinfo, tvb, offset, "TA");
+  /*
+   * Handle the trigger dependent common info
+   */
+  switch (trigger_type) {
+    case TRIGGER_TYPE_GCR_MU_BAR: /* Actually two uint16 fields */
+      add_gcr_mu_bar_trigger_frame_common_info(common_info, tvb, offset);
+      offset += 4;
+      length += 4;
+      break;
+    default: /* No other type has a trigger dependent common info subfield */
+      break;
+  }
+  proto_item_set_len(pi, offset - start_offset);
 
-          /* if (tree) */
-          {
-            guint16 ba_control;
-            guint8 block_ack_type;
-            proto_item *ba_parent_item;
-            proto_tree *ba_sub_tree;
-            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  *frame_len += length;
+  return length;
+}
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            offset += 6;
+static const true_false_string he_trigger_coding_type_tfs = {
+  "LDPC",
+  "BCC"
+};
+
+static const value_string preferred_ac_vals[] = {
+  { 0, "AC_BK" },
+  { 1, "AC_BE" },
+  { 2, "AC_VI" },
+  { 3, "AC_VO" },
+  { 0, NULL }
+};
+
+static const int *basic_trigger_dependent_user_headers[] = {
+  &hf_ieee80211_he_trigger_mpdu_mu_spacing,
+  &hf_ieee80211_he_trigger_tid_aggregation_limit,
+  &hf_ieee80211_he_trigger_dependent_reserved1,
+  &hf_ieee80211_he_trigger_preferred_ac,
+  NULL
+};
+
+static void
+add_basic_trigger_dependent_user_info(proto_tree *tree, tvbuff_t *tvb,
+  int offset)
+{
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_trigger_dep_basic_user_info,
+                        ett_he_trigger_dep_basic_user_info,
+                        basic_trigger_dependent_user_headers,
+                        ENC_NA, BMT_NO_APPEND);
+}
+
+static void
+add_brp_trigger_dependent_user_info(proto_tree *tree, tvbuff_t *tvb,
+  int offset)
+{
+  proto_tree_add_item(tree, hf_ieee80211_he_trigger_feedback_seg_retrans_bm,
+                        tvb, offset, 1, ENC_NA);
+}
+
+static int
+add_mu_bar_trigger_dependent_user_info(proto_tree *tree, tvbuff_t *tvb,
+  int offset, packet_info *pinfo, int *frame_len)
+{
+  int start_offset = offset;
+
+  /*
+   * It's a request and not DMG, I think. Also, it is only supposed to be
+   * a compressed block ack or a multi-tid block ack request.
+   */
+  offset = dissect_ieee80211_block_ack_details(tvb, pinfo, tree, offset,
+                        FALSE, TRUE, FALSE);
+
+  *frame_len += offset - start_offset;
+
+  return offset;
+}
+
+
+static const int *nfrp_trigger_dependent_user_headers[] = {
+  &hf_ieee80211_he_trigger_starting_aid,
+  &hf_ieee80211_he_trigger_dependent_reserved2,
+  &hf_ieee80211_he_trigger_feedback_type,
+  &hf_ieee80211_he_trigger_dependent_reserved3,
+  &hf_ieee80211_he_trigger_nfrp_target_rssi,
+  &hf_ieee80211_he_trigger_multiplexing_flag,
+  NULL
+};
+
+static void
+add_nfrp_trigger_dependent_user_info(proto_tree *tree, tvbuff_t *tvb,
+  int offset)
+{
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_trigger_dep_nfrp_user_info,
+                        ett_he_trigger_dep_nfrp_user_info,
+                        nfrp_trigger_dependent_user_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+}
 
-            ba_control = tvb_get_letohs(tvb, offset);
-            block_ack_type = (ba_control & 0x0006) >> 1;
-            proto_tree_add_item(hdr_tree, hf_ieee80211_block_ack_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            ba_parent_item = proto_tree_add_item(hdr_tree,
-              hf_ieee80211_block_ack_control, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            ba_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
-            proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_control_ack_policy,
-              tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_control_multi_tid,
-              tvb, offset, 2, ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(ba_sub_tree,
-              hf_ieee80211_block_ack_control_compressed_bitmap, tvb, offset, 2,
-              ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_control_reserved, tvb,
-              offset, 2, ENC_LITTLE_ENDIAN);
-
-            switch (block_ack_type)
-            {
-              case 0: /*Basic BlockAck */
-              {
-                proto_tree_add_item(ba_sub_tree,
-                hf_ieee80211_block_ack_control_basic_tid_info, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                offset += 2;
-
-                offset += add_ff_block_ack_ssc(hdr_tree, tvb, pinfo, offset);
-                proto_tree_add_item(hdr_tree, hf_ieee80211_block_ack_bitmap, tvb, offset, 128, ENC_NA);
-                /*offset += 128;*/
-                break;
-              }
-              /* Added to support Extended Compressed BlockAck RBUFCAP subfield.*/
-              case 1: /* Extended Compressed BlockAck */
-              {
-                guint16 ssn;
-                guint64 bmap;
-                int f;
-                proto_item *ba_bitmap_item;
-                proto_tree *ba_bitmap_tree;
-                if(isDMG == FALSE) {
-                   expert_add_info_format(pinfo, ba_sub_tree, &ei_ieee80211_dmg_subtype,
-                           "Non-DMG STA shouldn't transmit BlockAck frame with Extended Compressed BlockAck");
-                   break;
-                }
-                proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_control_basic_tid_info, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                offset += 2;
-
-                ssn = tvb_get_letohs(tvb, offset);
-                ssn >>= 4;
-                offset += add_ff_block_ack_ssc(hdr_tree, tvb, pinfo, offset);
-                bmap = tvb_get_letoh64(tvb, offset);
-                ba_bitmap_item = proto_tree_add_item(hdr_tree, hf_ieee80211_block_ack_bitmap, tvb, offset, 8, ENC_NA);
-                ba_bitmap_tree = proto_item_add_subtree(ba_bitmap_item, ett_block_ack_bitmap);
-                for (f = 0; f < 64; f++) {
-                  if (bmap & (G_GUINT64_CONSTANT(1) << f))
-                    continue;
-                  proto_tree_add_uint(ba_bitmap_tree, hf_ieee80211_block_ack_bitmap_missing_frame,
-                                                   tvb, offset + (f/8), 1, ssn + f);
-                }
-                offset += 8;
-                proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_RBUFCAP, tvb, offset, 1, ENC_LITTLE_ENDIAN);
-                offset += 1;
-                break;
-              }
-              case 2: /* Compressed BlockAck */
-              {
-                guint16 ssn;
-                guint64 bmap;
-                int f;
-                proto_item *ba_bitmap_item;
-                proto_tree *ba_bitmap_tree;
-
-                proto_tree_add_item(ba_sub_tree, hf_ieee80211_block_ack_control_basic_tid_info, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                offset += 2;
-
-                ssn = tvb_get_letohs(tvb, offset);
-                ssn >>= 4;
-                offset += add_ff_block_ack_ssc(hdr_tree, tvb, pinfo, offset);
-                bmap = tvb_get_letoh64(tvb, offset);
-                ba_bitmap_item = proto_tree_add_item(hdr_tree, hf_ieee80211_block_ack_bitmap, tvb, offset, 8, ENC_NA);
-                ba_bitmap_tree = proto_item_add_subtree(ba_bitmap_item, ett_block_ack_bitmap);
-                for (f = 0; f < 64; f++) {
-                  if (bmap & (G_GUINT64_CONSTANT(1) << f))
-                    continue;
-                  proto_tree_add_uint_format_value(ba_bitmap_tree, hf_ieee80211_block_ack_bitmap_missing_frame,
-                                                   tvb, offset + (f/8), 1, ssn + f, "%u", (ssn + f) & 0x0fff);
-                }
-                /*offset += 8;*/
-                break;
-              }
-              case 3:  /* Multi-TID BlockAck */
-              {
-                guint8 tid_count;
-                guint iii;
-                proto_tree *ba_mtid_tree, *ba_mtid_sub_tree;
-
-                tid_count = ((ba_control & 0xF000) >> 12) + 1;
-                proto_tree_add_uint(ba_sub_tree,
-                hf_ieee80211_block_ack_control_compressed_tid_info, tvb, offset, 2, tid_count);
-                offset += 2;
-
-                ba_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info");
-                for (iii = 0; iii < tid_count; iii++) {
-                  ba_parent_item = proto_tree_add_uint(ba_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii);
-                  ba_mtid_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
-
-                  proto_tree_add_item(ba_mtid_sub_tree, hf_ieee80211_block_ack_multi_tid_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                  proto_tree_add_item(ba_mtid_sub_tree, hf_ieee80211_block_ack_multi_tid_value, tvb, offset, 2, ENC_LITTLE_ENDIAN);
-                  offset += 2;
-
-                  offset += add_ff_block_ack_ssc(ba_mtid_sub_tree, tvb, pinfo, offset);
-                  proto_tree_add_item(ba_mtid_sub_tree, hf_ieee80211_block_ack_bitmap, tvb, offset, 8, ENC_NA);
-                  offset += 8;
-                }
-                break;
-              }
-            }
-          }
-          break;
-        }
-      }
 /*
- * 802.11ad : Used for extension types.
+ * Print the target RSSI field as per the spec.
+ *  0->90 map to -110 to -20 dBm.
+ *  127 maps to Max ransmit power for assigned MCS
+ *  rest are reserved.
  */
-      switch (ctrl_type_subtype) {
-        case CTRL_POLL: {
-                proto_tree_add_item(hdr_tree, hf_ieee80211_cf_response_offset,
-                      tvb, offset, 2, ENC_LITTLE_ENDIAN);
+static void
+target_rssi_base_custom(gchar *result, guint32 target_rssi)
+{
+  if (target_rssi <= 90) {
+    g_snprintf(result, ITEM_LABEL_LENGTH, "%ddBm", -110 + target_rssi);
+  } else if (target_rssi == 127) {
+    g_snprintf(result, ITEM_LABEL_LENGTH, "Max transmit power");
+  } else {
+    g_snprintf(result, ITEM_LABEL_LENGTH, "Reserved");
+  }
+}
 
-                break;
-        }
-        case CTRL_GRANT:
-        case CTRL_GRANT_ACK:
-        case CTRL_SPR: {
-          gboolean isGrant;
-          if(ctrl_type_subtype != CTRL_GRANT_ACK) {
-            offset += add_ff_dynamic_allocation(hdr_tree, tvb, pinfo, offset);
-          } else { /* CTRL_GRANT_ACK have 5 octets that are reserved*/
-            proto_tree_add_item(hdr_tree, hf_ieee80211_grant_ack_reserved, tvb, offset, 5, ENC_NA);
-            offset += 5;
-          }
-          isGrant = ((ctrl_type_subtype==CTRL_GRANT)||(ctrl_type_subtype==CTRL_GRANT_ACK));
-          add_ff_beamforming_ctrl(hdr_tree, tvb, pinfo, offset, isGrant);
-          /* offset += 2; */
-          break;
-        }
-        case CTRL_SSW: {
-          guint32 sector_sweep;
+static const int *user_info_headers[] = {
+  &hf_ieee80211_he_trigger_aid12,
+  &hf_ieee80211_he_trigger_ru_allocation,
+  &hf_ieee80211_he_trigger_coding_type,
+  &hf_ieee80211_he_trigger_mcs,
+  &hf_ieee80211_he_trigger_dcm,
+  &hf_ieee80211_he_trigger_ss_allocation,
+  &hf_ieee80211_he_trigger_target_rssi,
+  &hf_ieee80211_he_trigger_user_reserved,
+  NULL
+};
 
-          sector_sweep = tvb_get_letoh24(tvb, offset);
-          offset += add_ff_sector_sweep(hdr_tree, tvb, pinfo, offset);
-          /* if Sector Sweep Direction = Responder, use SW Feedback field format when not transmitted as part of an ISS */
-          if(sector_sweep & 0x00001) {
-            add_ff_sector_sweep_feedback_to_iss(hdr_tree, tvb, pinfo, offset);
-          } else {
-            add_ff_sector_sweep_feedback_from_iss(hdr_tree, tvb, pinfo, offset);
-          }
-          /* offset += 3; */
-          break;
-        }
-        case CTRL_SSW_ACK:
-        case CTRL_SSW_FEEDBACK: {
-          offset += add_ff_sector_sweep_feedback_to_iss(hdr_tree, tvb, pinfo, offset);
-          offset += add_ff_BRP_request(hdr_tree, tvb, pinfo, offset);
-          add_ff_beamformed_link(hdr_tree, tvb, pinfo, offset);
-          /* offset += 1; */
-          break;
-        }
-        case CTRL_DMG_DTS: {
-          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_nav_sa, tvb, offset, 6, ENC_NA);
-          offset += 6;
-          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_nav_da, tvb, offset, 6, ENC_NA);
-          /* offset += 6; */
-          break;
-        }
-        default:
-                break;
-      }
-      break;
+static int
+add_he_trigger_user_info(proto_tree *tree, tvbuff_t *tvb, int offset,
+  packet_info *pinfo, guint8 trigger_type, int *frame_len)
+{
+  proto_item     *pi = NULL;
+  proto_tree     *user_info = NULL;
+  int            length = 0;
+  int            start_offset = offset;
+  guint16         aid12_subfield = 0;
+
+  /*
+   * If the AID12 subfield has the value 4095 it indicates the start of
+   * the padding field.
+   */
+  user_info = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_he_trigger_user_info, &pi, "User Info");
+  aid12_subfield = tvb_get_letohs(tvb, offset) >> 4;
+
+  while (aid12_subfield != 4095) {
+    proto_tree_add_bitmask_with_flags(user_info, tvb, offset,
+                        hf_ieee80211_he_trigger_user_info,
+                        ett_he_trigger_base_user_info,
+                        user_info_headers,
+                        ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
+    offset += 5;
+    length += 5;
+
+    /*
+     * Handle the trigger dependent user info
+     */
+    switch (trigger_type) {
+      case TRIGGER_TYPE_BASIC:
+        add_basic_trigger_dependent_user_info(user_info, tvb, offset);
+        offset++;
+        length++;
+        break;
+      case TRIGGER_TYPE_BRP:
+        add_brp_trigger_dependent_user_info(user_info, tvb, offset);
+        offset++;
+        length++;
+        break;
+      case TRIGGER_TYPE_MU_BAR:
+        /* This is variable length so we need it to update the length */
+        offset += add_mu_bar_trigger_dependent_user_info(user_info, tvb,
+                                offset, pinfo, &length);
+        break;
+      case TRIGGER_TYPE_NFRP:
+        add_nfrp_trigger_dependent_user_info(user_info, tvb, offset);
+        offset += 5;
+        length += 5;
+        break;
+      default:
+        break;
     }
 
-    case DATA_FRAME:
-    {
-      guint32 da_offset, sa_offset, ta_offset = 10, bssid_offset;
-      addr_type = FCF_ADDR_SELECTOR(fcf);
+    aid12_subfield = tvb_get_letohs(tvb, offset) >> 4;
+  }
 
-      /* In order to show src/dst address we must always do the following */
-      switch (addr_type)
-      {
+  proto_item_set_len(pi, offset - start_offset);
 
-        case DATA_ADDR_T1:
-          da_offset = 4;
-          sa_offset = 10;
-          bssid_offset = 16;
-          break;
+  *frame_len += length;
+  return length;
+}
 
-        case DATA_ADDR_T2:
-          da_offset = 4;
-          sa_offset = 16;
-          bssid_offset = 10;
-          break;
+static int
+dissect_ieee80211_he_trigger(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset)
+{
+  const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  proto_item      *hidden_item;
+  guint8          trigger_type = 0;
+  int             length = 0;
+
+  proto_tree_add_item(tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_ta_resolved,
+                        tvb, offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_item(tree, hf_ieee80211_addr, tvb, offset, 6,
+                        ENC_NA);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_resolved, tvb,
+                        offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
 
-        case DATA_ADDR_T3:
-          da_offset = 16;
-          sa_offset = 10;
-          bssid_offset = 4;
-          break;
+  offset += 6;
+  length += 6;
 
-        case DATA_ADDR_T4:
-          da_offset = 16;
-          sa_offset = 24;
-          bssid_offset = 10;
-          break;
+  trigger_type = tvb_get_guint8(tvb, offset) & 0x0F;
+  col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
+                val64_to_str(trigger_type, trigger_type_vals, "Reserved"));
+  /*
+   * Deal with the common Info and then any user info after that.
+   */
+  offset += add_he_trigger_common_info(tree, tvb, offset, pinfo,
+                        trigger_type, &length);
 
-        default:
-          /* Should never happen? */
-          da_offset = 0;
-          sa_offset = 0;
-          ta_offset = 0;
-          bssid_offset = 0;
-          break;
-      }
+  /*
+   * Now the User Info field.
+   */
+  /*offset +=*/ add_he_trigger_user_info(tree, tvb, offset, pinfo,
+                        trigger_type, &length);
 
+  /*
+   *  Padding should commence here ... TODO, deal with it.
+   */
 
+  return length;
+}
 
-      set_address_tvb(&pinfo->dl_src, wlan_address_type, 6, tvb, sa_offset);
-      copy_address_shallow(&pinfo->src, &pinfo->dl_src);
-      set_address_tvb(&pinfo->dl_dst, wlan_address_type, 6, tvb, da_offset);
-      copy_address_shallow(&pinfo->dst, &pinfo->dl_dst);
+/*
+ * Dissect a VHT or an HE NDP accouncement frame. They differ past
+ * the sounding dialog token with a bit in the SDT indicating VHT vs HE.
+ */
+#define NDP_ANNC_VHT_HE 0x02
 
-      /* for tap */
-      set_address_tvb(&whdr->bssid, wlan_bssid_address_type, 6, tvb, bssid_offset);
+static const true_false_string he_ndp_annc_he_subfield_vals = {
+  "HE NDP Announcement frame",
+  "VHT NDP Announcement frame"
+};
 
-      copy_address_shallow(&whdr->src, &pinfo->dl_src);
-      copy_address_shallow(&whdr->dst, &pinfo->dl_dst);
+static const int *vht_ndp_headers[] = {
+  &hf_ieee80211_vht_ndp_annc_token_reserved,
+  &hf_ieee80211_vht_ndp_annc_he_subfield,
+  &hf_ieee80211_vht_ndp_annc_token_number,
+  NULL
+};
 
-      seq_control = tvb_get_letohs(tvb, 22);
-      frag_number = SEQCTL_FRAGMENT_NUMBER(seq_control);
-      seq_number = SEQCTL_SEQUENCE_NUMBER(seq_control);
+static int
+dissect_ieee80211_vht_ndp_annc(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, gboolean has_fcs)
+{
+  guint16          sta_info;
+  guint8           len_fcs = 0;
+  proto_tree      *sta_list;
+  proto_item      *sta_info_item, *pi;
+  int              saved_offset = 0;
+  int              sta_index = 0;
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_vht_ndp_annc_token, ett_vht_ndp_annc,
+                        vht_ndp_headers, ENC_NA, BMT_NO_APPEND);
+  offset++;
 
-      col_append_fstr(pinfo->cinfo, COL_INFO,
-            ", SN=%d, FN=%d", seq_number, frag_number);
+  if (has_fcs){
+    len_fcs = 4;
+  }
 
-      /* Now if we have a tree we start adding stuff */
-      if (tree)
-      {
-        const gchar *ta_name, *sa_name, *da_name, *bssid_name = NULL;
+  sta_list = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_vht_ndp_annc_sta_list, &pi, "STA list");
+  saved_offset = offset;
 
-        switch (addr_type)
-        {
-          case DATA_ADDR_T1:
-          case DATA_ADDR_T2:
-          case DATA_ADDR_T3:
-          case DATA_ADDR_T4:
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, ta_offset, 6, ENC_NA);
-            ta_name = tvb_get_ether_name(tvb, ta_offset);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, ta_offset, 6, ta_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            /* TA is always in the wlan.addr filter */
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, ta_offset, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, ta_offset, 6, ta_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
+  while (tvb_reported_length_remaining(tvb, offset) > len_fcs) {
+    sta_info_item = proto_tree_add_subtree_format(sta_list, tvb, offset, 2,
+                        ett_vht_ndp_annc_sta_info_tree, NULL, "STA %d",
+                        sta_index++);
+    proto_tree_add_item(sta_info_item, hf_ieee80211_vht_ndp_annc_sta_info_aid12,
+                        tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    proto_tree_add_item(sta_info_item, hf_ieee80211_vht_ndp_annc_sta_info_feedback_type,
+                        tvb, offset, 2, ENC_LITTLE_ENDIAN);
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_da, tvb, da_offset, 6, ENC_NA);
-            da_name = tvb_get_ether_name(tvb, da_offset);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, da_offset, 6, da_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
+    sta_info = tvb_get_letohs(tvb, offset);
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_sa, tvb, sa_offset, 6, ENC_NA);
-            sa_name = tvb_get_ether_name(tvb, sa_offset);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, sa_offset, 6, sa_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
+    if (sta_info & 0x1000)
+       proto_tree_add_uint(sta_info_item,
+                           hf_ieee80211_vht_ndp_annc_sta_info_nc_index,
+                           tvb, offset, 2, sta_info);
+    else
+       proto_tree_add_item(sta_info_item, hf_ieee80211_vht_ndp_annc_sta_info_reserved,
+                           tvb, offset, 2, ENC_LITTLE_ENDIAN);
+    offset += 2;
+  }
 
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, bssid_offset, 6, ENC_NA);
-            bssid_name = tvb_get_ether_name(tvb, bssid_offset);
-            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, bssid_offset, 6, bssid_name);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
+  proto_item_set_len(pi, offset - saved_offset);
+  return offset;
+}
 
-            if ((flags & FROM_TO_DS) == FLAG_FROM_DS) { /* Receiver address */
-              sta_addr_offset = 4;
-            } else if ((flags & FROM_TO_DS) == FLAG_TO_DS) { /* Transmitter address */
-              sta_addr_offset = ta_offset;
-            }
-            if (sta_addr_offset > 0) {
-              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_staa, tvb, sta_addr_offset, 6, ENC_NA);
-              station_name = tvb_get_ether_name(tvb, sta_addr_offset);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_staa_resolved, tvb, sta_addr_offset, 6, station_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            }
-            proto_tree_add_item(hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
-            proto_tree_add_item(hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+/*
+ * Format the partial BW as two 7 bit fields.
+ */
+static void
+partial_bw_info_base_custom(gchar *result, guint32 partial_bw)
+{
+    g_snprintf(result, ITEM_LABEL_LENGTH,
+                "RU Start Index:0x%0x, RU End Index:0x%0x",
+                partial_bw >> 7, partial_bw & 0x7F);
+}
 
-            /* add 3rd and 4th address for wlan.addr filter */
-            if (sa_offset != 4 && sa_offset != 10) {
-              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, sa_offset, 6, ENC_NA);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, sa_offset, 6, sa_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            }
-            if (da_offset != 4 && da_offset != 10 && da_offset != sa_offset) {
-              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, da_offset, 6, ENC_NA);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, da_offset, 6, da_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            }
-            if (bssid_offset != 4 && bssid_offset != 10 && bssid_offset != sa_offset && bssid_offset != da_offset) {
-              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, bssid_offset, 6, ENC_NA);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, bssid_offset, 6, bssid_name);
-              PROTO_ITEM_SET_HIDDEN(hidden_item);
-            }
-            break;
-        }
+static const int *he_ndp_headers[] = {
+  &hf_he_ndp_annc_reserved,
+  &hf_he_ndp_annc_he_subfield,
+  &hf_he_ndp_sounding_dialog_token_number,
+  NULL
+};
 
-      }
-      break;
-      }
-    case EXTENSION_FRAME: {
-      switch (frame_type_subtype) {
-        case EXTENSION_DMG_BEACON: {
-          set_dst_addr_cols(pinfo, tvb, 4, "BSSID");
-          if (tree) {
-            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
-            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
-            PROTO_ITEM_SET_HIDDEN(hidden_item);
-          }
-          break;
-        }
-      }
-    }
+static const int *he_ndp_sta_headers[] = {
+  &hf_he_ndp_annc_aid11,
+  &hf_he_ndp_annc_partial_bw_info,
+  &hf_he_ndp_annc_feedback_type_and_ng,
+  &hf_he_ndp_annc_disambiguation,
+  &hf_he_ndp_annc_codebook_size,
+  &hf_he_ndp_annc_nc,
+  NULL
+};
+
+static int
+dissect_ieee80211_he_ndp_annc(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, gboolean has_fcs)
+{
+  guint8           len_fcs = 0;
+  proto_tree      *sta_list;
+  proto_item      *pi;
+  int              saved_offset;
+  int              sta_index = 0;
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset,
+                        hf_ieee80211_he_ndp_annc_token, ett_he_ndp_annc,
+                        he_ndp_headers, ENC_NA, BMT_NO_APPEND);
+  offset++;
+
+  if (has_fcs){
+    len_fcs = 4;
   }
 
-  len = tvb_captured_length_remaining(tvb, hdr_len);
-  reported_len = tvb_reported_length_remaining(tvb, hdr_len);
+  saved_offset = offset;
+  sta_list = proto_tree_add_subtree(tree, tvb, offset, -1,
+                        ett_he_ndp_annc_sta_list, &pi, "STA list");
 
-  if (has_fcs)
-    {
-      /*
-       * Well, this packet should, in theory, have an FCS.
-       * Do we have the entire packet, and does it have enough data for
-       * the FCS?
-       */
-      if (reported_len < 4)
-      {
-        /*
-         * The packet is claimed not to even have enough data for a 4-byte
-         * FCS.
-         * Pretend it doesn't have an FCS.
-         */
-        ;
-      }
-      else if (len < reported_len)
-      {
-        /*
-         * The packet is claimed to have enough data for a 4-byte FCS, but
-         * we didn't capture all of the packet.
-         * Slice off the 4-byte FCS from the reported length, and trim the
-         * captured length so it's no more than the reported length; that
-         * will slice off what of the FCS, if any, is in the captured
-         * length.
-         */
-        reported_len -= 4;
-        if (len > reported_len)
-            len = reported_len;
-      }
-      else
-      {
-        /*
-         * We have the entire packet, and it includes a 4-byte FCS.
-         * Slice it off, and put it into the tree.
-         */
-        len          -= 4;
-        reported_len -= 4;
-        if (wlan_check_checksum)
-        {
-          guint32 sent_fcs = tvb_get_letohl(tvb, hdr_len + len);
-          guint32 fcs;
+  while (tvb_reported_length_remaining(tvb, offset) > len_fcs) {
+    proto_tree *sta_item;
 
-          if (phdr->datapad)
-            fcs = crc32_802_tvb_padded(tvb, ohdr_len, hdr_len, len);
-          else
-            fcs = crc32_ccitt_tvb(tvb, hdr_len + len);
-          if (fcs != sent_fcs) {
-            flag_str[8] = '.';
-          }
+    sta_item = proto_tree_add_subtree_format(sta_list, tvb, offset, 4,
+                        ett_he_ndp_annc_sta_item, NULL, "STA %d", sta_index++);
+    proto_tree_add_bitmask_with_flags(sta_item, tvb, offset,
+                        hf_ieee80211_he_ndp_annc_sta, ett_he_ndp_annc_sta_info,
+                        he_ndp_sta_headers, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
 
-          proto_tree_add_checksum(hdr_tree, tvb, hdr_len + len, hf_ieee80211_fcs, hf_ieee80211_fcs_status, &ei_ieee80211_fcs, pinfo, fcs, ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_VERIFY);
-        } else {
-          proto_tree_add_checksum(hdr_tree, tvb, hdr_len + len, hf_ieee80211_fcs, hf_ieee80211_fcs_status, &ei_ieee80211_fcs, pinfo, 0, ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_NO_FLAGS);
-        }
-      }
-    }
-  else
-    {
-      flag_str[8] = '\0';
-    }
+    offset += 4;
+  }
 
-  proto_item_append_text(ti, ", Flags: %s", flag_str);
-  col_append_fstr(pinfo->cinfo, COL_INFO, ", Flags=%s", flag_str);
+  proto_item_set_len(pi, offset - saved_offset);
+  return offset;
+}
+
+static int
+dissect_ieee80211_vht_he_ndp_annc(tvbuff_t *tvb, packet_info *pinfo _U_,
+  proto_tree *tree, int offset, gboolean has_fcs)
+{
+  const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+  proto_item      *hidden_item;
+  guint8           dialog_token;
+
+  proto_tree_add_item(tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_ta_resolved, tvb,
+                        offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_item(tree, hf_ieee80211_addr, tvb, offset, 6,
+                        ENC_NA);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  hidden_item = proto_tree_add_string(tree, hf_ieee80211_addr_resolved, tvb,
+                        offset, 6, ether_name);
+  PROTO_ITEM_SET_HIDDEN(hidden_item);
+  offset += 6;
 
+  dialog_token = tvb_get_guint8(tvb, offset);
 
   /*
-   * Only management and data frames have a body, so we don't have
-   * anything more to do for other types of frames.
+   * Is it VHT or HE?
    */
-  switch (FCF_FRAME_TYPE (fcf))
-    {
+  if (dialog_token & NDP_ANNC_VHT_HE) {
+    return dissect_ieee80211_he_ndp_annc(tvb, pinfo, tree, offset, has_fcs);
+  } else {
+    return dissect_ieee80211_vht_ndp_annc(tvb, pinfo, tree, offset, has_fcs);
+  }
+}
 
-    case MGT_FRAME:
-      if (htc_len == 4) {
-        dissect_ht_control(hdr_tree, tvb, ohdr_len - 4);
-      }
-      break;
+static void
+set_src_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
+{
+  address      ether_addr;
 
-    case DATA_FRAME:
-      if ((option_flags & IEEE80211_COMMON_OPT_NORMAL_QOS) && tree && DATA_FRAME_IS_QOS(frame_type_subtype))
-      {
-        proto_item *qos_fields, *qos_ti;
-        proto_tree *qos_tree;
+  set_address_tvb(&ether_addr, AT_ETHER, 6, tvb, offset);
 
-        guint16 qos_eosp;
-        guint16 qos_field_content;
+  col_add_fstr(pinfo->cinfo, COL_RES_DL_SRC, "%s (%s)",
+        address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
+}
 
-        qos_fields = proto_tree_add_item(hdr_tree, hf_ieee80211_qos, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-        qos_tree = proto_item_add_subtree(qos_fields, ett_qos_parameters);
+static void
+set_dst_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
+{
+  address      ether_addr;
 
-        qos_eosp = QOS_EOSP(qos_control);
-        qos_field_content = QOS_FIELD_CONTENT(qos_control);
+  set_address_tvb(&ether_addr, AT_ETHER, 6, tvb, offset);
 
-        proto_tree_add_item(qos_tree, hf_ieee80211_qos_tid, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+  col_add_fstr(pinfo->cinfo, COL_RES_DL_DST, "%s (%s)",
+        address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
+}
 
-        qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_priority, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-        PROTO_ITEM_SET_GENERATED(qos_ti);
+static guint32
+crc32_802_tvb_padded(tvbuff_t *tvb, guint hdr_len, guint hdr_size, guint len)
+{
+  guint32 c_crc;
 
-        if (FLAGS_DS_STATUS(flags) == (FLAG_FROM_DS|FLAG_TO_DS)) {
-          /* mesh frame */
-          proto_tree_add_item(qos_tree, hf_ieee80211_qos_eosp, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-        } else {
-          if (flags & FLAG_TO_DS) {
-            proto_tree_add_item(qos_tree, hf_ieee80211_qos_bit4, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-          } else {
-            proto_tree_add_item(qos_tree, hf_ieee80211_qos_eosp, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-          }
-        }
+  c_crc = crc32_ccitt_tvb(tvb, hdr_len);
+  c_crc = crc32_ccitt_tvb_offset_seed(tvb, hdr_size, len, ~c_crc);
 
-        proto_tree_add_item(qos_tree, hf_ieee80211_qos_ack_policy, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+  return (c_crc);
+}
 
-        if (flags & FLAG_FROM_DS) {
-          if (!DATA_FRAME_IS_NULL(frame_type_subtype)) {
-            proto_tree_add_item(qos_tree, hf_ieee80211_qos_amsdu_present, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            is_amsdu = QOS_AMSDU_PRESENT(qos_control);
-          }
-          if (DATA_FRAME_IS_CF_POLL(frame_type_subtype)) {
-            /* txop limit */
-              qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_txop_limit, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            if (qos_field_content == 0) {
-              proto_item_append_text(qos_ti, " (transmit one frame immediately)");
-            }
-          } else {
-            /* qap ps buffer state */
-            proto_item *qos_ps_buf_state_fields;
-            proto_tree *qos_ps_buf_state_tree;
+typedef enum {
+    ENCAP_802_2,
+    ENCAP_IPX,
+    ENCAP_ETHERNET
+} encap_t;
 
-            qos_ps_buf_state_fields = proto_tree_add_item(qos_tree, hf_ieee80211_qos_ps_buf_state, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            qos_ps_buf_state_tree = proto_item_add_subtree(qos_ps_buf_state_fields, ett_qos_ps_buf_state);
+/* ************************************************************************* */
+/*                          Dissect 802.11 frame                             */
+/* ************************************************************************* */
+/*
+ * The 802.11n specification makes some fairly significant changes to the
+ * layout of the MAC header.  The first two bits of the MAC header are the
+ * protocol version.  You'd think that the 802.11 committee would have
+ * bumped the version to indicate a different MAC layout, but NOOOO -- we
+ * have to go digging for bits in various locations instead.
+ */
+static int
+dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
+                          proto_tree *tree, guint32 option_flags,
+                          struct ieee_802_11_phdr *phdr)
+{
+  guint16          fcf, flags, frame_type_subtype, ctrl_fcf, ctrl_type_subtype;
+  guint16          cw_fcf;
+  guint16          seq_control;
+  guint32          seq_number, frag_number;
+  gboolean         more_frags;
+  proto_item      *ti          = NULL;
+  proto_item      *cw_item     = NULL;
+  proto_item      *hidden_item;
+  proto_tree      *cw_tree     = NULL;
+  guint16          hdr_len, ohdr_len;
+  guint16          htc_len     = 0;
+  gboolean         has_fcs;
+  gint             len, reported_len, ivlen;
+  gint             sta_addr_offset = 0;
+  const gchar     *station_name;
+  gboolean         is_amsdu    = 0;
+  gboolean         save_fragmented;
+  guint32          addr_type;
+  guint8           octet1, octet2;
+  char             out_buff[SHORT_STR];
+  gint             is_iv_bad;
+  guchar           iv_buff[4];
+  const char      *addr1_str   = "RA";
+  guint            offset;
+  const gchar     *fts_str;
+  gchar            flag_str[]  = "opmPRMFTC";
+  gint             ii;
+  guint16          qosoff      = 0;
+  guint16          qos_control = 0;
+  gint             meshctl_len = 0;
+  guint8           mesh_flags;
+  guint16          meshoff     = 0;
+  static wlan_hdr_t whdrs[4];
+  gboolean         retransmitted;
+  gboolean         isDMG = (phdr->has_frequency ?
+                                IS_80211AD(phdr->frequency) :
+                                FALSE);
 
-            proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_buf_state_indicated, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+  encap_t     encap_type;
+  proto_tree *hdr_tree = NULL;
+  tvbuff_t   *next_tvb = NULL;
+  wlan_hdr_t *whdr;
 
-            if (QOS_PS_BUF_STATE_INDICATED(qos_field_content)) {
-              proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_highest_pri_buf_ac, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-              qos_ti = proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_qap_buf_load, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-              switch (QOS_PS_QAP_BUF_LOAD(qos_field_content)) {
+  DOT11DECRYPT_KEY_ITEM  used_key;
 
-              case 0:
-                proto_item_append_text(qos_ti, " (no buffered traffic)");
-                break;
+  p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_DMG_KEY, GINT_TO_POINTER(isDMG));
 
-              default:
-                proto_item_append_text(qos_ti, " (%d octets)", QOS_PS_QAP_BUF_LOAD(qos_field_content)*4096);
-                break;
+  whdr= &whdrs[0];
 
-              case 15:
-                proto_item_append_text(qos_ti, " (greater than 57344 octets)");
-                break;
-              }
+  col_set_str(pinfo->cinfo, COL_PROTOCOL, "802.11");
+  col_clear(pinfo->cinfo, COL_INFO);
 
-            }
-          }
-        } else {
-          if (!DATA_FRAME_IS_NULL(frame_type_subtype)) {
-            proto_tree_add_item(qos_tree, hf_ieee80211_qos_amsdu_present, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            is_amsdu = QOS_AMSDU_PRESENT(qos_control);
-          }
-          if (qos_eosp) {
-            /* queue size */
-            qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_queue_size, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            switch (qos_field_content) {
-            case 0:
-              proto_item_append_text(qos_ti, " (no buffered traffic in the queue)");
-              break;
+  fcf = FETCH_FCF(0);
+  frame_type_subtype = COMPOSE_FRAME_TYPE(fcf);
+  whdr->type = frame_type_subtype;
+  if (frame_type_subtype == CTRL_CONTROL_WRAPPER)
+    ctrl_fcf = FETCH_FCF(10);
+  else
+    ctrl_fcf = 0;
 
-            default:
-              proto_item_append_text(qos_ti, " (%u bytes)", qos_field_content*256);
-              break;
+  fts_str = val_to_str_ext_const(frame_type_subtype, &frame_type_subtype_vals_ext,
+                                 "Unrecognized (Reserved frame)");
+  col_set_str(pinfo->cinfo, COL_INFO, fts_str);
 
-            case 254:
-              proto_item_append_text(qos_ti, " (more than 64768 octets)");
-              break;
 
-            case 255:
-              proto_item_append_text(qos_ti, " (unspecified or unknown)");
-              break;
-            }
-          } else {
-            /* txop duration requested */
-            qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_txop_dur_req,
-                                   tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
-            if (qos_field_content == 0) {
-              proto_item_append_text(qos_ti, " (no TXOP requested)");
-            }
-          }
-        }
+# define FROM_TO_DS 3
+  flags = FCF_FLAGS(fcf);
+  more_frags = HAVE_FRAGMENTS(flags);
 
-        /* Do we have +HTC? */
-        if (htc_len == 4) {
-          dissect_ht_control(hdr_tree, tvb, ohdr_len - 4);
-        }
+  for (ii = 0; ii < 8; ii++) {
+    if (! (flags & 0x80 >> ii)) {
+      flag_str[ii] = '.';
+    }
+  }
 
-        if (meshctl_len != 0) {
-          proto_item *msh_fields;
-          proto_tree *msh_tree;
+  switch (FCF_FRAME_TYPE (fcf)) {
 
-          msh_fields = proto_tree_add_item(hdr_tree, hf_ieee80211_mesh_control_field, tvb, meshoff, meshctl_len, ENC_NA);
-          msh_tree = proto_item_add_subtree(msh_fields, ett_msh_control);
-          add_ff_mesh_control(msh_tree, tvb, pinfo, meshoff);
-        }
+  case MGT_FRAME:
+    hdr_len = MGT_FRAME_HDR_LEN;
+    if (HAS_HT_CONTROL(FCF_FLAGS(fcf))) {
+      /*
+       * Management frames with the Order bit set have an HT Control field;
+       * see 8.2.4.1.10 "Order field".  If they're not HT frames, they should
+       * never have the Order bit set.
+       */
+      hdr_len += 4;
+      htc_len = 4;
+    }
+    break;
 
-      } /* end of qos control field */
-      if (enable_decryption && !pinfo->fd->flags.visited) {
-        const guint8 *enc_data = tvb_get_ptr(tvb, 0, hdr_len+reported_len);
-        /* The processing will take care of 4-way handshake sessions for WPA and WPA2 decryption */
-        AirPDcapPacketProcess(&airpdcap_ctx, enc_data, hdr_len, hdr_len+reported_len, NULL, 0, NULL, TRUE);
+  case CONTROL_FRAME:
+    if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
+      hdr_len = 6;
+      cw_fcf = ctrl_fcf;
+    } else {
+      hdr_len = 0;
+      cw_fcf = fcf;
+    }
+    switch (COMPOSE_FRAME_TYPE (cw_fcf)) {
 
-      }
+    case CTRL_TRIGGER:
       /*
-       * No-data frames don't have a body.
+       * This is a variable length frame ... we set the real length below
+       * and since the common info is variable, just set the hdr len to
+       * the fixed portion, 16. There can also be one or more user-info
+       * sections, followed by padding.
        */
-      if (DATA_FRAME_IS_NULL(frame_type_subtype))
-        goto end_of_wlan;
+      hdr_len = 16;
+      break;
 
-      if (!wlan_subdissector) {
-        guint fnum = 0;
+    case CTRL_BEAMFORM_RPT_POLL:
+      hdr_len += 17;
+      break;
 
-        /* key: bssid:src
-         * data: last seq_control seen and frame number
-         */
-        retransmitted = FALSE;
-        if (!pinfo->fd->flags.visited) {
-          retransmit_key key;
-          retransmit_key *result;
+    case CTRL_VHT_NDP_ANNC:
+      hdr_len += 17;
+      /* TODO: for now we only consider a single STA, add support for more */
+      hdr_len += 2;
+      break;
 
-          memcpy(key.bssid, whdr->bssid.data, 6);
-          memcpy(key.src, whdr->src.data, 6);
-          key.seq_control = 0;
-          result = (retransmit_key *)g_hash_table_lookup(fc_analyse_retransmit_table, &key);
-          if (result && (result->seq_control == seq_control)) {
-            /* keep a pointer to the first seen frame, could be done with proto data? */
-            fnum = result->fnum;
-            g_hash_table_insert(fc_first_frame_table, GINT_TO_POINTER(pinfo->num),
-                                GINT_TO_POINTER(fnum));
-            retransmitted = TRUE;
-          } else {
-            /* first time or new seq*/
-            if (!result) {
-              result = wmem_new(wmem_file_scope(), retransmit_key);
-              *result = key;
-              g_hash_table_insert(fc_analyse_retransmit_table, result, result);
-            }
-            result->seq_control = seq_control;
-            result->fnum =  pinfo->num;
-          }
-        }
-        else if ((fnum = GPOINTER_TO_UINT(g_hash_table_lookup(fc_first_frame_table, GINT_TO_POINTER(pinfo->num))))) {
-          retransmitted = TRUE;
-        }
+    case CTRL_CTS:
+    case CTRL_ACKNOWLEDGEMENT:
+      hdr_len += 10;
+      break;
 
-        if (retransmitted) {
-          col_append_str(pinfo->cinfo, COL_INFO, " [retransmitted]");
-          if (tree) {
-            proto_item *item;
+    case CTRL_POLL:
+      hdr_len += 18;
+      break;
 
-            item=proto_tree_add_none_format(hdr_tree, hf_ieee80211_fc_analysis_retransmission, tvb, 0, 0,
-                                            "Retransmitted frame");
-            PROTO_ITEM_SET_GENERATED(item);
-            item=proto_tree_add_uint(hdr_tree, hf_ieee80211_fc_analysis_retransmission_frame, tvb, 0, 0, fnum);
-            PROTO_ITEM_SET_GENERATED(item);
-          }
-          next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len, len, reported_len);
-          call_data_dissector(next_tvb, pinfo, tree);
-          goto end_of_wlan;
-        }
-      }
+    case CTRL_SPR:
+    case CTRL_GRANT:
+    case CTRL_GRANT_ACK:
+      hdr_len += 23;
+      break;
 
+    case CTRL_DMG_CTS:
+      hdr_len += 16;
       break;
 
-    case CONTROL_FRAME:
-      goto end_of_wlan;
+    case CTRL_DMG_DTS:
+    case CTRL_SSW:
+      hdr_len += 22;
+      break;
 
-    case EXTENSION_FRAME:
+    case CTRL_SSW_FEEDBACK:
+    case CTRL_SSW_ACK:
+      hdr_len += 24;
+      break;
+
+    case CTRL_RTS:
+    case CTRL_PS_POLL:
+    case CTRL_CFP_END:
+    case CTRL_CFP_ENDACK:
+    case CTRL_BLOCK_ACK_REQ:
+    case CTRL_BLOCK_ACK:
+      hdr_len += 16;
       break;
 
     default:
-      goto end_of_wlan;
+      hdr_len += 4;  /* XXX */
+      break;
     }
+    break;
 
-  if (IS_PROTECTED(FCF_FLAGS(fcf))
-      && !phdr->decrypted
-      && (wlan_ignore_prot != WLAN_IGNORE_PROT_WO_IV)) {
-    /*
-     * It's a WEP or WPA encrypted frame, and it hasn't already been
-     * decrypted; dissect the protections parameters and decrypt the data,
-     * if we have a matching key. Otherwise display it as data.
-     */
-    gboolean    can_decrypt = FALSE;
-    proto_tree *wep_tree    = NULL;
-    guint32     iv;
-    guint8      key, keybyte;
-
-#define PROTECTION_ALG_WEP  AIRPDCAP_KEY_TYPE_WEP
-#define PROTECTION_ALG_TKIP  AIRPDCAP_KEY_TYPE_TKIP
-#define PROTECTION_ALG_CCMP  AIRPDCAP_KEY_TYPE_CCMP
-#define PROTECTION_ALG_RSNA  PROTECTION_ALG_CCMP | PROTECTION_ALG_TKIP
-    guint8 algorithm=G_MAXUINT8;
-#define IS_TKIP(tvb, hdr_len)  (tvb_get_guint8(tvb, hdr_len + 1) == \
-  ((tvb_get_guint8(tvb, hdr_len) | 0x20) & 0x7f))
-#define IS_CCMP(tvb, hdr_len)  (tvb_get_guint8(tvb, hdr_len + 2) == 0)
-    guint32 sec_header=0;
-    guint32 sec_trailer=0;
+  case DATA_FRAME:
+    hdr_len = (FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T4) ? DATA_LONG_HDR_LEN : DATA_SHORT_HDR_LEN;
 
-    next_tvb = try_decrypt(tvb, pinfo, hdr_len, reported_len, &algorithm, &sec_header, &sec_trailer, &used_key);
+    if ((option_flags & IEEE80211_COMMON_OPT_NORMAL_QOS) && DATA_FRAME_IS_QOS(frame_type_subtype)) {
+      /* QoS frame */
+      qosoff = hdr_len;
+      hdr_len += 2; /* Include the QoS field in the header length */
 
-    keybyte = tvb_get_guint8(tvb, hdr_len + 3);
-    key = KEY_OCTET_WEP_KEY(keybyte);
-    if ((keybyte & KEY_EXTIV) && (len >= EXTIV_LEN)) {
-      /* Extended IV; this frame is likely encrypted with TKIP or CCMP */
-      if (tree) {
-        if (algorithm==PROTECTION_ALG_TKIP)
-          wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
-              ett_wep_parameters, NULL, "TKIP parameters");
-        else if (algorithm==PROTECTION_ALG_CCMP)
-          wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
-            ett_wep_parameters, NULL, "CCMP parameters");
-        else {
-          if (IS_TKIP(tvb, hdr_len)) {
-            algorithm=PROTECTION_ALG_TKIP;
-            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
-                ett_wep_parameters, NULL, "TKIP parameters");
-          } else if (IS_CCMP(tvb, hdr_len)) {
-            algorithm=PROTECTION_ALG_CCMP;
-            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
-                ett_wep_parameters, NULL, "CCMP parameters");
-          } else
-            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
-                ett_wep_parameters, NULL, "TKIP/CCMP parameters");
-        }
-        proto_item_set_len(ti, hdr_len + 8);
+      if (HAS_HT_CONTROL(FCF_FLAGS(fcf))) {
+        /*
+         * QoS data frames with the Order bit set have an HT Control field;
+         * see 8.2.4.1.10 "Order field".  If they're not HT frames, they
+         * should never have the Order bit set.
+         */
+        hdr_len += 4;
+        htc_len = 4;
+      }
 
-        if (algorithm==PROTECTION_ALG_TKIP) {
-          g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
-              tvb_get_letohl(tvb, hdr_len + 4),
-              tvb_get_guint8(tvb, hdr_len),
-              tvb_get_guint8(tvb, hdr_len + 2));
-          proto_tree_add_string(wep_tree, hf_ieee80211_tkip_extiv, tvb, hdr_len,
-              EXTIV_LEN, out_buff);
-        } else if (algorithm==PROTECTION_ALG_CCMP) {
-          g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
-              tvb_get_letohl(tvb, hdr_len + 4),
-              tvb_get_guint8(tvb, hdr_len + 1),
-              tvb_get_guint8(tvb, hdr_len));
-          proto_tree_add_string(wep_tree, hf_ieee80211_ccmp_extiv, tvb, hdr_len,
-              EXTIV_LEN, out_buff);
+      /*
+       * Does it look as if we have a mesh header?
+       * Look at the Mesh Control subfield of the QoS field and at the
+       * purported mesh flag fields.
+       */
+      qos_control = tvb_get_letohs(tvb, qosoff);
+      if (tvb_bytes_exist(tvb, hdr_len, 1)) {
+        meshoff = hdr_len;
+        mesh_flags = tvb_get_guint8(tvb, meshoff);
+        if (has_mesh_control(fcf, qos_control, mesh_flags)) {
+          /* Yes, add the length of that in as well. */
+          meshctl_len = find_mesh_control_length(mesh_flags);
+          hdr_len += meshctl_len;
         }
-
-        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_key, tvb, hdr_len + 3, 1, key);
       }
+    }
+    break;
 
-      /* Subtract out the length of the IV. */
-      len          -= EXTIV_LEN;
-      reported_len -= EXTIV_LEN;
-      ivlen         = EXTIV_LEN;
-      /* It is unknown whether this is TKIP or CCMP, so let's not even try to
-       * parse TKIP Michael MIC+ICV or CCMP MIC. */
-
-      /* checking for the trailer                            */
-      if (next_tvb!=NULL) {
-        if (reported_len < (gint) sec_trailer) {
-          /* There is no space for a trailer, ignore it and don't decrypt  */
-          ;
-        } else if (len < reported_len) {
-          /* There is space for a trailer, but we haven't capture all the  */
-          /* packet. Slice off the trailer, but don't try to decrypt      */
-          reported_len -= sec_trailer;
-          if (len > reported_len)
-            len = reported_len;
-        } else {
-          /* Ok, we have a trailer and the whole packet. Decrypt it!      */
-          /* TODO: At the moment we won't add the trailer to the tree,    */
-          /* so don't remove the trailer from the packet                  */
-          len          -= sec_trailer;
-          reported_len -= sec_trailer;
-          can_decrypt   = TRUE;
-
-          /* Add Key information to packet */
-          bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Ptk+32, AIRPDCAP_TK_LEN); /* TK is stored in PTK at offset 32 bytes and 16 bytes long */
-          out_buff[2*AIRPDCAP_TK_LEN] = '\0';
+  case EXTENSION_FRAME:
+    hdr_len = 10;
+    break;
 
-          if (key == 0) { /* encrypted with pairwise key */
-            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_tk, tvb, 0, 0, out_buff);
-            PROTO_ITEM_SET_GENERATED(ti);
+  default:
+    hdr_len = 4;  /* XXX */
+    break;
+  }
 
-            /* Also add the PMK used to to decrypt the packet. (PMK==PSK) */
-            bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Psk, AIRPDCAP_WPA_PSK_LEN); /* 32 bytes */
-            out_buff[2*AIRPDCAP_WPA_PSK_LEN] = '\0';
-            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_pmk, tvb, 0, 0, out_buff);
-            PROTO_ITEM_SET_GENERATED(ti);
+  /*
+   * Some portions of this code calculate offsets relative to the end of the
+   * header.  But when the header has been padded to align the data this must
+   * be done relative to true header size, not the padded/aligned value.  To
+   * simplify this work we stash the original header size in ohdr_len instead
+   * of recalculating it every time we need it.
+   */
+  ohdr_len = hdr_len;
+  if (phdr->datapad) {
+    /*
+     * Add in Atheros padding between the 802.11 header and body.
+     *
+     * XXX - would the mesh header be part of the header or the body
+     * from the point of view of the Atheros adapters that insert
+     * the padding, assuming they even recognize a mesh header?
+     */
+    hdr_len = roundup2(hdr_len, 4);
+  }
 
-          } else { /* Encrypted with Group Key */
-            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_gtk, tvb, 0, 0, out_buff); /* GTK is stored in PTK at offset 32 bytes and 16 bytes long */
-            PROTO_ITEM_SET_GENERATED(ti);
-          }
-        }
-      }
-    } else {
-      /* No Ext. IV - WEP packet */
-      /*
-       * XXX - pass the IV and key to "try_decrypt_wep()", and have it pass
-       * them to "wep_decrypt()", rather than having "wep_decrypt()" extract
-       * them itself.
-       *
-       * Also, just pass the data *following* the WEP parameters as the
-       * buffer to decrypt.
-       */
-      iv = tvb_get_ntoh24(tvb, hdr_len);
-      if (tree) {
-        wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 4,
-            ett_wep_parameters, NULL, "WEP parameters");
+  /* Add the FC and duration/id to the current tree */
+  ti = proto_tree_add_protocol_format (tree, proto_wlan, tvb, 0, hdr_len,
+                                           "IEEE 802.11 %s", fts_str);
+  hdr_tree = proto_item_add_subtree(ti, ett_80211);
 
-        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_iv, tvb, hdr_len, 3, iv);
-        tvb_memcpy(tvb, iv_buff, hdr_len, 3);
-        is_iv_bad = weak_iv(iv_buff);
-        if (is_iv_bad != -1) {
-          proto_tree_add_boolean_format (wep_tree, hf_ieee80211_wep_iv_weak,
-              tvb, 0, 0, TRUE,
-              "Weak IV for key byte %d",
-              is_iv_bad);
-        }
-      }
-      if (tree)
-        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_key, tvb, hdr_len + 3, 1, key);
+  dissect_frame_control(hdr_tree, tvb, option_flags, 0, pinfo);
+  dissect_durid(hdr_tree, tvb, frame_type_subtype, 2);
 
-      /* Subtract out the length of the IV. */
-      len          -= 4;
-      reported_len -= 4;
-      ivlen         = 4;
+  switch (phdr->fcs_len)
+    {
+      case 0: /* Definitely has no FCS */
+        has_fcs = FALSE;
+        break;
 
-      /* Even if the decryption was not successful, set the algorithm */
-      algorithm=PROTECTION_ALG_WEP;
+      case 4: /* Definitely has an FCS */
+        has_fcs = TRUE;
+        break;
 
-      /*
-       * Well, this packet should, in theory, have an ICV.
-       * Do we have the entire packet, and does it have enough data for
-       * the ICV?
-       */
-      if (reported_len < 4) {
-        /*
-         * The packet is claimed not to even have enough data for a
-         * 4-byte ICV.
-         * Pretend it doesn't have an ICV.
-         */
-        ;
-      } else if (len < reported_len) {
-        /*
-         * The packet is claimed to have enough data for a 4-byte ICV,
-         * but we didn't capture all of the packet.
-         * Slice off the 4-byte ICV from the reported length, and trim
-         * the captured length so it's no more than the reported length;
-         * that will slice off what of the ICV, if any, is in the
-         * captured length.
-         */
-        reported_len -= 4;
-        if (len > reported_len)
-          len         = reported_len;
-      } else {
-        /*
-         * We have the entire packet, and it includes a 4-byte ICV.
-         * Slice it off, and put it into the tree.
-         *
-         * We only support decrypting if we have the the ICV.
-         *
-         * XXX - the ICV is encrypted; we're putting the encrypted
-         * value, not the decrypted value, into the tree.
-         */
-        len          -= 4;
-        reported_len -= 4;
-        can_decrypt   = TRUE;
-      }
-    }
+      case -2: /* Data frames have no FCS, other frames may have an FCS */
+               /* XXX: -2 currently used only in wiretap/netmon.c       */
+        if (FCF_FRAME_TYPE (fcf) == DATA_FRAME)
+          has_fcs = FALSE;
+        else /* Management, Control, Extension */
+          has_fcs = wlan_check_fcs;
+        break;
 
-    if (algorithm == PROTECTION_ALG_WEP) {
-      g_strlcpy(wlan_stats.protection, "WEP", MAX_PROTECT_LEN);
-    } else if (algorithm == PROTECTION_ALG_TKIP) {
-      g_strlcpy(wlan_stats.protection, "TKIP", MAX_PROTECT_LEN);
-    } else if (algorithm == PROTECTION_ALG_CCMP) {
-      g_strlcpy(wlan_stats.protection, "CCMP", MAX_PROTECT_LEN);
-    } else {
-      g_strlcpy(wlan_stats.protection, "Unknown", MAX_PROTECT_LEN);
+      default: /* Don't know - use "wlan_check_fcs" */
+        has_fcs = wlan_check_fcs;
+        break;
     }
 
-    /* protection header                                  */
-    if (!can_decrypt || (next_tvb == NULL)) {
+  /*
+   * Decode the part of the frame header that isn't the same for all
+   * frame types.
+   */
+  seq_control = 0;
+  frag_number = 0;
+  seq_number = 0;
+
+  /* all frames have address 1 = RA */
+  if (tree) {
+    const gchar *ether_name = tvb_get_ether_name(tvb, 4);
+    proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
+    hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6, ether_name);
+    PROTO_ITEM_SET_HIDDEN(hidden_item);
+    hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
+    PROTO_ITEM_SET_HIDDEN(hidden_item);
+    hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6, ether_name);
+    PROTO_ITEM_SET_HIDDEN(hidden_item);
+  }
+
+  switch (FCF_FRAME_TYPE (fcf))
+  {
+
+    case MGT_FRAME:
       /*
-       * WEP decode impossible or failed, treat payload as raw data
-       * and don't attempt fragment reassembly or further dissection.
+       * All management frame types have the same header.
        */
-      next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len + ivlen, len, reported_len);
+      set_address_tvb(&pinfo->dl_src, wlan_address_type, 6, tvb, 10);
+      copy_address_shallow(&pinfo->src, &pinfo->dl_src);
+      set_address_tvb(&pinfo->dl_dst, wlan_address_type, 6, tvb, 4);
+      copy_address_shallow(&pinfo->dst, &pinfo->dl_dst);
 
-      if (tree) {
-        if (algorithm == PROTECTION_ALG_WEP) {
-          if (can_decrypt)
-            proto_tree_add_uint_format_value(wep_tree, hf_ieee80211_wep_icv, tvb,
-                hdr_len + ivlen + len, 4,
-                tvb_get_ntohl(tvb, hdr_len + ivlen + len),
-                "0x%08x (not verified)",
-                tvb_get_ntohl(tvb, hdr_len + ivlen + len));
-        } else if (algorithm == PROTECTION_ALG_CCMP) {
-        } else if (algorithm == PROTECTION_ALG_TKIP) {
-        }
-      }
+      /* for tap */
+      set_address_tvb(&whdr->bssid, wlan_bssid_address_type, 6, tvb, 16);
+      copy_address_shallow(&whdr->src, &pinfo->dl_src);
+      copy_address_shallow(&whdr->dst, &pinfo->dl_dst);
 
-      if ((!(option_flags & IEEE80211_COMMON_OPT_IS_CENTRINO)) && (wlan_ignore_prot == WLAN_IGNORE_PROT_NO)) {
-        /* Some wireless drivers (such as Centrino) WEP payload already decrypted */
-        call_data_dissector(next_tvb, pinfo, tree);
-        goto end_of_wlan;
-      }
-    } else {
-      if (algorithm == PROTECTION_ALG_WEP) {
-        if (tree)
-          proto_tree_add_uint_format_value(wep_tree, hf_ieee80211_wep_icv, tvb,
-              hdr_len + ivlen + len, 4,
-              tvb_get_ntohl(tvb, hdr_len + ivlen + len),
-              "0x%08x (correct)",
-              tvb_get_ntohl(tvb, hdr_len + ivlen + len));
+      seq_control = tvb_get_letohs(tvb, 22);
+      frag_number = SEQCTL_FRAGMENT_NUMBER(seq_control);
+      seq_number = SEQCTL_SEQUENCE_NUMBER(seq_control);
 
-        add_new_data_source(pinfo, next_tvb, "Decrypted WEP data");
-      } else if (algorithm==PROTECTION_ALG_CCMP) {
-        add_new_data_source(pinfo, next_tvb, "Decrypted CCMP data");
-      } else if (algorithm==PROTECTION_ALG_TKIP) {
-        add_new_data_source(pinfo, next_tvb, "Decrypted TKIP data");
-      }
-#undef IS_TKIP
-#undef IS_CCMP
-#undef PROTECTION_ALG_CCMP
-#undef PROTECTION_ALG_TKIP
-#undef PROTECTION_ALG_WEP
-    }
+      col_append_fstr(pinfo->cinfo, COL_INFO,
+            ", SN=%d", seq_number);
 
-    /*
-     * WEP decryption successful!
-     *
-     * Use the tvbuff we got back from the decryption; the data starts at
-     * the beginning.  The lengths are already correct for the decoded WEP
-     * payload.
-     */
-    hdr_len = 0;
+      col_append_fstr(pinfo->cinfo, COL_INFO,
+            ", FN=%d", frag_number);
 
-  } else {
-    /*
-     * Not a WEP-encrypted frame; just use the data from the tvbuff
-     * handed to us.
-     *
-     * The payload starts at "hdr_len" (i.e., just past the 802.11
-     * MAC header), the length of data in the tvbuff following the
-     * 802.11 header is "len", and the length of data in the packet
-     * following the 802.11 header is "reported_len".
-     */
-    next_tvb = tvb;
-  }
+      if (tree)
+      {
+        const gchar *ra_da_name, *ta_sa_name, *bssid_name;
 
-  /*
-   * Do defragmentation if "wlan_defragment" is true, and we have more
-   * fragments or this isn't the first fragment.
-   *
-   * We have to do some special handling to catch frames that
-   * have the "More Fragments" indicator not set but that
-   * don't show up as reassembled and don't have any other
-   * fragments present.  Some networking interfaces appear
-   * to do reassembly even when you're capturing raw packets
-   * *and* show the reassembled packet without the "More
-   * Fragments" indicator set *but* with a non-zero fragment
-   * number.
-   *
-   * "fragment_add_seq_802_11()" handles that; we want to call it
-   * even if we have a short frame, so that it does those checks - if
-   * the frame is short, it doesn't do reassembly on it.
-   *
-   * (This could get some false positives if we really *did* only
-   * capture the last fragment of a fragmented packet, but that's
-   * life.)
-   */
-  save_fragmented = pinfo->fragmented;
-  if (wlan_defragment && (more_frags || (frag_number != 0))) {
-    fragment_head *fd_head;
+        ra_da_name = tvb_get_ether_name(tvb, 4);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6, ra_da_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
+        ta_sa_name = tvb_get_ether_name(tvb, 10);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6, ta_sa_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_sa, tvb, 10, 6, ENC_NA);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6, ta_sa_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 16, 6, ENC_NA);
+        bssid_name = tvb_get_ether_name(tvb, 16);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6, bssid_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
 
-    /*
-     * If we've already seen this frame, look it up in the
-     * table of reassembled packets, otherwise add it to
-     * whatever reassembly is in progress, if any, and see
-     * if it's done.
-     */
-    if (reported_len < 0)
-      THROW(ReportedBoundsError);
-    fd_head = fragment_add_seq_802_11(&wlan_reassembly_table,
-        next_tvb, hdr_len, pinfo, seq_number, NULL,
-        frag_number,
-        reported_len,
-        more_frags);
-    next_tvb = process_reassembled_data(tvb, hdr_len, pinfo,
-        "Reassembled 802.11", fd_head,
-        &frag_items, NULL, hdr_tree);
-  } else {
-    /*
-     * If this is the first fragment, dissect its contents, otherwise
-     * just show it as a fragment.
-     */
-    if (frag_number != 0) {
-      /* Not the first fragment - don't dissect it. */
-      next_tvb = NULL;
-    } else {
-      /* First fragment, or not fragmented.  Dissect what we have here. */
+        /* FIXME: With mgmt frames FROM_TO_DS is always 0, perhaps compare address to bssid instead? */
+        if ((flags & FROM_TO_DS) == FLAG_FROM_DS) { /* Receiver address */
+          sta_addr_offset = 4;
+        } else if ((flags & FROM_TO_DS) == FLAG_TO_DS) { /* Transmitter address */
+          sta_addr_offset = 10;
+        }
+        if (sta_addr_offset > 0) {
+          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_staa, tvb, sta_addr_offset, 6, ENC_NA);
+          station_name = tvb_get_ether_name(tvb, sta_addr_offset);
+          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_staa_resolved, tvb, sta_addr_offset, 6, station_name);
+          PROTO_ITEM_SET_HIDDEN(hidden_item);
+        }
+        /* add items for wlan.addr filter */
+        hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6, ta_sa_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6, bssid_name);
+        PROTO_ITEM_SET_HIDDEN(hidden_item);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+        proto_tree_add_item(hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+      }
+      break;
 
-      /* Get a tvbuff for the payload. */
-      next_tvb = tvb_new_subset_length_caplen(next_tvb, hdr_len, len, reported_len);
+    case CONTROL_FRAME:
+    {
+      /*
+       * Control Wrapper frames insert themselves between address 1
+       * and address 2 in a normal control frame.  Process address 1
+       * first, then handle the rest of the frame in dissect_control.
+       */
+      if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
+        offset = 10; /* FC + D/ID + Address 1 + CFC + HTC */
+        ctrl_fcf = FETCH_FCF(10);
+        ctrl_type_subtype = COMPOSE_FRAME_TYPE(ctrl_fcf);
+      } else {
+        offset = 10; /* FC + D/ID + Address 1 */
+        ctrl_type_subtype = frame_type_subtype;
+      }
+      /* Added to disallow DMG STA to transfer packets of certain forbidden types. */
+      switch (ctrl_type_subtype)
+      {
+        case CTRL_PS_POLL:
+        case CTRL_CTS:
+        case CTRL_CFP_ENDACK:
+        if(isDMG == TRUE) {
+          expert_add_info_format(pinfo, hdr_tree, &ei_ieee80211_dmg_subtype,
+              "DMG STA shouldn't transmit control frame of type contention-free period end+ack");
+        }
+        break;
+        default:
+          break;
+      }
+
+      if (ctrl_type_subtype == CTRL_PS_POLL) {
+        addr1_str = "BSSID";
+        if (tree) {
+          const gchar *ether_name = tvb_get_ether_name(tvb, 4);
+          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
+          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 4, 6, ether_name);
+          PROTO_ITEM_SET_HIDDEN(hidden_item);
+        }
+      }
+
+      /* Add address 1 */
+      set_dst_addr_cols(pinfo, tvb, 4, addr1_str);
 
       /*
-       * If this is the first fragment, but not the only fragment,
-       * tell the next protocol that.
+       * Start shoving in other fields if needed.
        */
-      if (more_frags)
-        pinfo->fragmented = TRUE;
-      else
-        pinfo->fragmented = FALSE;
-    }
-  }
+      if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
+        /* if (tree) */
+        {
+          cw_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
+                      ett_cntrl_wrapper_fc, NULL, "Contained Frame Control");
+          dissect_frame_control(cw_tree, tvb, 0, offset, pinfo);
+          dissect_ht_control(hdr_tree, tvb, offset + 2);
+          offset += 6;
+          hdr_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
+                      ett_cntrl_wrapper_fc, &cw_item, "Carried Frame");
+          if (isDMG) {
+            expert_add_info_format(pinfo, cw_item, &ei_ieee80211_dmg_subtype,
+                                   "DMG STA shouldn't transmit Control Wrapper frame");
+          }
+        }
+      }
 
-  if (next_tvb == NULL) {
-    /* Just show this as an incomplete fragment. */
-    col_set_str(pinfo->cinfo, COL_INFO, "Fragmented IEEE 802.11 frame");
-    next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len, len, reported_len);
-    call_data_dissector(next_tvb, pinfo, tree);
-    pinfo->fragmented = save_fragmented;
-    goto end_of_wlan;
-  }
+      switch (ctrl_type_subtype)
+      {
+        case CTRL_PS_POLL:
+        case CTRL_CFP_ENDACK:
+        {
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+          /* if (tree) */
+          {
+            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            offset += 6;
+          }
+          break;
+        }
 
-  switch (FCF_FRAME_TYPE (fcf))
-    {
+        case CTRL_CFP_END:
+        {
+          if (isDMG)
+            set_src_addr_cols(pinfo, tvb, offset, "TA");
+          else
+            set_src_addr_cols(pinfo, tvb, offset, "BSSID");
+          /* if (tree) */
+          {
+            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+            if (isDMG) {
+              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            } else {
+              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, offset, 6, ENC_NA);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, offset, 6, ether_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            }
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            offset += 6;
+          }
+          break;
+        }
+
+        case CTRL_TRIGGER:
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+          /*
+           * The len returned will be adjusted to include any padding required
+           */
+          hdr_len = dissect_ieee80211_he_trigger(tvb, pinfo, hdr_tree, offset);
+          ohdr_len = hdr_len;
+          has_fcs = FALSE;  /* Not sure at this stage */
+          break;
+
+        case CTRL_BEAMFORM_RPT_POLL:
+        {
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+          /* if (tree) */
+          {
+            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            offset += 6;
+
+            proto_tree_add_item(hdr_tree, hf_ieee80211_beamform_feedback_seg_retrans_bitmap, tvb, offset, 1, ENC_NA);
+          }
+        break;
+        }
+
+        case CTRL_VHT_NDP_ANNC:
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+
+          dissect_ieee80211_vht_he_ndp_annc(tvb, pinfo, hdr_tree, offset, has_fcs);
+          break;
+
+        case CTRL_GRANT_ACK:
+        case CTRL_SSW:
+        case CTRL_SSW_FEEDBACK:
+        case CTRL_SSW_ACK:
+        case CTRL_DMG_CTS:
+        case CTRL_GRANT:
+        case CTRL_SPR:
+        case CTRL_POLL:
+        case CTRL_RTS:
+        {
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+          /* if (tree) */
+          {
+            const gchar *ether_name = tvb_get_ether_name(tvb, offset);
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            offset += 6;
+          }
+          break;
+        }
+
+        case CTRL_CONTROL_WRAPPER:
+          /* XXX - We shouldn't see this.  Should we throw an error? */
+          break;
+
+        case CTRL_BLOCK_ACK_REQ:
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+
+          offset = dissect_ieee80211_block_ack(tvb, pinfo, hdr_tree, offset, isDMG, TRUE, has_fcs);
+          break;
+
+        case CTRL_BLOCK_ACK:
+          set_src_addr_cols(pinfo, tvb, offset, "TA");
+
+          offset = dissect_ieee80211_block_ack(tvb, pinfo, hdr_tree, offset, isDMG, FALSE, has_fcs);
+          break;
+      }
+/*
+ * 802.11ad : Used for extension types.
+ */
+      switch (ctrl_type_subtype) {
+        case CTRL_POLL: {
+                proto_tree_add_item(hdr_tree, hf_ieee80211_cf_response_offset,
+                      tvb, offset, 2, ENC_LITTLE_ENDIAN);
+
+                break;
+        }
+        case CTRL_GRANT:
+        case CTRL_GRANT_ACK:
+        case CTRL_SPR: {
+          gboolean isGrant;
+          if(ctrl_type_subtype != CTRL_GRANT_ACK) {
+            offset += add_ff_dynamic_allocation(hdr_tree, tvb, pinfo, offset);
+          } else { /* CTRL_GRANT_ACK have 5 octets that are reserved*/
+            proto_tree_add_item(hdr_tree, hf_ieee80211_grant_ack_reserved, tvb, offset, 5, ENC_NA);
+            offset += 5;
+          }
+          isGrant = ((ctrl_type_subtype==CTRL_GRANT)||(ctrl_type_subtype==CTRL_GRANT_ACK));
+          add_ff_beamforming_ctrl(hdr_tree, tvb, pinfo, offset, isGrant);
+          /* offset += 2; */
+          break;
+        }
+        case CTRL_SSW: {
+          guint32 sector_sweep;
+
+          sector_sweep = tvb_get_letoh24(tvb, offset);
+          offset += add_ff_sector_sweep(hdr_tree, tvb, pinfo, offset);
+          /* if Sector Sweep Direction = Responder, use SW Feedback field format when not transmitted as part of an ISS */
+          if(sector_sweep & 0x00001) {
+            add_ff_sector_sweep_feedback_to_iss(hdr_tree, tvb, pinfo, offset);
+          } else {
+            add_ff_sector_sweep_feedback_from_iss(hdr_tree, tvb, pinfo, offset);
+          }
+          /* offset += 3; */
+          break;
+        }
+        case CTRL_SSW_ACK:
+        case CTRL_SSW_FEEDBACK: {
+          offset += add_ff_sector_sweep_feedback_to_iss(hdr_tree, tvb, pinfo, offset);
+          offset += add_ff_BRP_request(hdr_tree, tvb, pinfo, offset);
+          add_ff_beamformed_link(hdr_tree, tvb, pinfo, offset);
+          /* offset += 1; */
+          break;
+        }
+        case CTRL_DMG_DTS: {
+          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_nav_sa, tvb, offset, 6, ENC_NA);
+          offset += 6;
+          proto_tree_add_item(hdr_tree, hf_ieee80211_addr_nav_da, tvb, offset, 6, ENC_NA);
+          /* offset += 6; */
+          break;
+        }
+        default:
+                break;
+      }
+      break;
+    }
+
+    case DATA_FRAME:
+    {
+      guint32 da_offset, sa_offset, ta_offset = 10, bssid_offset;
+      addr_type = FCF_ADDR_SELECTOR(fcf);
+
+      /* In order to show src/dst address we must always do the following */
+      switch (addr_type)
+      {
+
+        case DATA_ADDR_T1:
+          da_offset = 4;
+          sa_offset = 10;
+          bssid_offset = 16;
+          break;
+
+        case DATA_ADDR_T2:
+          da_offset = 4;
+          sa_offset = 16;
+          bssid_offset = 10;
+          break;
+
+        case DATA_ADDR_T3:
+          da_offset = 16;
+          sa_offset = 10;
+          bssid_offset = 4;
+          break;
+
+        case DATA_ADDR_T4:
+          da_offset = 16;
+          sa_offset = 24;
+          bssid_offset = 10;
+          break;
+
+        default:
+          /* Should never happen? */
+          da_offset = 0;
+          sa_offset = 0;
+          ta_offset = 0;
+          bssid_offset = 0;
+          break;
+      }
+
+
+
+      set_address_tvb(&pinfo->dl_src, wlan_address_type, 6, tvb, sa_offset);
+      copy_address_shallow(&pinfo->src, &pinfo->dl_src);
+      set_address_tvb(&pinfo->dl_dst, wlan_address_type, 6, tvb, da_offset);
+      copy_address_shallow(&pinfo->dst, &pinfo->dl_dst);
+
+      /* for tap */
+      set_address_tvb(&whdr->bssid, wlan_bssid_address_type, 6, tvb, bssid_offset);
+
+      copy_address_shallow(&whdr->src, &pinfo->dl_src);
+      copy_address_shallow(&whdr->dst, &pinfo->dl_dst);
+
+      seq_control = tvb_get_letohs(tvb, 22);
+      frag_number = SEQCTL_FRAGMENT_NUMBER(seq_control);
+      seq_number = SEQCTL_SEQUENCE_NUMBER(seq_control);
+
+      col_append_fstr(pinfo->cinfo, COL_INFO,
+            ", SN=%d, FN=%d", seq_number, frag_number);
+
+      /* Now if we have a tree we start adding stuff */
+      if (tree)
+      {
+        const gchar *ta_name, *sa_name, *da_name, *bssid_name = NULL;
+
+        switch (addr_type)
+        {
+          case DATA_ADDR_T1:
+          case DATA_ADDR_T2:
+          case DATA_ADDR_T3:
+          case DATA_ADDR_T4:
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, ta_offset, 6, ENC_NA);
+            ta_name = tvb_get_ether_name(tvb, ta_offset);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, ta_offset, 6, ta_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            /* TA is always in the wlan.addr filter */
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, ta_offset, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, ta_offset, 6, ta_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_da, tvb, da_offset, 6, ENC_NA);
+            da_name = tvb_get_ether_name(tvb, da_offset);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, da_offset, 6, da_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_sa, tvb, sa_offset, 6, ENC_NA);
+            sa_name = tvb_get_ether_name(tvb, sa_offset);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, sa_offset, 6, sa_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, bssid_offset, 6, ENC_NA);
+            bssid_name = tvb_get_ether_name(tvb, bssid_offset);
+            hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, bssid_offset, 6, bssid_name);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+            if ((flags & FROM_TO_DS) == FLAG_FROM_DS) { /* Receiver address */
+              sta_addr_offset = 4;
+            } else if ((flags & FROM_TO_DS) == FLAG_TO_DS) { /* Transmitter address */
+              sta_addr_offset = ta_offset;
+            }
+            if (sta_addr_offset > 0) {
+              proto_tree_add_item(hdr_tree, hf_ieee80211_addr_staa, tvb, sta_addr_offset, 6, ENC_NA);
+              station_name = tvb_get_ether_name(tvb, sta_addr_offset);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_staa_resolved, tvb, sta_addr_offset, 6, station_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            }
+            proto_tree_add_item(hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+            proto_tree_add_item(hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+
+            /* add 3rd and 4th address for wlan.addr filter */
+            if (sa_offset != 4 && sa_offset != 10) {
+              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, sa_offset, 6, ENC_NA);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, sa_offset, 6, sa_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            }
+            if (da_offset != 4 && da_offset != 10 && da_offset != sa_offset) {
+              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, da_offset, 6, ENC_NA);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, da_offset, 6, da_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            }
+            if (bssid_offset != 4 && bssid_offset != 10 && bssid_offset != sa_offset && bssid_offset != da_offset) {
+              hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, bssid_offset, 6, ENC_NA);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+              hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_resolved, tvb, bssid_offset, 6, bssid_name);
+              PROTO_ITEM_SET_HIDDEN(hidden_item);
+            }
+            break;
+        }
+
+      }
+      break;
+      }
+    case EXTENSION_FRAME: {
+      switch (frame_type_subtype) {
+        case EXTENSION_DMG_BEACON: {
+          set_dst_addr_cols(pinfo, tvb, 4, "BSSID");
+          if (tree) {
+            proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
+            hidden_item = proto_tree_add_item(hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
+            PROTO_ITEM_SET_HIDDEN(hidden_item);
+          }
+          break;
+        }
+      }
+    }
+  }
+
+  len = tvb_captured_length_remaining(tvb, hdr_len);
+  reported_len = tvb_reported_length_remaining(tvb, hdr_len);
+
+  if (has_fcs)
+    {
+      /*
+       * Well, this packet should, in theory, have an FCS.
+       * Do we have the entire packet, and does it have enough data for
+       * the FCS?
+       */
+      if (reported_len < 4)
+      {
+        /*
+         * The packet is claimed not to even have enough data for a 4-byte
+         * FCS.
+         * Pretend it doesn't have an FCS.
+         */
+        ;
+      }
+      else if (len < reported_len)
+      {
+        /*
+         * The packet is claimed to have enough data for a 4-byte FCS, but
+         * we didn't capture all of the packet.
+         * Slice off the 4-byte FCS from the reported length, and trim the
+         * captured length so it's no more than the reported length; that
+         * will slice off what of the FCS, if any, is in the captured
+         * length.
+         */
+        reported_len -= 4;
+        if (len > reported_len)
+            len = reported_len;
+      }
+      else
+      {
+        /*
+         * We have the entire packet, and it includes a 4-byte FCS.
+         * Slice it off, and put it into the tree.
+         */
+        len          -= 4;
+        reported_len -= 4;
+        if (wlan_check_checksum)
+        {
+          guint32 sent_fcs = tvb_get_letohl(tvb, hdr_len + len);
+          guint32 fcs;
+
+          if (phdr->datapad)
+            fcs = crc32_802_tvb_padded(tvb, ohdr_len, hdr_len, len);
+          else
+            fcs = crc32_ccitt_tvb(tvb, hdr_len + len);
+          if (fcs != sent_fcs) {
+            flag_str[8] = '.';
+          }
+
+          proto_tree_add_checksum(hdr_tree, tvb, hdr_len + len, hf_ieee80211_fcs, hf_ieee80211_fcs_status, &ei_ieee80211_fcs, pinfo, fcs, ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_VERIFY);
+        } else {
+          proto_tree_add_checksum(hdr_tree, tvb, hdr_len + len, hf_ieee80211_fcs, hf_ieee80211_fcs_status, &ei_ieee80211_fcs, pinfo, 0, ENC_LITTLE_ENDIAN, PROTO_CHECKSUM_NO_FLAGS);
+        }
+      }
+    }
+  else
+    {
+      flag_str[8] = '\0';
+    }
+
+  proto_item_append_text(ti, ", Flags: %s", flag_str);
+  col_append_fstr(pinfo->cinfo, COL_INFO, ", Flags=%s", flag_str);
+
+
+  /*
+   * Only management and data frames have a body, so we don't have
+   * anything more to do for other types of frames.
+   */
+  switch (FCF_FRAME_TYPE (fcf))
+    {
+
+    case MGT_FRAME:
+      if (htc_len == 4) {
+        dissect_ht_control(hdr_tree, tvb, ohdr_len - 4);
+      }
+      break;
+
+    case DATA_FRAME:
+      if ((option_flags & IEEE80211_COMMON_OPT_NORMAL_QOS) && tree && DATA_FRAME_IS_QOS(frame_type_subtype))
+      {
+        proto_item *qos_fields, *qos_ti;
+        proto_tree *qos_tree;
+
+        guint16 qos_eosp;
+        guint16 qos_field_content;
+
+        qos_fields = proto_tree_add_item(hdr_tree, hf_ieee80211_qos, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+        qos_tree = proto_item_add_subtree(qos_fields, ett_qos_parameters);
+
+        qos_eosp = QOS_EOSP(qos_control);
+        qos_field_content = QOS_FIELD_CONTENT(qos_control);
+
+        proto_tree_add_item(qos_tree, hf_ieee80211_qos_tid, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+
+        qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_priority, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+        PROTO_ITEM_SET_GENERATED(qos_ti);
+
+        if (FLAGS_DS_STATUS(flags) == (FLAG_FROM_DS|FLAG_TO_DS)) {
+          /* mesh frame */
+          proto_tree_add_item(qos_tree, hf_ieee80211_qos_eosp, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+        } else {
+          if (flags & FLAG_TO_DS) {
+            proto_tree_add_item(qos_tree, hf_ieee80211_qos_bit4, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+          } else {
+            proto_tree_add_item(qos_tree, hf_ieee80211_qos_eosp, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+          }
+        }
+
+        proto_tree_add_item(qos_tree, hf_ieee80211_qos_ack_policy, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+
+        if (flags & FLAG_FROM_DS) {
+          if (!DATA_FRAME_IS_NULL(frame_type_subtype)) {
+            proto_tree_add_item(qos_tree, hf_ieee80211_qos_amsdu_present, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+            is_amsdu = QOS_AMSDU_PRESENT(qos_control);
+          }
+          if (DATA_FRAME_IS_CF_POLL(frame_type_subtype)) {
+            /* txop limit */
+              qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_txop_limit, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+            if (qos_field_content == 0) {
+              proto_item_append_text(qos_ti, " (transmit one frame immediately)");
+            }
+          } else {
+            /* qap ps buffer state */
+            proto_item *qos_ps_buf_state_fields;
+            proto_tree *qos_ps_buf_state_tree;
+
+            qos_ps_buf_state_fields = proto_tree_add_item(qos_tree, hf_ieee80211_qos_ps_buf_state, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+            qos_ps_buf_state_tree = proto_item_add_subtree(qos_ps_buf_state_fields, ett_qos_ps_buf_state);
+
+            proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_buf_state_indicated, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+
+            if (QOS_PS_BUF_STATE_INDICATED(qos_field_content)) {
+              proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_highest_pri_buf_ac, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+              qos_ti = proto_tree_add_item(qos_ps_buf_state_tree, hf_ieee80211_qos_qap_buf_load, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+              switch (QOS_PS_QAP_BUF_LOAD(qos_field_content)) {
+
+              case 0:
+                proto_item_append_text(qos_ti, " (no buffered traffic)");
+                break;
+
+              default:
+                proto_item_append_text(qos_ti, " (%d octets)", QOS_PS_QAP_BUF_LOAD(qos_field_content)*4096);
+                break;
+
+              case 15:
+                proto_item_append_text(qos_ti, " (greater than 57344 octets)");
+                break;
+              }
+
+            }
+          }
+        } else {
+          if (!DATA_FRAME_IS_NULL(frame_type_subtype)) {
+            proto_tree_add_item(qos_tree, hf_ieee80211_qos_amsdu_present, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+            is_amsdu = QOS_AMSDU_PRESENT(qos_control);
+          }
+          /*
+           * Only QoS Data, Qos CF-ACK and NULL frames To-DS have a Queue Size
+           * field.
+           */
+          if ((DATA_FRAME_IS_NULL(frame_type_subtype) ||
+               (frame_type_subtype & 0x7) == 0 ||
+               DATA_FRAME_IS_CF_ACK(frame_type_subtype))) {
+            if (qos_eosp) {
+              /* queue size */
+              qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_queue_size, tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+              switch (qos_field_content) {
+              case 0:
+                proto_item_append_text(qos_ti, " (no buffered traffic in the queue)");
+                break;
+
+              default:
+                proto_item_append_text(qos_ti, " (%u bytes)", qos_field_content*256);
+                break;
+
+              case 254:
+                proto_item_append_text(qos_ti, " (more than 64768 octets)");
+                break;
+
+              case 255:
+                proto_item_append_text(qos_ti, " (unspecified or unknown)");
+                break;
+              }
+            } else {
+              /* txop duration requested */
+              qos_ti = proto_tree_add_item(qos_tree, hf_ieee80211_qos_txop_dur_req,
+                                   tvb, qosoff, 2, ENC_LITTLE_ENDIAN);
+              if (qos_field_content == 0) {
+                proto_item_append_text(qos_ti, " (no TXOP requested)");
+              }
+            }
+          }
+        }
+
+        /* Do we have +HTC? */
+        if (htc_len == 4) {
+          dissect_ht_control(hdr_tree, tvb, ohdr_len - 4);
+        }
+
+        if (meshctl_len != 0) {
+          proto_item *msh_fields;
+          proto_tree *msh_tree;
+
+          msh_fields = proto_tree_add_item(hdr_tree, hf_ieee80211_mesh_control_field, tvb, meshoff, meshctl_len, ENC_NA);
+          msh_tree = proto_item_add_subtree(msh_fields, ett_msh_control);
+          add_ff_mesh_control(msh_tree, tvb, pinfo, meshoff);
+        }
+
+      } /* end of qos control field */
+      if (enable_decryption && !pinfo->fd->flags.visited) {
+        const guint8 *enc_data = tvb_get_ptr(tvb, 0, hdr_len+reported_len);
+        /* The processing will take care of 4-way handshake sessions for WPA and WPA2 decryption */
+        Dot11DecryptPacketProcess(&dot11decrypt_ctx, enc_data, hdr_len, hdr_len+reported_len, NULL, 0, NULL, TRUE);
+
+      }
+      /*
+       * No-data frames don't have a body.
+       */
+      if (DATA_FRAME_IS_NULL(frame_type_subtype))
+        goto end_of_wlan;
+
+      if (!wlan_subdissector) {
+        guint fnum = 0;
+
+        /* key: bssid:src
+         * data: last seq_control seen and frame number
+         */
+        retransmitted = FALSE;
+        if (!pinfo->fd->flags.visited) {
+          retransmit_key key;
+          retransmit_key *result;
+
+          memcpy(key.bssid, whdr->bssid.data, 6);
+          memcpy(key.src, whdr->src.data, 6);
+          key.seq_control = 0;
+          result = (retransmit_key *)g_hash_table_lookup(fc_analyse_retransmit_table, &key);
+          if (result && (result->seq_control == seq_control)) {
+            /* keep a pointer to the first seen frame, could be done with proto data? */
+            fnum = result->fnum;
+            g_hash_table_insert(fc_first_frame_table, GINT_TO_POINTER(pinfo->num),
+                                GINT_TO_POINTER(fnum));
+            retransmitted = TRUE;
+          } else {
+            /* first time or new seq*/
+            if (!result) {
+              result = wmem_new(wmem_file_scope(), retransmit_key);
+              *result = key;
+              g_hash_table_insert(fc_analyse_retransmit_table, result, result);
+            }
+            result->seq_control = seq_control;
+            result->fnum =  pinfo->num;
+          }
+        }
+        else if ((fnum = GPOINTER_TO_UINT(g_hash_table_lookup(fc_first_frame_table, GINT_TO_POINTER(pinfo->num))))) {
+          retransmitted = TRUE;
+        }
+
+        if (retransmitted) {
+          col_append_str(pinfo->cinfo, COL_INFO, " [retransmitted]");
+          if (tree) {
+            proto_item *item;
+
+            item=proto_tree_add_none_format(hdr_tree, hf_ieee80211_fc_analysis_retransmission, tvb, 0, 0,
+                                            "Retransmitted frame");
+            PROTO_ITEM_SET_GENERATED(item);
+            item=proto_tree_add_uint(hdr_tree, hf_ieee80211_fc_analysis_retransmission_frame, tvb, 0, 0, fnum);
+            PROTO_ITEM_SET_GENERATED(item);
+          }
+          next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len, len, reported_len);
+          call_data_dissector(next_tvb, pinfo, tree);
+          goto end_of_wlan;
+        }
+      }
+
+      break;
+
+    case CONTROL_FRAME:
+      goto end_of_wlan;
+
+    case EXTENSION_FRAME:
+      break;
+
+    default:
+      goto end_of_wlan;
+    }
+
+  if (IS_PROTECTED(FCF_FLAGS(fcf))
+      && !phdr->decrypted
+      && (wlan_ignore_prot != WLAN_IGNORE_PROT_WO_IV)) {
+    /*
+     * It's a WEP or WPA encrypted frame, and it hasn't already been
+     * decrypted; dissect the protections parameters and decrypt the data,
+     * if we have a matching key. Otherwise display it as data.
+     */
+    gboolean    can_decrypt = FALSE;
+    proto_tree *wep_tree    = NULL;
+    guint32     iv;
+    guint8      key, keybyte;
+
+#define PROTECTION_ALG_WEP  DOT11DECRYPT_KEY_TYPE_WEP
+#define PROTECTION_ALG_TKIP  DOT11DECRYPT_KEY_TYPE_TKIP
+#define PROTECTION_ALG_CCMP  DOT11DECRYPT_KEY_TYPE_CCMP
+#define PROTECTION_ALG_RSNA  PROTECTION_ALG_CCMP | PROTECTION_ALG_TKIP
+    guint8 algorithm=G_MAXUINT8;
+#define IS_TKIP(tvb, hdr_len)  (tvb_get_guint8(tvb, hdr_len + 1) == \
+  ((tvb_get_guint8(tvb, hdr_len) | 0x20) & 0x7f))
+#define IS_CCMP(tvb, hdr_len)  (tvb_get_guint8(tvb, hdr_len + 2) == 0)
+    guint32 sec_header=0;
+    guint32 sec_trailer=0;
+
+    next_tvb = try_decrypt(tvb, pinfo, hdr_len, reported_len, &algorithm, &sec_header, &sec_trailer, &used_key);
+
+    keybyte = tvb_get_guint8(tvb, hdr_len + 3);
+    key = KEY_OCTET_WEP_KEY(keybyte);
+    if ((keybyte & KEY_EXTIV) && (len >= EXTIV_LEN)) {
+      /* Extended IV; this frame is likely encrypted with TKIP or CCMP */
+      if (tree) {
+        if (algorithm==PROTECTION_ALG_TKIP)
+          wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+              ett_wep_parameters, NULL, "TKIP parameters");
+        else if (algorithm==PROTECTION_ALG_CCMP)
+          wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+            ett_wep_parameters, NULL, "CCMP parameters");
+        else {
+          if (IS_TKIP(tvb, hdr_len)) {
+            algorithm=PROTECTION_ALG_TKIP;
+            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+                ett_wep_parameters, NULL, "TKIP parameters");
+          } else if (IS_CCMP(tvb, hdr_len)) {
+            algorithm=PROTECTION_ALG_CCMP;
+            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+                ett_wep_parameters, NULL, "CCMP parameters");
+          } else
+            wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+                ett_wep_parameters, NULL, "TKIP/CCMP parameters");
+        }
+        proto_item_set_len(ti, hdr_len + 8);
+
+        if (algorithm==PROTECTION_ALG_TKIP) {
+          g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
+              tvb_get_letohl(tvb, hdr_len + 4),
+              tvb_get_guint8(tvb, hdr_len),
+              tvb_get_guint8(tvb, hdr_len + 2));
+          proto_tree_add_string(wep_tree, hf_ieee80211_tkip_extiv, tvb, hdr_len,
+              EXTIV_LEN, out_buff);
+        } else if (algorithm==PROTECTION_ALG_CCMP) {
+          g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
+              tvb_get_letohl(tvb, hdr_len + 4),
+              tvb_get_guint8(tvb, hdr_len + 1),
+              tvb_get_guint8(tvb, hdr_len));
+          proto_tree_add_string(wep_tree, hf_ieee80211_ccmp_extiv, tvb, hdr_len,
+              EXTIV_LEN, out_buff);
+        }
+
+        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_key, tvb, hdr_len + 3, 1, key);
+      }
+
+      /* Subtract out the length of the IV. */
+      len          -= EXTIV_LEN;
+      reported_len -= EXTIV_LEN;
+      ivlen         = EXTIV_LEN;
+      /* It is unknown whether this is TKIP or CCMP, so let's not even try to
+       * parse TKIP Michael MIC+ICV or CCMP MIC. */
+
+      /* checking for the trailer                            */
+      if (next_tvb!=NULL) {
+        if (reported_len < (gint) sec_trailer) {
+          /* There is no space for a trailer, ignore it and don't decrypt  */
+          ;
+        } else if (len < reported_len) {
+          /* There is space for a trailer, but we haven't capture all the  */
+          /* packet. Slice off the trailer, but don't try to decrypt      */
+          reported_len -= sec_trailer;
+          if (len > reported_len)
+            len = reported_len;
+        } else {
+          /* Ok, we have a trailer and the whole packet. Decrypt it!      */
+          /* TODO: At the moment we won't add the trailer to the tree,    */
+          /* so don't remove the trailer from the packet                  */
+          len          -= sec_trailer;
+          reported_len -= sec_trailer;
+          can_decrypt   = TRUE;
+
+          /* Add Key information to packet */
+          bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Ptk+32, DOT11DECRYPT_TK_LEN); /* TK is stored in PTK at offset 32 bytes and 16 bytes long */
+          out_buff[2*DOT11DECRYPT_TK_LEN] = '\0';
+
+          if (key == 0) { /* encrypted with pairwise key */
+            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_tk, tvb, 0, 0, out_buff);
+            PROTO_ITEM_SET_GENERATED(ti);
+
+            /* Also add the PMK used to to decrypt the packet. (PMK==PSK) */
+            bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Psk, DOT11DECRYPT_WPA_PSK_LEN); /* 32 bytes */
+            out_buff[2*DOT11DECRYPT_WPA_PSK_LEN] = '\0';
+            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_pmk, tvb, 0, 0, out_buff);
+            PROTO_ITEM_SET_GENERATED(ti);
+
+          } else { /* Encrypted with Group Key */
+            ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_gtk, tvb, 0, 0, out_buff); /* GTK is stored in PTK at offset 32 bytes and 16 bytes long */
+            PROTO_ITEM_SET_GENERATED(ti);
+          }
+        }
+      }
+    } else {
+      /* No Ext. IV - WEP packet */
+      /*
+       * XXX - pass the IV and key to "try_decrypt_wep()", and have it pass
+       * them to "wep_decrypt()", rather than having "wep_decrypt()" extract
+       * them itself.
+       *
+       * Also, just pass the data *following* the WEP parameters as the
+       * buffer to decrypt.
+       */
+      iv = tvb_get_ntoh24(tvb, hdr_len);
+      if (tree) {
+        wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 4,
+            ett_wep_parameters, NULL, "WEP parameters");
+
+        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_iv, tvb, hdr_len, 3, iv);
+        tvb_memcpy(tvb, iv_buff, hdr_len, 3);
+        is_iv_bad = weak_iv(iv_buff);
+        if (is_iv_bad != -1) {
+          proto_tree_add_boolean_format (wep_tree, hf_ieee80211_wep_iv_weak,
+              tvb, 0, 0, TRUE,
+              "Weak IV for key byte %d",
+              is_iv_bad);
+        }
+      }
+      if (tree)
+        proto_tree_add_uint(wep_tree, hf_ieee80211_wep_key, tvb, hdr_len + 3, 1, key);
+
+      /* Subtract out the length of the IV. */
+      len          -= 4;
+      reported_len -= 4;
+      ivlen         = 4;
+
+      /* Even if the decryption was not successful, set the algorithm */
+      algorithm=PROTECTION_ALG_WEP;
+
+      /*
+       * Well, this packet should, in theory, have an ICV.
+       * Do we have the entire packet, and does it have enough data for
+       * the ICV?
+       */
+      if (reported_len < 4) {
+        /*
+         * The packet is claimed not to even have enough data for a
+         * 4-byte ICV.
+         * Pretend it doesn't have an ICV.
+         */
+        ;
+      } else if (len < reported_len) {
+        /*
+         * The packet is claimed to have enough data for a 4-byte ICV,
+         * but we didn't capture all of the packet.
+         * Slice off the 4-byte ICV from the reported length, and trim
+         * the captured length so it's no more than the reported length;
+         * that will slice off what of the ICV, if any, is in the
+         * captured length.
+         */
+        reported_len -= 4;
+        if (len > reported_len)
+          len         = reported_len;
+      } else {
+        /*
+         * We have the entire packet, and it includes a 4-byte ICV.
+         * Slice it off, and put it into the tree.
+         *
+         * We only support decrypting if we have the the ICV.
+         *
+         * XXX - the ICV is encrypted; we're putting the encrypted
+         * value, not the decrypted value, into the tree.
+         */
+        len          -= 4;
+        reported_len -= 4;
+        can_decrypt   = TRUE;
+      }
+    }
+
+    if (algorithm == PROTECTION_ALG_WEP) {
+      g_strlcpy(wlan_stats.protection, "WEP", MAX_PROTECT_LEN);
+    } else if (algorithm == PROTECTION_ALG_TKIP) {
+      g_strlcpy(wlan_stats.protection, "TKIP", MAX_PROTECT_LEN);
+    } else if (algorithm == PROTECTION_ALG_CCMP) {
+      g_strlcpy(wlan_stats.protection, "CCMP", MAX_PROTECT_LEN);
+    } else {
+      g_strlcpy(wlan_stats.protection, "Unknown", MAX_PROTECT_LEN);
+    }
+
+    /* protection header                                  */
+    if (!can_decrypt || (next_tvb == NULL)) {
+      /*
+       * WEP decode impossible or failed, treat payload as raw data
+       * and don't attempt fragment reassembly or further dissection.
+       */
+      next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len + ivlen, len, reported_len);
+
+      if (tree) {
+        if (algorithm == PROTECTION_ALG_WEP) {
+          if (can_decrypt)
+            proto_tree_add_uint_format_value(wep_tree, hf_ieee80211_wep_icv, tvb,
+                hdr_len + ivlen + len, 4,
+                tvb_get_ntohl(tvb, hdr_len + ivlen + len),
+                "0x%08x (not verified)",
+                tvb_get_ntohl(tvb, hdr_len + ivlen + len));
+        } else if (algorithm == PROTECTION_ALG_CCMP) {
+        } else if (algorithm == PROTECTION_ALG_TKIP) {
+        }
+      }
+
+      if ((!(option_flags & IEEE80211_COMMON_OPT_IS_CENTRINO)) && (wlan_ignore_prot == WLAN_IGNORE_PROT_NO)) {
+        /* Some wireless drivers (such as Centrino) WEP payload already decrypted */
+        call_data_dissector(next_tvb, pinfo, tree);
+        goto end_of_wlan;
+      }
+    } else {
+      if (algorithm == PROTECTION_ALG_WEP) {
+        if (tree)
+          proto_tree_add_uint_format_value(wep_tree, hf_ieee80211_wep_icv, tvb,
+              hdr_len + ivlen + len, 4,
+              tvb_get_ntohl(tvb, hdr_len + ivlen + len),
+              "0x%08x (correct)",
+              tvb_get_ntohl(tvb, hdr_len + ivlen + len));
+
+        add_new_data_source(pinfo, next_tvb, "Decrypted WEP data");
+      } else if (algorithm==PROTECTION_ALG_CCMP) {
+        add_new_data_source(pinfo, next_tvb, "Decrypted CCMP data");
+      } else if (algorithm==PROTECTION_ALG_TKIP) {
+        add_new_data_source(pinfo, next_tvb, "Decrypted TKIP data");
+      }
+#undef IS_TKIP
+#undef IS_CCMP
+#undef PROTECTION_ALG_CCMP
+#undef PROTECTION_ALG_TKIP
+#undef PROTECTION_ALG_WEP
+    }
+
+    /*
+     * WEP decryption successful!
+     *
+     * Use the tvbuff we got back from the decryption; the data starts at
+     * the beginning.  The lengths are already correct for the decoded WEP
+     * payload.
+     */
+    hdr_len = 0;
+
+  } else {
+    /*
+     * Not a WEP-encrypted frame; just use the data from the tvbuff
+     * handed to us.
+     *
+     * The payload starts at "hdr_len" (i.e., just past the 802.11
+     * MAC header), the length of data in the tvbuff following the
+     * 802.11 header is "len", and the length of data in the packet
+     * following the 802.11 header is "reported_len".
+     */
+    next_tvb = tvb;
+  }
+
+  /*
+   * Do defragmentation if "wlan_defragment" is true, and we have more
+   * fragments or this isn't the first fragment.
+   *
+   * We have to do some special handling to catch frames that
+   * have the "More Fragments" indicator not set but that
+   * don't show up as reassembled and don't have any other
+   * fragments present.  Some networking interfaces appear
+   * to do reassembly even when you're capturing raw packets
+   * *and* show the reassembled packet without the "More
+   * Fragments" indicator set *but* with a non-zero fragment
+   * number.
+   *
+   * "fragment_add_seq_802_11()" handles that; we want to call it
+   * even if we have a short frame, so that it does those checks - if
+   * the frame is short, it doesn't do reassembly on it.
+   *
+   * (This could get some false positives if we really *did* only
+   * capture the last fragment of a fragmented packet, but that's
+   * life.)
+   */
+  save_fragmented = pinfo->fragmented;
+  if (wlan_defragment && (more_frags || (frag_number != 0))) {
+    fragment_head *fd_head;
+
+    /*
+     * If we've already seen this frame, look it up in the
+     * table of reassembled packets, otherwise add it to
+     * whatever reassembly is in progress, if any, and see
+     * if it's done.
+     */
+    if (reported_len < 0)
+      THROW(ReportedBoundsError);
+    fd_head = fragment_add_seq_802_11(&wlan_reassembly_table,
+        next_tvb, hdr_len, pinfo, seq_number, NULL,
+        frag_number,
+        reported_len,
+        more_frags);
+    next_tvb = process_reassembled_data(tvb, hdr_len, pinfo,
+        "Reassembled 802.11", fd_head,
+        &frag_items, NULL, hdr_tree);
+  } else {
+    /*
+     * If this is the first fragment, dissect its contents, otherwise
+     * just show it as a fragment.
+     */
+    if (frag_number != 0) {
+      /* Not the first fragment - don't dissect it. */
+      next_tvb = NULL;
+    } else {
+      /* First fragment, or not fragmented.  Dissect what we have here. */
+
+      /* Get a tvbuff for the payload. */
+      next_tvb = tvb_new_subset_length_caplen(next_tvb, hdr_len, len, reported_len);
+
+      /*
+       * If this is the first fragment, but not the only fragment,
+       * tell the next protocol that.
+       */
+      if (more_frags)
+        pinfo->fragmented = TRUE;
+      else
+        pinfo->fragmented = FALSE;
+    }
+  }
+
+  if (next_tvb == NULL) {
+    /* Just show this as an incomplete fragment. */
+    col_set_str(pinfo->cinfo, COL_INFO, "Fragmented IEEE 802.11 frame");
+    next_tvb = tvb_new_subset_length_caplen(tvb, hdr_len, len, reported_len);
+    call_data_dissector(next_tvb, pinfo, tree);
+    pinfo->fragmented = save_fragmented;
+    goto end_of_wlan;
+  }
+
+  switch (FCF_FRAME_TYPE (fcf))
+    {
+
+    case MGT_FRAME:
+      dissect_ieee80211_mgt(fcf, next_tvb, pinfo, tree);
+      break;
+
+    case DATA_FRAME:
+      if (is_amsdu && (tvb_reported_length_remaining(next_tvb, 0) > 4)) {
+        proto_item   *parent_item;
+        proto_tree   *mpdu_tree;
+        guint32       msdu_offset = 0;
+        guint         i           = 1;
+
+        parent_item = proto_tree_add_protocol_format(tree, proto_aggregate, next_tvb, 0,
+                                    tvb_reported_length_remaining(next_tvb, 0), "IEEE 802.11 Aggregate MSDU");
+        mpdu_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_parent_tree);
+
+        do {
+          tvbuff_t           *msdu_tvb;
+          guint16             msdu_length;
+          proto_tree         *subframe_tree;
+          const gchar *resolve_name;
+
+          /*
+           * IEEE Std 802.11-2012 says, in section 8.3.2.2 "A-MSDU format":
+           *
+           *  The A-MSDU subframe header contains three fields: DA, SA, and
+           *  Length. The order of these fields and the bits within these
+           *  fields are the same as the IEEE 802.3 frame format.
+           *
+           * which means that the length field is big-endian, not
+           * little-endian.
+           */
+          msdu_length = tvb_get_ntohs(next_tvb, msdu_offset+12);
+
+          parent_item = proto_tree_add_item(mpdu_tree, hf_ieee80211_amsdu_subframe, next_tvb,
+                            msdu_offset, roundup2(msdu_offset+14+msdu_length, 4), ENC_NA);
+          proto_item_append_text(parent_item, " #%u", i);
+          subframe_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_subframe_tree);
+          i += 1;
+
+          proto_tree_add_item(subframe_tree, hf_ieee80211_addr_da, next_tvb, msdu_offset, 6, ENC_NA);
+          resolve_name = tvb_get_ether_name(tvb, msdu_offset);
+          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, msdu_offset, 6,
+            resolve_name);
+          PROTO_ITEM_SET_HIDDEN(hidden_item);
+          proto_tree_add_item(subframe_tree, hf_ieee80211_addr_sa, next_tvb, msdu_offset+6, 6, ENC_NA);
+          resolve_name = tvb_get_ether_name(tvb, msdu_offset+6);
+          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, msdu_offset+6, 6,
+            resolve_name);
+          PROTO_ITEM_SET_HIDDEN(hidden_item);
+          proto_tree_add_item(subframe_tree, hf_ieee80211_amsdu_length, next_tvb, msdu_offset+12, 2, ENC_BIG_ENDIAN);
+
+          msdu_offset += 14;
+          msdu_tvb = tvb_new_subset_length(next_tvb, msdu_offset, msdu_length);
+          call_dissector(llc_handle, msdu_tvb, pinfo, subframe_tree);
+          msdu_offset = roundup2(msdu_offset+msdu_length, 4);
+        } while (tvb_reported_length_remaining(next_tvb, msdu_offset) > 14);
+
+        break;
+      }
+      /* I guess some bridges take Netware Ethernet_802_3 frames,
+         which are 802.3 frames (with a length field rather than
+         a type field, but with no 802.2 header in the payload),
+         and just stick the payload into an 802.11 frame.  I've seen
+         captures that show frames of that sort.
+
+         We also handle some odd form of encapsulation in which a
+         complete Ethernet frame is encapsulated within an 802.11
+         data frame, with no 802.2 header.  This has been seen
+         from some hardware.
+
+         On top of that, at least at some point it appeared that
+         the OLPC XO sent out frames with two bytes of 0 between
+         the "end" of the 802.11 header and the beginning of
+         the payload. Something similar has also been observed
+         with Atheros chipsets. There the sequence control field
+         seems repeated.
+
+         So, if the packet doesn't start with 0xaa 0xaa:
+
+           we first use the same scheme that linux-wlan-ng does to detect
+           those encapsulated Ethernet frames, namely looking to see whether
+           the frame either starts with 6 octets that match the destination
+           address from the 802.11 header or has 6 octets that match the
+           source address from the 802.11 header following the first 6 octets,
+           and, if so, treat it as an encapsulated Ethernet frame;
+
+           otherwise, we use the same scheme that we use in the Ethernet
+           dissector to recognize Netware 802.3 frames, namely checking
+           whether the packet starts with 0xff 0xff and, if so, treat it
+           as an encapsulated IPX frame, and then check whether the
+           packet starts with 0x00 0x00 and, if so, treat it as an OLPC
+           frame, or check the packet starts with the repetition of the
+           sequence control field and, if so, treat it as an Atheros frame. */
+      heur_dtbl_entry_t  *hdtbl_entry;
+      if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, &hdtbl_entry, NULL)) {
+        pinfo->fragmented = save_fragmented;
+        goto end_of_wlan; /* heuristics dissector handled it. */
+      }
+      encap_type = ENCAP_802_2;
+      if (tvb_bytes_exist(next_tvb, 0, 2)) {
+        octet1 = tvb_get_guint8(next_tvb, 0);
+        octet2 = tvb_get_guint8(next_tvb, 1);
+        if ((octet1 != 0xaa) || (octet2 != 0xaa)) {
+          if ((tvb_memeql(next_tvb, 6, (const guint8 *)pinfo->dl_src.data, 6) == 0) ||
+              (tvb_memeql(next_tvb, 0, (const guint8 *)pinfo->dl_dst.data, 6) == 0))
+            encap_type = ENCAP_ETHERNET;
+          else if ((octet1 == 0xff) && (octet2 == 0xff))
+            encap_type = ENCAP_IPX;
+          else if (((octet1 == 0x00) && (octet2 == 0x00)) ||
+                   (((octet2 << 8) | octet1) == seq_control)) {
+            proto_tree_add_item(tree, hf_ieee80211_mysterious_olpc_stuff, next_tvb, 0, 2, ENC_NA);
+            next_tvb = tvb_new_subset_remaining(next_tvb, 2);
+          }
+        }
+      }
+
+      switch (encap_type) {
+
+      case ENCAP_802_2:
+        call_dissector(llc_handle, next_tvb, pinfo, tree);
+        break;
+
+      case ENCAP_ETHERNET:
+        call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
+        break;
+
+      case ENCAP_IPX:
+        call_dissector(ipx_handle, next_tvb, pinfo, tree);
+        break;
+      }
+      break;
+
+    case EXTENSION_FRAME:
+    {
+      dissect_ieee80211_extension(fcf, next_tvb, pinfo, tree);
+      break;
+    }
+  }
+  pinfo->fragmented = save_fragmented;
+
+end_of_wlan:
+  whdr->stats = wlan_stats;
+  tap_queue_packet(wlan_tap, pinfo, whdr);
+  memset(&wlan_stats, 0, sizeof wlan_stats);
+
+  return tvb_captured_length(tvb);
+}
+
+/*
+ * Dissect 802.11 with a variable-length link-layer header and with the FCS
+ * presence or absence indicated by the pseudo-header, if there is one.
+ */
+static int
+dissect_ieee80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
+{
+  struct ieee_802_11_phdr *phdr = (struct ieee_802_11_phdr *)data;
+  struct ieee_802_11_phdr ourphdr;
+
+  if (phdr == NULL) {
+    /*
+     * Fake a pseudo-header.
+     * XXX - what are we supposed to do if the FCS length is unknown?
+     */
+    memset(&ourphdr, 0, sizeof(ourphdr));
+    ourphdr.fcs_len = -1;
+    ourphdr.decrypted = FALSE;
+    ourphdr.datapad = FALSE;
+    ourphdr.phy = PHDR_802_11_PHY_UNKNOWN;
+    phdr = &ourphdr;
+  }
+  return dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, phdr);
+}
+
+/*
+ * Dissect 802.11 with a variable-length link-layer header and with an
+ * FCS, but no pseudo-header.
+ */
+static int
+dissect_ieee80211_withfcs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  struct ieee_802_11_phdr phdr;
+
+  /* Construct a pseudo-header to hand to the common code. */
+  memset(&phdr, 0, sizeof(phdr));
+  phdr.fcs_len = 4;
+  phdr.decrypted = FALSE;
+  phdr.datapad = FALSE;
+  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
+  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
+  return tvb_captured_length(tvb);
+}
+
+/*
+ * Dissect 802.11 with a variable-length link-layer header and without an
+ * FCS, but no pseudo-header.
+ */
+static int
+dissect_ieee80211_withoutfcs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  struct ieee_802_11_phdr phdr;
+
+  /* Construct a pseudo-header to hand to the common code. */
+  memset(&phdr, 0, sizeof(phdr));
+  phdr.decrypted = FALSE;
+  phdr.datapad = FALSE;
+  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
+  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
+  return tvb_captured_length(tvb);
+}
+
+/*
+ * Dissect 802.11 from an Intel 2200BG adapter in a Centrino laptop
+ * running Windows XP.
+ *
+ * From
+ *
+ *   https://www.wireshark.org/lists/ethereal-dev/200407/msg00184.html
+ *
+ * and
+ *
+ *   https://www.wireshark.org/lists/ethereal-dev/200407/msg00393.html:
+ *
+ *  I tried capturing from a Centrino laptop with the Intel 2200BG 802.11g
+ *  chipset. I saw a lot of "Ethernet II" frames with 0x2452 as ethertype.
+ *
+ *    ...
+ *
+ *  This behaviour has been observed on Windows XP. In my opinion it is
+ *  a "proprietary" behaviour of either the Centrino driver or the Centrino
+ *  hardware. Currently I have no Linux distro installed on the machine to
+ *  verify whether it is also the case.
+ *
+ *  These packets are seen only in a promiscuous capture:
+ *    - Packets normally received by the Centrino computer have the normal
+ *      structure (no 802.11/LLC header but directly IP header).
+ *    - Packets that are supposed to be received by another computer have
+ *      the 802.11/LLC headers. ... Also I noticed that when WEP is enabled,
+ *      the 802.11 header has the flag "WEP" set to true, but the packet
+ *      is already decrypted. I added a test in the code to accomodate this.
+ *      For TKIP it seems to stay encrypted.
+ */
+static int
+dissect_ieee80211_centrino(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  struct ieee_802_11_phdr phdr;
+
+  /* Construct a pseudo-header to hand to the common code. */
+  memset(&phdr, 0, sizeof(phdr));
+  phdr.decrypted = FALSE;
+  phdr.datapad = FALSE;
+  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
+  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_IS_CENTRINO|IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
+  return tvb_captured_length(tvb);
+}
+
+/*
+ * Dissect 802.11 with a variable-length link-layer header and a byte-swapped
+ * control field and with no FCS (some hardware sends out LWAPP-encapsulated
+ * 802.11 packets with the control field byte swapped).
+ */
+static int
+dissect_ieee80211_bsfc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  struct ieee_802_11_phdr phdr;
+
+  /* Construct a pseudo-header to hand to the common code. */
+  memset(&phdr, 0, sizeof(phdr));
+  phdr.decrypted = FALSE;
+  phdr.datapad = FALSE;
+  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
+  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_BROKEN_FC|IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
+  return tvb_captured_length(tvb);
+}
+
+/*
+ * Dissect 802.11 with a variable-length link-layer header without qos elements
+ * in data+qos frames and with no FCS (sent as WIDS frames by Cisco standalone
+ * APs).
+ */
+static int
+dissect_ieee80211_noqos(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  struct ieee_802_11_phdr phdr;
+
+  /* Construct a pseudo-header to hand to the common code. */
+  memset(&phdr, 0, sizeof(phdr));
+  phdr.decrypted = FALSE;
+  phdr.datapad = FALSE;
+  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
+  dissect_ieee80211_common(tvb, pinfo, tree, 0, &phdr);
+  return tvb_captured_length(tvb);
+}
+
+
+/* ------------- */
+static guint
+retransmit_hash(gconstpointer k)
+{
+  const retransmit_key *key = (const retransmit_key *)k;
+  guint hash_val;
+  int   i;
+
+  hash_val = 0;
+  for (i = 0; i < 6; i++)
+    hash_val += key->bssid[i];
+
+  for (i = 0; i < 6; i++)
+    hash_val += key->src[i];
+
+  return hash_val;
+}
+
+static gint
+retransmit_equal(gconstpointer k1, gconstpointer k2)
+{
+  const retransmit_key *key1 = (const retransmit_key *)k1;
+  const retransmit_key *key2 = (const retransmit_key *)k2;
+
+  return ((!memcmp(key1->bssid, key2->bssid, 6) && !memcmp(key1->src, key2->src, 6)) ? TRUE:FALSE);
+}
+
+static guint
+frame_hash(gconstpointer k)
+{
+  guint32 frame = GPOINTER_TO_UINT(k);
+
+  return frame;
+}
+
+static gint
+frame_equal(gconstpointer k1, gconstpointer k2)
+{
+  guint32 frame1 = GPOINTER_TO_UINT(k1);
+  guint32 frame2 = GPOINTER_TO_UINT(k2);
+
+  return frame1==frame2;
+}
+
+/*
+ * EAPOL key description dissectors.
+ */
+#define KEY_INFO_KEYDES_VERSION_MASK        0x0007
+#define KEY_INFO_KEY_TYPE_MASK              0x0008
+#define KEY_INFO_KEY_INDEX_MASK             0x0030
+#define KEY_INFO_INSTALL_MASK               0x0040
+#define KEY_INFO_KEY_ACK_MASK               0x0080
+#define KEY_INFO_KEY_MIC_MASK               0x0100
+#define KEY_INFO_SECURE_MASK                0x0200
+#define KEY_INFO_ERROR_MASK                 0x0400
+#define KEY_INFO_REQUEST_MASK               0x0800
+#define KEY_INFO_ENCRYPTED_KEY_DATA_MASK    0x1000
+#define KEY_INFO_SMK_MESSAGE_MASK           0x2000
+
+#define KEYDES_VER_TYPE1        0x01
+#define KEYDES_VER_TYPE2        0x02
+#define KEYDES_VER_TYPE3        0x03
+
+static const value_string keydes_version_vals[] = {
+  { KEYDES_VER_TYPE1,     "RC4 Cipher, HMAC-MD5 MIC" },
+  { KEYDES_VER_TYPE2,     "AES Cipher, HMAC-SHA1 MIC" },
+  { KEYDES_VER_TYPE3,     "AES Cipher, AES-128-CMAC MIC" },
+  { 0, NULL }
+};
+
+static int proto_wlan_rsna_eapol = -1;
+
+static int hf_wlan_rsna_eapol_wpa_keydes_msgnr = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_keydes_version = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_type = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_index = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_install = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_ack = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_mic = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_secure = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_error = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_request = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_encrypted_key_data = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_smk_message = -1;
+static int hf_wlan_rsna_eapol_keydes_key_len = -1;
+static int hf_wlan_rsna_eapol_keydes_replay_counter = -1;
+static int hf_wlan_rsna_eapol_keydes_key_iv = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_nonce = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_rsc = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_id = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_mic = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_data_len = -1;
+static int hf_wlan_rsna_eapol_wpa_keydes_data = -1;
+
+static gint ett_keyinfo = -1;
+static gint ett_wlan_rsna_eapol_keydes_data = -1;
+
+static const true_false_string keyinfo_key_type_tfs = { "Pairwise Key", "Group Key" };
+
+static int
+dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+  int         offset = 0;
+  guint16     keyinfo;
+  guint16     eapol_data_len;
+  proto_tree *keydes_tree;
+  proto_tree *ti = NULL;
+  static const int * wlan_rsna_eapol_wpa_keydes_keyinfo[] = {
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_keydes_version,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_type,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_index,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_install,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_ack,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_mic,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_secure,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_error,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_request,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_encrypted_key_data,
+    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_smk_message,
+    NULL
+  };
+  guint16 eapol_data_offset = 76;  /* 92 - 16 */
+  guint16 eapol_key_mic_len = 0;
+
+  if (wlan_key_mic_len) {
+    eapol_data_offset += wlan_key_mic_len;
+    eapol_key_mic_len = wlan_key_mic_len;
+  } else {
+    eapol_data_offset = 92;
+    eapol_key_mic_len = 16;
+  }
+
+  /*
+   * RSNA key descriptors.
+   */
+  eapol_data_len = tvb_get_ntohs(tvb, offset+eapol_data_offset);
+  keyinfo = tvb_get_ntohs(tvb, offset);
+  if (keyinfo & KEY_INFO_REQUEST_MASK) {
+    col_set_str(pinfo->cinfo, COL_INFO, "Key (Request)");
+    if (keyinfo & KEY_INFO_ERROR_MASK)
+      col_set_str(pinfo->cinfo, COL_INFO, "Key (Request, Error)");
+  } else if (keyinfo & KEY_INFO_KEY_TYPE_MASK) {
+    guint16 masked;
+    /* Windows is setting the Secure Bit on message 2 when rekeying, so we'll ignore it */
+    masked = keyinfo &
+      (KEY_INFO_INSTALL_MASK | KEY_INFO_KEY_ACK_MASK | KEY_INFO_KEY_MIC_MASK);
+
+    switch (masked) {
+    case KEY_INFO_KEY_ACK_MASK:
+    {
+      ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 1);
+
+      col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 1 of 4)");
+      break;
+    }
+    case KEY_INFO_KEY_MIC_MASK:
+      /* We check the key length to differentiate between message 2 and 4 and just hope that
+      there are no strange implementations with key data and non-zero key length in message 4.
+      According to the IEEE specification, sections 11.6.6.3 and 11.6.6.5 we should
+      use the Secure Bit and/or the Nonce, but there are implementations ignoring the spec.
+      The Secure Bit is incorrectly set on rekeys for Windows clients for Message 2 and the Nonce is non-zero
+      in Message 4 in Bug 11994 (Apple?) */
+      if (eapol_data_len) {
+        ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 2);
+
+        col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 2 of 4)");
+      } else {
+        ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 4);
+
+        col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 4 of 4)");
+      }
+      break;
+
+    case (KEY_INFO_INSTALL_MASK | KEY_INFO_KEY_ACK_MASK | KEY_INFO_KEY_MIC_MASK):
+    {
+      ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 3);
+
+      col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 3 of 4)");
+      break;
+    }
+    }
+  } else {
+    if (keyinfo & KEY_INFO_KEY_ACK_MASK) {
+      ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 1);
+
+      col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 1 of 2)");
+    } else {
+      ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 2);
+
+      col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 2 of 2)");
+    }
+  }
+
+  PROTO_ITEM_SET_GENERATED(ti);
+
+  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_wlan_rsna_eapol_wpa_keydes_keyinfo,
+                                    ett_keyinfo, wlan_rsna_eapol_wpa_keydes_keyinfo,
+                                    ENC_BIG_ENDIAN, BMT_NO_APPEND);
+  offset += 2;
+
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_key_len, tvb, offset,
+                      2, ENC_BIG_ENDIAN);
+  offset += 2;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_replay_counter, tvb,
+                      offset, 8, ENC_BIG_ENDIAN);
+  offset += 8;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_nonce, tvb, offset,
+                      32, ENC_NA);
+  offset += 32;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_key_iv, tvb,
+                      offset, 16, ENC_NA);
+  offset += 16;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_rsc, tvb, offset,
+                      8, ENC_NA);
+  offset += 8;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_id, tvb, offset, 8,
+                      ENC_NA);
+  offset += 8;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_mic, tvb, offset,
+                      eapol_key_mic_len, ENC_NA);
+  offset += eapol_key_mic_len;
+  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_data_len, tvb,
+                      offset, 2, ENC_BIG_ENDIAN);
+  offset += 2;
+  if (eapol_data_len != 0) {
+    ti = proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_data,
+                             tvb, offset, eapol_data_len, ENC_NA);
+    if ((keyinfo & KEY_INFO_ENCRYPTED_KEY_DATA_MASK) ||
+        !(keyinfo & KEY_INFO_KEY_TYPE_MASK)) {
+      /* RSN: EAPOL-Key Key Data is encrypted.
+       * WPA: Group Keys use encrypted Key Data.
+       * Cannot parse this without knowing the key.
+       * IEEE 802.11i-2004 8.5.2.
+       */
+    } else {
+      keydes_tree = proto_item_add_subtree(ti, ett_wlan_rsna_eapol_keydes_data);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, keydes_tree,
+                                       tvb_reported_length_remaining(tvb, offset),
+                                       -1, NULL);
+    }
+  }
+  return tvb_captured_length(tvb);
+}
+
+/* It returns the algorithm used for decryption and the header and trailer lengths. */
+static tvbuff_t *
+try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PDOT11DECRYPT_KEY_ITEM used_key)
+{
+  const guint8      *enc_data;
+  tvbuff_t          *decr_tvb = NULL;
+  guint32            dec_caplen;
+  guchar             dec_data[DOT11DECRYPT_MAX_CAPLEN];
+
+  if (!enable_decryption)
+    return NULL;
+
+  /* get the entire packet                                  */
+  enc_data = tvb_get_ptr(tvb, 0, len+offset);
+
+  /*  process packet with Dot11Decrypt                              */
+  if (Dot11DecryptPacketProcess(&dot11decrypt_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen,
+                            used_key, FALSE)==DOT11DECRYPT_RET_SUCCESS)
+  {
+    guint8 *tmp;
+    *algorithm=used_key->KeyType;
+    switch (*algorithm) {
+      case DOT11DECRYPT_KEY_TYPE_WEP:
+        *sec_header=DOT11DECRYPT_WEP_HEADER;
+        *sec_trailer=DOT11DECRYPT_WEP_TRAILER;
+        break;
+      case DOT11DECRYPT_KEY_TYPE_CCMP:
+        *sec_header=DOT11DECRYPT_RSNA_HEADER;
+        *sec_trailer=DOT11DECRYPT_CCMP_TRAILER;
+        break;
+      case DOT11DECRYPT_KEY_TYPE_TKIP:
+        *sec_header=DOT11DECRYPT_RSNA_HEADER;
+        *sec_trailer=DOT11DECRYPT_TKIP_TRAILER;
+        break;
+      default:
+        return NULL;
+    }
+
+    /* allocate buffer for decrypted payload                      */
+    tmp = (guint8 *)wmem_memdup(pinfo->pool, dec_data+offset, dec_caplen-offset);
+
+    len = dec_caplen-offset;
+
+    /* decrypt successful, let's set up a new data tvb.              */
+    decr_tvb = tvb_new_child_real_data(tvb, tmp, len, len);
+  }
+
+  return decr_tvb;
+}
+
+/* Collect our WEP and WPA keys */
+static void
+set_dot11decrypt_keys(void)
+{
+  guint                     i;
+  DOT11DECRYPT_KEYS_COLLECTION  *keys = g_new(DOT11DECRYPT_KEYS_COLLECTION, 1);
+  GByteArray                *bytes = NULL;
+
+  keys->nKeys = 0;
+
+  for (i = 0; (uat_wep_key_records != NULL) && (i < num_wepkeys_uat) && (i < MAX_ENCRYPTION_KEYS); i++)
+  {
+    decryption_key_t *dk;
+    dk = parse_key_string(uat_wep_key_records[i].string, uat_wep_key_records[i].key);
+
+    if (dk != NULL)
+    {
+      DOT11DECRYPT_KEY_ITEM          key;
+      if (dk->type == DOT11DECRYPT_KEY_TYPE_WEP)
+      {
+        gboolean res;
+        key.KeyType = DOT11DECRYPT_KEY_TYPE_WEP;
+
+        bytes = g_byte_array_new();
+        res = hex_str_to_bytes(dk->key->str, bytes, FALSE);
+
+        if (dk->key->str && res && (bytes->len > 0) && (bytes->len <= DOT11DECRYPT_WEP_KEY_MAXLEN))
+        {
+          /*
+           * WEP key is correct (well, the can be even or odd, so it is not
+           * a real check, I think... is a check performed somewhere in the
+           * Dot11Decrypt function???)
+           */
+          memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len);
+          key.KeyData.Wep.WepKeyLen = bytes->len;
+          keys->Keys[keys->nKeys] = key;
+          keys->nKeys += 1;
+        }
+      }
+      else if (dk->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
+      {
+        key.KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PWD;
+
+        /* XXX - This just lops the end if the key off if it's too long.
+         *       Should we handle this more gracefully? */
+        g_strlcpy(key.UserPwd.Passphrase, dk->key->str, DOT11DECRYPT_WPA_PASSPHRASE_MAX_LEN+1);
+
+        key.UserPwd.SsidLen = 0;
+        if ((dk->ssid != NULL) && (dk->ssid->len <= DOT11DECRYPT_WPA_SSID_MAX_LEN))
+        {
+          memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len);
+          key.UserPwd.SsidLen = dk->ssid->len;
+        }
+
+        keys->Keys[keys->nKeys] = key;
+        keys->nKeys += 1;
+      }
+      else if (dk->type == DOT11DECRYPT_KEY_TYPE_WPA_PSK)
+      {
+        key.KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PSK;
+
+        bytes = g_byte_array_new();
+        hex_str_to_bytes(dk->key->str, bytes, FALSE);
+
+        /* XXX - Pass the correct array of bytes... */
+        if (bytes->len <= DOT11DECRYPT_WPA_PSK_LEN) {
+          memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len);
+
+          keys->Keys[keys->nKeys] = key;
+          keys->nKeys += 1;
+        }
+      }
+      free_key_string(dk);
+      if (bytes) {
+        g_byte_array_free(bytes, TRUE);
+        bytes = NULL;
+      }
+    }
+  }
+
+  /* Now set the keys */
+  Dot11DecryptSetKeys(&dot11decrypt_ctx, keys->Keys, keys->nKeys);
+  g_free(keys);
+}
+
+static void
+init_wepkeys(void)
+{
+
+  /*
+   * XXX - Dot11Decrypt - That God sends it to us beautiful (che dio ce la mandi bona)
+   * The next lines will add a key to the Dot11Decrypt context. The keystring will be added
+   * to the old WEP array too, but we don't care, because the packets will come here
+   * already decrypted... One of these days we will fix this too
+   */
+  set_dot11decrypt_keys();
+}
+
+/*
+ * This code had been taken from AirSnort crack.c function classify()
+ * Permission granted by snax <at> shmoo dot com
+ * weak_iv - determine which key byte an iv is useful in resolving
+ * parm     - p, pointer to the first byte of an IV
+ * return   -  n - this IV is weak for byte n of a WEP key
+ *            -1 - this IV is not weak for any key bytes
+ *
+ * This function tests for IVs that are known to satisfy the criteria
+ * for a weak IV as specified in FMS section 7.1
+ *
+ */
+static int
+weak_iv(guchar *iv)
+{
+  guchar sum, k;
+
+  if ((iv[1] == 255) && (iv[0] > 2) && (iv[0] < 16)) {
+    return iv[0] -3;
+  }
+
+  sum = iv[0] + iv[1];
+  if (sum == 1) {
+    if (iv[2] <= 0x0a) {
+      return iv[2] +2;
+    }
+    else if (iv[2] == 0xff) {
+      return 0;
+    }
+  }
+  k = 0xfe - iv[2];
+  if ((sum == k)  && ((iv[2] >= 0xf2) && (iv[2] <= 0xfe) && (iv[2] != 0xfd))) {
+    return k;
+  }
+  return -1;
+}
+
+static void
+wlan_retransmit_init(void)
+{
+  if (fc_analyse_retransmit_table) {
+    g_hash_table_destroy(fc_analyse_retransmit_table);
+    fc_analyse_retransmit_table = NULL;
+  }
+
+  if (fc_first_frame_table) {
+    g_hash_table_destroy(fc_first_frame_table);
+    fc_first_frame_table = NULL;
+  }
+
+  if (wlan_subdissector)
+    return;
+
+  fc_analyse_retransmit_table= g_hash_table_new(retransmit_hash, retransmit_equal);
+  fc_first_frame_table = g_hash_table_new(frame_hash, frame_equal);
+
+}
+
+static int
+dissect_data_encap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
+{
+  int         offset = 0;
+  guint8      type;
+  int         tagged_parameter_tree_len;
+  proto_tree *tagged_tree;
+
+  type = tvb_get_guint8(tvb, offset);
+  proto_tree_add_item(tree, hf_ieee80211_data_encap_payload_type, tvb, offset,
+                      1, ENC_LITTLE_ENDIAN);
+  offset += 1;
+  switch (type) {
+  case 1:
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "RRB");
+    /* TODO: IEEE 802.11r */
+    break;
+  case 2:
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "TDLS");
+    col_clear(pinfo->cinfo, COL_INFO);
+    offset += add_ff_action(tree, tvb, pinfo, offset);
+    tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+    if (tagged_parameter_tree_len > 0) {
+      tagged_tree = get_tagged_parameter_tree(tree, tvb, offset,
+                                              tagged_parameter_tree_len);
+      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
+                                       tagged_parameter_tree_len, -1, NULL);
+    }
+    break;
+  }
+  return tvb_captured_length(tvb);
+}
+
+void
+proto_register_ieee80211(void)
+{
+
+  static hf_register_info hf[] = {
+    {&hf_ieee80211_fc_field,
+     {"Frame Control Field", "wlan.fc",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "MAC Frame control", HFILL }},
+
+    {&hf_ieee80211_fc_proto_version,
+     {"Version", "wlan.fc.version",
+      FT_UINT8, BASE_DEC, NULL, 0x03,
+      "MAC Protocol version", HFILL }},  /* 0 */
+
+    {&hf_ieee80211_fc_frame_type,
+     {"Type", "wlan.fc.type",
+      FT_UINT8, BASE_DEC, VALS(frame_type), 0x0C,
+      "Frame type", HFILL }},
+
+    {&hf_ieee80211_fc_frame_subtype,
+     {"Subtype", "wlan.fc.subtype",
+      FT_UINT8, BASE_DEC, NULL, 0xF0,
+      "Frame subtype", HFILL }},  /* 2 */
+
+    {&hf_ieee80211_fc_frame_type_subtype,
+     {"Type/Subtype", "wlan.fc.type_subtype",
+      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &frame_type_subtype_vals_ext, 0x0,
+      "Type and subtype combined (first byte: type, second byte: subtype)", HFILL }},
+
+    {&hf_ieee80211_fc_frame_extension,
+     {"Control Frame Extension", "wlan.fc.extension",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_flags,
+     {"Flags", "wlan.flags",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_data_ds,
+     {"DS status", "wlan.fc.ds",
+      FT_UINT8, BASE_HEX, VALS(tofrom_ds), (FLAG_FROM_DS|FLAG_TO_DS),
+      "Data-frame DS-traversal status", HFILL }},  /* 3 */
+
+    {&hf_ieee80211_fc_to_ds,
+     {"To DS", "wlan.fc.tods",
+      FT_BOOLEAN, 8, TFS(&tods_flag), FLAG_TO_DS,
+      "To DS flag", HFILL }},    /* 4 */
+
+    {&hf_ieee80211_fc_from_ds,
+     {"From DS", "wlan.fc.fromds",
+      FT_BOOLEAN, 8, TFS(&fromds_flag), FLAG_FROM_DS,
+      "From DS flag", HFILL }},    /* 5 */
+
+    {&hf_ieee80211_fc_more_frag,
+     {"More Fragments", "wlan.fc.frag",
+      FT_BOOLEAN, 8, TFS(&more_fragments), FLAG_MORE_FRAGMENTS,
+      "More Fragments flag", HFILL }},  /* 6 */
+
+    {&hf_ieee80211_fc_retry,
+     {"Retry", "wlan.fc.retry",
+      FT_BOOLEAN, 8, TFS(&retry_flags), FLAG_RETRY,
+      "Retransmission flag", HFILL }},
+
+    {&hf_ieee80211_fc_analysis_retransmission,
+     {"Retransmission", "wlan.analysis.retransmission",
+      FT_NONE, BASE_NONE, NULL, 0x0,
+      "This frame is a suspected wireless retransmission", HFILL }},
+
+    {&hf_ieee80211_fc_analysis_retransmission_frame,
+     {"Retransmission of frame", "wlan.analysis.retransmission_frame",
+      FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+      "This is a retransmission of frame #", HFILL }},
+
+    {&hf_ieee80211_fc_pwr_mgt,
+     {"PWR MGT", "wlan.fc.pwrmgt",
+      FT_BOOLEAN, 8, TFS(&pm_flags), FLAG_POWER_MGT,
+      "Power management status", HFILL }},
+
+    {&hf_ieee80211_fc_more_data,
+     {"More Data", "wlan.fc.moredata",
+      FT_BOOLEAN, 8, TFS(&md_flags), FLAG_MORE_DATA,
+      "More data flag", HFILL }},
+
+    {&hf_ieee80211_fc_protected,
+     {"Protected flag", "wlan.fc.protected",
+      FT_BOOLEAN, 8, TFS(&protected_flags), FLAG_PROTECTED,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_order,
+     {"Order flag", "wlan.fc.order",
+      FT_BOOLEAN, 8, TFS(&order_flags), FLAG_ORDER,
+      "Strictly ordered flag", HFILL }},
+
+    {&hf_ieee80211_assoc_id,
+     {"Association ID", "wlan.aid",
+      FT_UINT16, BASE_DEC, NULL, 0x3FFF,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_did_duration,
+     {"Duration", "wlan.duration",
+      FT_UINT16, BASE_DEC, NULL, 0x7FFF,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_addr_da,
+     {"Destination address", "wlan.da",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Destination Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_da_resolved,
+      {"Destination address (resolved)", "wlan.da_resolved", FT_STRING,
+        BASE_NONE, NULL, 0x0,
+        "Destination Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr_sa,
+     {"Source address", "wlan.sa",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Source Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_sa_resolved,
+      {"Source address (resolved)", "wlan.sa_resolved", FT_STRING,
+       BASE_NONE, NULL, 0x0,
+       "Source Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr,
+      {"Hardware address", "wlan.addr",
+       FT_ETHER, BASE_NONE, NULL, 0,
+       "SA, DA, BSSID, RA or TA Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_resolved,
+      { "Hardware address (resolved)", "wlan.addr_resolved", FT_STRING,
+        BASE_NONE, NULL, 0x0,
+        "SA, DA, BSSID, RA or TA Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr_ra,
+     {"Receiver address", "wlan.ra",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Receiving Station Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_ra_resolved,
+      {"Receiver address (resolved)", "wlan.ra_resolved", FT_STRING, BASE_NONE,
+        NULL, 0x0, "Receiving Station Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr_ta,
+     {"Transmitter address", "wlan.ta",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Transmitting Station Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_ta_resolved,
+      {"Transmitter address (resolved)", "wlan.ta_resolved", FT_STRING,
+        BASE_NONE, NULL, 0x0,
+        "Transmitting Station Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr_bssid,
+     {"BSS Id", "wlan.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Basic Service Set ID", HFILL }},
+
+    {&hf_ieee80211_addr_bssid_resolved,
+      {"BSS Id (resolved)", "wlan.bssid_resolved", FT_STRING, BASE_NONE, NULL,
+        0x0, "Basic Service Set ID (resolved)", HFILL }},
+
+    {&hf_ieee80211_addr_staa,
+     {"STA address", "wlan.staa",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Station Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_staa_resolved,
+      {"STA address (resolved)", "wlan.staa_resolved", FT_STRING, BASE_NONE, NULL,
+        0x0, "Station Hardware Address (resolved)", HFILL }},
+
+    {&hf_ieee80211_frag_number,
+     {"Fragment number", "wlan.frag",
+      FT_UINT16, BASE_DEC, NULL, 0x000F,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_seq_number,
+     {"Sequence number", "wlan.seq",
+      FT_UINT16, BASE_DEC, NULL, 0xFFF0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_mesh_control_field,
+     {"Mesh Control Field", "wlan.mesh.control_field",
+      FT_NONE, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos,
+     {"Qos Control", "wlan.qos",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_tid,
+     {"TID", "wlan.qos.tid",
+      FT_UINT16, BASE_DEC, NULL, 0x000F,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_priority,
+     {"Priority", "wlan.qos.priority",
+      FT_UINT16, BASE_DEC, VALS(ieee80211_qos_tags_acs), 0x0007,
+      "802.1D Tag", HFILL }},
+
+    {&hf_ieee80211_qos_eosp,
+     {"EOSP", "wlan.qos.eosp",
+      FT_BOOLEAN, 16, TFS(&eosp_flag), QOS_FLAG_EOSP,
+      "EOSP Field", HFILL }},
+
+    {&hf_ieee80211_qos_bit4,
+     {"QoS bit 4", "wlan.qos.bit4",
+      FT_BOOLEAN, 16, TFS(&bit4_flag), QOS_FLAG_EOSP,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_ack_policy,
+     {"Ack Policy", "wlan.qos.ack",
+      FT_UINT16, BASE_HEX,  VALS(ack_policy), 0x0060,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_amsdu_present,
+     {"Payload Type", "wlan.qos.amsdupresent",
+      FT_BOOLEAN, 16, TFS(&ieee80211_qos_amsdu_present_flag), 0x0080,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_txop_limit,
+     {"TXOP Limit", "wlan.qos.txop_limit",
+      FT_UINT16, BASE_DEC, NULL, 0xFF00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_ps_buf_state,
+     {"QAP PS Buffer State", "wlan.qos.ps_buf_state",
+      FT_UINT16, BASE_HEX, NULL, 0xFF00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_buf_state_indicated,
+     {"Buffer State Indicated", "wlan.qos.buf_state_indicated",
+      FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_highest_pri_buf_ac,
+     {"Highest-Priority Buffered AC", "wlan.qos.highest_pri_buf_ac",
+       FT_UINT16, BASE_DEC, VALS(wme_acs), 0x0C00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_qap_buf_load,
+     {"QAP Buffered Load", "wlan.qos.qap_buf_load",
+      FT_UINT16, BASE_DEC, NULL, 0xF000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_txop_dur_req,
+     {"TXOP Duration Requested", "wlan.qos.txop_dur_req",
+      FT_UINT16, BASE_DEC, NULL, 0xFF00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_qos_queue_size,
+     {"Queue Size", "wlan.qos.queue_size",
+      FT_UINT16, BASE_DEC, NULL, 0xFF00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fcs,
+     {"Frame check sequence", "wlan.fcs",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      "Frame Check Sequence (FCS)", HFILL }},
+
+    {&hf_ieee80211_fcs_status,
+     {"FCS Status", "wlan.fcs.status",
+      FT_UINT8, BASE_NONE, VALS(proto_checksum_vals), 0x0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fragment_overlap,
+      {"Fragment overlap", "wlan.fragment.overlap",
+       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+       "Fragment overlaps with other fragments", HFILL }},
+
+    {&hf_ieee80211_fragment_overlap_conflict,
+      {"Conflicting data in fragment overlap", "wlan.fragment.overlap.conflict",
+       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+       "Overlapping fragments contained conflicting data", HFILL }},
+
+    {&hf_ieee80211_fragment_multiple_tails,
+      {"Multiple tail fragments found", "wlan.fragment.multipletails",
+       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+       "Several tails were found when defragmenting the packet", HFILL }},
+
+    {&hf_ieee80211_fragment_too_long_fragment,
+      {"Fragment too long", "wlan.fragment.toolongfragment",
+       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+       "Fragment contained data past end of packet", HFILL }},
+
+    {&hf_ieee80211_fragment_error,
+      {"Defragmentation error", "wlan.fragment.error",
+       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+       "Defragmentation error due to illegal fragments", HFILL }},
+
+    {&hf_ieee80211_fragment_count,
+      {"Fragment count", "wlan.fragment.count",
+       FT_UINT32, BASE_DEC, NULL, 0x0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_fragment,
+      {"802.11 Fragment", "wlan.fragment",
+       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_fragments,
+      {"802.11 Fragments", "wlan.fragments",
+       FT_NONE, BASE_NONE, NULL, 0x0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_reassembled_in,
+      {"Reassembled 802.11 in frame", "wlan.reassembled_in",
+       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+       "This 802.11 packet is reassembled in this frame", HFILL }},
+
+    {&hf_ieee80211_reassembled_length,
+      {"Reassembled 802.11 length", "wlan.reassembled.length",
+       FT_UINT32, BASE_DEC, NULL, 0x0,
+       "The total length of the reassembled payload", HFILL }},
+
+    {&hf_ieee80211_wep_iv,
+     {"Initialization Vector", "wlan.wep.iv",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_wep_iv_weak,
+     {"Weak IV", "wlan.wep.weakiv",
+      FT_BOOLEAN, BASE_NONE, NULL, 0x0,
+       NULL, HFILL}},
+
+    {&hf_ieee80211_tkip_extiv,
+     {"TKIP Ext. Initialization Vector", "wlan.tkip.extiv",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "TKIP Extended Initialization Vector", HFILL }},
+
+    {&hf_ieee80211_ccmp_extiv,
+     {"CCMP Ext. Initialization Vector", "wlan.ccmp.extiv",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "CCMP Extended Initialization Vector", HFILL }},
+
+    {&hf_ieee80211_wep_key,
+     {"Key Index", "wlan.wep.key",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_wep_icv,
+     {"WEP ICV", "wlan.wep.icv",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_analysis_pmk,
+     {"PMK", "wlan.analysis.pmk",
+      FT_STRING, BASE_NONE, NULL, 0x0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_analysis_tk,
+     {"TK", "wlan.analysis.tk",
+      FT_STRING, BASE_NONE, NULL, 0x0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_fc_analysis_gtk,
+     {"GTK", "wlan.analysis.gtk",
+      FT_STRING, BASE_NONE, NULL, 0x0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_control,
+     {"Block Ack Control", "wlan.ba.control",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_control_ack_policy,
+     {"BA Ack Policy", "wlan.ba.control.ackpolicy",
+      FT_BOOLEAN, 16, TFS(&ieee80211_block_ack_control_ack_policy_flag), 0x01,
+      "Block Ack Request (BAR) Ack Policy", HFILL }},
+
+    {&hf_ieee80211_block_ack_control_type,
+     {"BA Type", "wlan.ba.control.ba_type",
+      FT_UINT16, BASE_HEX, VALS(block_ack_type_vals), 0x001e, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_control_reserved,
+     {"Reserved", "wlan.ba.control.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0x0fe0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_control_tid_info,
+     {"TID for which a Basic BlockAck frame is requested", "wlan.ba.basic.tidinfo",
+      FT_UINT16, BASE_HEX, NULL, 0xf000,
+      "Traffic Identifier (TID) for which a Basic BlockAck frame is requested", HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_aid11,
+     {"AID11", "wlan.ba.multi_sta.aid11",
+      FT_UINT16, BASE_HEX, NULL, 0x07ff, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_ack_type,
+     {"Ack Type", "wlan.ba.multi_sta.ack_type",
+      FT_UINT16, BASE_HEX, NULL, 0x0800, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_tid,
+     {"TID", "wlan.ba.multi_sta.tid",
+      FT_UINT16, BASE_HEX, NULL, 0xf000, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_aid_tid,
+     {"AID TID Info", "wlan.ba.multi_sta.aid_tid_info",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_reserved,
+     {"Reserved", "wlan.ba.multi_sta.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_sta_ra,
+     {"RA", "wlan.ba.multi_sta.ra",
+      FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_tid_reserved,
+     {"Reserved", "wlan.bar.mtid.tidinfo.reserved",
+      FT_UINT16, BASE_HEX, 0, 0x0fff,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_multi_tid_value,
+     {"Multi-TID Value", "wlan.bar.mtid.tidinfo.value",
+      FT_UINT16, BASE_HEX, 0, 0xf000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_bitmap,
+     {"Block Ack Bitmap", "wlan.ba.bm",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    /* Used for Extended compressed BlockAck */
+    {&hf_ieee80211_block_ack_RBUFCAP,
+     {"Block Ack RBUFCAP", "wlan.ba.RBUFCAP",
+      FT_BOOLEAN, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_bitmap_missing_frame,
+     {"Missing frame", "wlan.ba.bm.missing_frame",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_block_ack_gcr_addr,
+     {"GCR Group Address", "wlan.ba.gcr_group_addr",
+      FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
+
+    {&hf_ieee80211_beamform_feedback_seg_retrans_bitmap,
+     {"Feedback segment Retansmission Bitmap", "wlan.beamform.feedback_seg_retrans_bitmap",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_token,
+     {"Sounding Dialog Token", "wlan.vht_ndp.token",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_token_number,
+     {"Sounding Dialog Token Number", "wlan.vht_ndp.token.number",
+      FT_UINT8, BASE_DEC, NULL, 0xFC,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_he_subfield,
+     {"HE", "wlan.vht_ndp.token.he",
+      FT_BOOLEAN, 8, TFS(&he_ndp_annc_he_subfield_vals), 0x02, NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_token_reserved,
+     {"Reserved", "wlan.vht_ndp.token.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x01,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_sta_info_aid12,
+     {"AID12", "wlan.vht_ndp.sta_info.aid12",
+      FT_UINT16, BASE_HEX, NULL, 0x0FFF,
+      "12 least significant bits of the AID of the target STA", HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_sta_info_feedback_type,
+     {"Feedback Type", "wlan.vht_ndp.sta_info.feedback_type",
+      FT_BOOLEAN, 16, TFS(&vht_ndp_annc_sta_info_feedback_type), 0x1000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_sta_info_nc_index,
+     {"Nc Index", "wlan.vht_ndp.sta_info.nc_index",
+      FT_UINT16, BASE_DEC, VALS(num_plus_one_3bit_flag), 0xE000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_vht_ndp_annc_sta_info_reserved,
+     {"Reserved", "wlan.vht_ndp.sta_info.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0xE000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_data_encap_payload_type,
+     {"Payload Type", "wlan.data_encap.payload_type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_data_encap_payload_types), 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_tdls_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tdls_action_codes_ext, 0,
+      "Management action code", HFILL }},
+
+    {&hf_ieee80211_ff_target_channel,
+     {"Target Channel", "wlan.fixed.target_channel",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_operating_class,
+     {"Operating Class", "wlan.fixed.operating_class",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_wnm_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &wnm_action_codes_ext, 0,
+      "Management action code", HFILL }},
+
+    {&hf_ieee80211_ff_unprotected_wnm_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &unprotected_wnm_action_codes_ext, 0,
+      "Management action code", HFILL }},
+
+    {&hf_ieee80211_ff_key_data,
+     {"Key Data", "wlan.fixed.key_data",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+
+    {&hf_ieee80211_ff_key_data_length,
+     {"Key Data Length", "wlan.fixed.key_data_length",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+    {&hf_ieee80211_ff_wnm_notification_type,
+     {"WNM-Notification type", "wlan.fixed.wnm_notification_type",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &wnm_notification_types_ext, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_action_code,
+     {"Action code", "wlan.rm.action_code",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rm_action_codes_ext, 0,
+      "Radio Measurement Action", HFILL }},
+
+    {&hf_ieee80211_ff_rm_dialog_token,
+     {"Dialog token", "wlan.rm.dialog_token",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Non-zero Dialog Token identifies request/report transaction", HFILL }},
+
+    {&hf_ieee80211_ff_rm_repetitions,
+     {"Repetitions", "wlan.rm.repetitions",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Numer of Repetitions, 65535 indicates repeat until cancellation", HFILL }},
+
+    {&hf_ieee80211_ff_rm_tx_power,
+     {"Transmit Power Used", "wlan.rm.tx_power",
+      FT_INT8, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_max_tx_power,
+     {"Max Transmit Power", "wlan.rm.max_tx_power",
+      FT_INT8, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_tpc,
+     {"TPC Report", "wlan.rm.tpc",
+      FT_NONE, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_tpc_element_id,
+     {"TPC Element ID", "wlan.rm.tpc.element_id",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_tpc_length,
+     {"TPC Length", "wlan.rm.tpc.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Length of TPC Report element (always 2)", HFILL }},
+
+    {&hf_ieee80211_ff_tpc_tx_power,
+     {"TPC Transmit Power", "wlan.rm.tpc.tx_power",
+      FT_INT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_tpc_link_margin,
+     {"TPC Link Margin", "wlan.rm.tpc.link_margin",
+      FT_INT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_rx_antenna_id,
+     {"Receive Antenna ID", "wlan.rm.rx_antenna_id",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_tx_antenna_id,
+     {"Transmit Antenna ID", "wlan.rm.tx_antenna_id",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_rcpi,
+     {"Received Channel Power", "wlan.rm.rcpi",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rm_rsni,
+     {"Received Signal to noise indication", "wlan.rm.rsni",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_request_mode_pref_cand,
+     {"Preferred Candidate List Included", "wlan.fixed.request_mode.pref_cand",
+      FT_UINT8, BASE_DEC, NULL, 0x01,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_request_mode_abridged,
+     {"Abridged", "wlan.fixed.request_mode.abridged",
+      FT_UINT8, BASE_DEC, NULL, 0x02,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_request_mode_disassoc_imminent,
+     {"Disassociation Imminent", "wlan.fixed.request_mode.disassoc_imminent",
+      FT_UINT8, BASE_DEC, NULL, 0x04,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_request_mode_bss_term_included,
+     {"BSS Termination Included", "wlan.fixed.request_mode.bss_term_included",
+      FT_UINT8, BASE_DEC, NULL, 0x08,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_request_mode_ess_disassoc_imminent,
+     {"ESS Disassociation Imminent", "wlan.fixed.request_mode.ess_disassoc_imminent",
+      FT_UINT8, BASE_DEC, NULL, 0x10,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_disassoc_timer,
+     {"Disassociation Timer", "wlan.fixed.disassoc_timer",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bss_termination_delay,
+     {"BSS Termination Delay", "wlan.fixed.bss_termination_delay",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bss_transition_status_code,
+     {"BSS Transition Status Code", "wlan.fixed.bss_transition_status_code",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_validity_interval,
+     {"Validity Interval", "wlan.fixed.validity_interval",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bss_termination_duration,
+     {"BSS Termination Duration", "wlan.fixed.bss_termination_duration",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_url_len,
+     {"Session Information URL Length",
+      "wlan.fixed.session_information.url_length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_url,
+     {"Session Information URL", "wlan.fixed.session_information.url",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_target_bss,
+     {"BSS Transition Target BSS", "wlan.fixed.bss_transition_target_bss",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bss_transition_query_reason,
+     {"BSS Transition Query Reason", "wlan.fixed.bss_transition_query_reason",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_transition_reasons), 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bss_transition_candidate_list_entries,
+     {"BSS Transition Candidate List Entries", "wlan.fixed.bss_transition_candidate_list_entries",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+/* 802.11ad */
+    {&hf_ieee80211_cf_response_offset,
+     {"Response Offset", "wlan.res_offset",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_grant_ack_reserved,
+     {"Reserved", "wlan.grant_ack.reserved",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dynamic_allocation,
+     {"Dynamic Allocation", "wlan.dynamic_allocation",
+      FT_UINT40, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_TID,
+     {"TID", "wlan.dynamic_allocation.tid",
+      FT_UINT40, BASE_DEC, NULL, 0x000000000F,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_alloc_type,
+     {"Allocation Type", "wlan.dynamic_allocation.alloc_type",
+      FT_UINT40, BASE_DEC, NULL, 0x000000070,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_src_aid,
+     {"Source AID", "wlan.dynamic_allocation.src_aid",
+      FT_UINT40, BASE_DEC, NULL, 0x0000007F80,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dest_aid,
+     {"Destination AID", "wlan.dynamic_allocation.dest_aid",
+      FT_UINT40, BASE_DEC, NULL, 0x00007f8000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_alloc_duration,
+     {"Allocation Duration", "wlan.dynamic_allocation.alloc_duration",
+      FT_UINT40, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0x7FFF800000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_b39,
+     {"Reserved (b39)", "wlan.dynamic_allocation.b39",
+      FT_UINT40, BASE_HEX, NULL, 0x8000000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ssw,
+     {"Sector Sweep", "wlan.ssw",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ssw_direction,
+     {"Sector Sweep Direction", "wlan.ssw.direction",
+      FT_BOOLEAN, 24, TFS(&ieee80211_cf_ssw_direction), 0x000001,
+      NULL, HFILL}},
+
+    {&hf_ieee80211_ff_ssw_cdown,
+     {"Sector Sweep CDOWN", "wlan.ssw.cdown",
+      FT_UINT24, BASE_DEC, NULL, 0x0003fe,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ssw_sector_id,
+     {"Sector Sweep Sector ID", "wlan.ssw.sector_id",
+      FT_UINT24, BASE_DEC, NULL, 0x00fc00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ssw_dmg_ant_id,
+     {"Sector Sweep DMG Antenna ID", "wlan.ssw.dmg_ant_id",
+      FT_UINT24, BASE_DEC, NULL, 0x030000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ssw_rxss_len,
+     {"Sector Sweep RXSS Length", "wlan.ssw.rxss_len",
+      FT_UINT24, BASE_DEC, NULL, 0xfc0000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf,
+     {"Beam Forming", "wlan.bf",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_train,
+     {"Beam Forming Training", "wlan.bf.train",
+      FT_BOOLEAN, 16, NULL, 0x0001,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_is_init,
+     {"Beam Forming Is InitiatorTXSS", "wlan.bf.isInit",
+      FT_BOOLEAN, 16, NULL, 0x0002,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_is_resp,
+     {"Beam Forming Is ResponderTXSS", "wlan.bf.isResp",
+      FT_BOOLEAN, 16, NULL, 0x0004,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_rxss_len,
+     {"Beam Forming RXSS Length", "wlan.bf.rxss_len",
+      FT_UINT16, BASE_DEC, NULL, 0x01f8,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_rxss_rate,
+     {"Beam Forming RXSS Rate", "wlan.bf.rxss_rate",
+      FT_BOOLEAN, 16, NULL, 0x0200,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_b10b15,
+     {"Reserved (B10-B15)", "wlan.bf.reserved",
+      FT_UINT16, BASE_DEC, NULL, 0xFC00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_num_sectors,
+     {"Beam Forming Total Number of Sectors", "wlan.bf.num_sectors",
+      FT_UINT16, BASE_DEC, NULL, 0x03f8,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_num_rx_dmg_ants,
+     {"Beam Forming Number of DMG Antennas", "wlan.bf.num_dmg_ants",
+      FT_UINT16, BASE_DEC, NULL, 0x0c00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bf_b12b15,
+     {"Reserved (B12-B15)", "wlan.bf.reserved",
+      FT_UINT16, BASE_DEC, NULL, 0xF000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_addr_nav_da,
+     {"Destination address of STA that caused NAV update", "wlan.nav_da",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "DMG Destination Hardware Address", HFILL }},
+
+    {&hf_ieee80211_addr_nav_sa,
+     {"Source address of STA that caused NAV update", "wlan.nav_sa",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "DMG Source Hardware Address", HFILL }},
+
+    {&hf_ieee80211_ff_sswf,
+     {"Sector Sweep Feedback", "wlan.sswf",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_total_sectors,
+     {"Sector Sweep Feedback total number of sectors", "wlan.sswf.num_sectors",
+      FT_UINT24, BASE_DEC, NULL, 0x0001ff,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_num_rx_dmg_ants,
+     {"Sector Sweep Feedback Number of receive DMG Antennas", "wlan.sswf.num_dmg_ants",
+      FT_UINT24, BASE_DEC, NULL, 0x000600,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_poll_required,
+     {"Sector Sweep Feedback Poll required", "wlan.sswf.poll",
+      FT_BOOLEAN, 24, NULL, 0x010000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_reserved1,
+     {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
+      FT_UINT24, BASE_HEX, NULL, 0x00F800,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_reserved2,
+     {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
+      FT_UINT24, BASE_HEX, NULL, 0xFE0000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_sector_select,
+     {"Sector Sweep Feedback Sector Select", "wlan.sswf.sector_select",
+      FT_UINT24, BASE_DEC, NULL, 0x00003F,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_dmg_antenna_select,
+     {"Sector Sweep Feedback DMG Antenna Select", "wlan.sswf.dmg_antenna_select",
+      FT_UINT24, BASE_DEC, NULL, 0x0000C0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_sswf_snr_report,
+     {"Sector Sweep Feedback SNR Report", "wlan.sswf.snr_report",
+      FT_UINT24, BASE_DEC, NULL, 0x00FF00,
+      NULL, HFILL }},
+
+
+    {&hf_ieee80211_ff_brp,
+     {"BRP Request", "wlan.brp",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_L_RX,
+     {"BRP Request L-RX", "wlan.brp.l_rx",
+      FT_UINT32, BASE_DEC, NULL, 0x0000001f,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_TX_TRN_REQ,
+     {"BRP Request TX-TRN-REQ", "wlan.brp.tx_trn_req",
+      FT_BOOLEAN, 32, NULL, 0x00000020,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_MID_REQ,
+     {"BRP Request MID-REQ", "wlan.brp.mid_req",
+      FT_BOOLEAN, 32, NULL, 0x00000040,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_BC_REQ,
+     {"BRP Request BC-REQ", "wlan.brp.bc_req",
+      FT_BOOLEAN, 32, NULL, 0x00000080,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_MID_GRANT,
+     {"BRP Request MID-GRANT", "wlan.brp.mid_grant",
+      FT_BOOLEAN, 32, NULL, 0x00000100,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_BC_GRANT,
+     {"BRP Request BC-GRANT", "wlan.brp.bc_grant",
+      FT_BOOLEAN, 32, NULL, 0x00000200,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_chan_FBCK_CAP,
+     {"BRP Request Chan FBCK-CAP", "wlan.brp.chan_fbck_cap",
+      FT_BOOLEAN, 32, NULL, 0x00000400,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_tx_sector,
+     {"BRP Request TX Sector ID", "wlan.brp.tx_sector_id",
+      FT_UINT32, BASE_DEC, NULL, 0x0001f800,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_other_aid,
+     {"BRP Request Other AID", "wlan.brp.other_aid",
+      FT_UINT32, BASE_DEC, NULL, 0x01fe0000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_tx_antenna,
+     {"BRP Request TX Antenna ID", "wlan.brp.tx_antenna_id",
+      FT_UINT32, BASE_DEC, NULL, 0x06000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_brp_reserved,
+     {"BRP Request Reserved", "wlan.brp.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0xF8000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_blm,
+     {"Beamformed Link Maintenance", "wlan.blm",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_blm_unit_index,
+     {"BeamLink Maintenance Uint Index", "wlan.blm.uint_index",
+      FT_BOOLEAN, 8, NULL, 0x01,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_blm_maint_value,
+     {"BeamLink Maintenance Value", "wlan.blm.value",
+      FT_UINT8, BASE_DEC, NULL, 0x7e,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_blm_is_master,
+     {"BeamLink Is Master", "wlan.blm.is_master",
+      FT_BOOLEAN, 8, NULL, 0x80,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic,
+     {"Beacon Interval Control", "wlan.bic",
+      FT_UINT48, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_cc_present,
+     {"Clustering Control Present", "wlan.bic.cc",
+      FT_BOOLEAN, 48, NULL, 0x000000000001,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_discovery_mode,
+     {"Discovery Mode", "wlan.bic.discovery_mode",
+      FT_BOOLEAN, 48, NULL, 0x000000000002,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_next_beacon,
+     {"Next Beacon", "wlan.bic.next_beacon",
+      FT_UINT48, BASE_DEC, NULL, 0x00000000003c,
+
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_ati_present,
+     {"ATI Present", "wlan.bic.ati",
+      FT_BOOLEAN, 48, NULL, 0x000000000040,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_abft_len,
+     {"A-BFT length", "wlan.bic.abft_len",
+      FT_UINT48, BASE_DEC, NULL, 0x000000000380,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_fss,
+     {"FSS", "wlan.bic.fss",
+      FT_UINT48, BASE_DEC, NULL, 0x000000003c00,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_is_resp,
+     {"Is TXSS Responder", "wlan.bic.is_responder",
+      FT_BOOLEAN, 48, NULL, 0x000000004000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_next_abft,
+     {"Next A-BFT", "wlan.bic.next_abft",
+      FT_UINT48, BASE_DEC, NULL, 0x000000078000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_frag_txss,
+     {"Fragmented TXSS", "wlan.bic.frag_txss",
+      FT_BOOLEAN, 48, NULL, 0x000000080000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_txss_span,
+     {"TXSS span", "wlan.bic.txss_span",
+      FT_UINT48, BASE_DEC, NULL, 0x000007f00000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_NBI_abft,
+     {"Number of Beacon Intervals that are needed to allocate A-BFT", "wlan.bic.NBI_abft",
+      FT_UINT48, BASE_DEC, NULL, 0x00078000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_abft_count,
+     {"A-BFT Count", "wlan.bic.abft_count",
+      FT_UINT48, BASE_DEC, NULL, 0x001f80000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_nabft,
+     {"Number of A-BFT's received from each Antenna", "wlan.bic.nabft",
+      FT_UINT48, BASE_DEC, NULL, 0x07e000000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_pcp,
+     {"PCP Association Ready", "wlan.bic.pcp",
+      FT_BOOLEAN, 48, NULL, 0x080000000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_bic_reserved,
+     {"Reserved", "wlan.bic.reserved",
+      FT_UINT48, BASE_HEX, NULL, 0xF00000000000,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params,
+     {"DMG Parameters", "wlan.dmg_params",
+      FT_UINT8, BASE_HEX , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params_bss,
+     {"BSS Type", "wlan.dmg_params.bss",
+      FT_UINT8, BASE_DEC, VALS(bss_type), 0x03,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params_cbap_only,
+     {"CBAP Only", "wlan.dmg_params.cbap_only",
+      FT_BOOLEAN, 8, NULL, 0x04,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params_cbap_src,
+     {"CBAP Source", "wlan.dmg_params.cbap_src",
+      FT_BOOLEAN, 8, NULL, 0x08,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params_privacy,
+     {"DMG Privacy", "wlan.dmg_params.privacy",
+      FT_BOOLEAN, 8, NULL, 0x10,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_dmg_params_policy,
+     {"ECAPC Policy Enforced", "wlan.dmg_params.policy",
+      FT_BOOLEAN, 8, NULL, 0x20,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc,
+     {"Clustering Control", "wlan.cc",
+      FT_UINT64, BASE_HEX , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc_abft_resp_addr,
+     {"A-BFT Responder Address", "wlan.cc.abft_resp_addr",
+      FT_ETHER, BASE_NONE , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc_sp_duration,
+     {"Beacon SP Duration", "wlan.cc.sp_duration",
+      FT_UINT8, BASE_DEC , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc_cluster_id,
+     {"Cluster ID", "wlan.cc.cluster_id",
+      FT_UINT64, BASE_DEC , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc_role,
+     {"Cluster Member Role", "wlan.cc.rold",
+      FT_UINT8, BASE_DEC , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_cc_max_mem,
+     {"Cluster MaxMem", "wlan.cc.max_mem",
+      FT_UINT8, BASE_DEC , NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_relay_support,
+     {"Relay Supportability", "wlan.relay_capabilities.relay_support",
+      FT_BOOLEAN, 8, NULL, 0x01,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_relay_use,
+     {"Relay Usability", "wlan.relay_capabilities.relay_use",
+      FT_BOOLEAN, 8, NULL, 0x02,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_relay_permission,
+     {"Relay Permission", "wlan.relay_capabilities.relay_permission",
+      FT_BOOLEAN, 8, NULL, 0x04,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_AC_power,
+     {"A/C Power", "wlan.relay_capabilities.AC_power",
+      FT_BOOLEAN, 8, NULL, 0x08,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_relay_prefer,
+     {"Relay Preference", "wlan.relay_capabilities.relay_prefer",
+      FT_BOOLEAN, 8, NULL, 0x10,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_duplex,
+     {"Duplex", "wlan.relay_capabilities.duplex",
+      FT_UINT8, BASE_DEC, NULL, 0x60,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_cooperation,
+     {"Cooperation", "wlan.relay_capabilities.cooperation",
+      FT_BOOLEAN, 8, NULL, 0x80,
+      NULL, HFILL }},
+
+#if 0
+    {&hf_ieee80211_ff_rcsi,
+     {"Relay Capable STA Info", "wlan.rcsi",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_rcsi_aid,
+     {"AID", "wlan.rcsi.aid",
+      FT_UINT8, BASE_DEC, NULL, 0xff,
+      NULL, HFILL }},
+#endif
+
+    {&hf_ieee80211_ff_band_id,
+     {"Band ID", "wlan.band_id",
+      FT_UINT8, BASE_DEC, VALS(band_id), 0xff,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_move,
+     {"Move", "wlan.dmg_bss_param_change.move",
+      FT_BOOLEAN, 8, NULL, 0x01,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_size,
+     {"Size", "wlan.dmg_bss_param_change.size",
+      FT_BOOLEAN, 8, NULL, 0x02,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_tbtt_offset,
+     {"TBTT Offset", "wlan.dmg_bss_param_change.tbtt_offset",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0xffffffff,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_bi_duration,
+     {"BI Duration", "wlan.dmg_bss_param_change.bi_duration",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_dmg_capa_sta_addr,
+     {"STA Address", "wlan.dmg_capa.sta_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "STA_Address", HFILL }},
+
+    {&hf_ieee80211_tag_dmg_capa_aid,
+     {"AID", "wlan.dmg_capa.aid",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
+/* 8.4.2.127.2 DMG STA Capability Information field */
+    {&hf_ieee80211_tag_reverse_direction, /* DMG STA capa, bits [0] */
+     {"Reverse Direction", "wlan.dmg_capa.reverse_direction",
+      FT_BOOLEAN, 24, NULL, GENMASK(0, 0),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_hlts, /* DMG STA capa, bits [1] */
+     {"Higher Layer Timer Synchronization", "wlan.dmg_capa.htls",
+      FT_BOOLEAN, 24, NULL, GENMASK(1, 1),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_tpc, /* DMG STA capa, bits [2] */
+     {"TPC", "wlan.dmg_capa.tpc",
+      FT_BOOLEAN, 24, NULL, GENMASK(2, 2),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_spsh, /* DMG STA capa, bits [3] */
+     {"SPSH and Interference Mitigation", "wlan.dmg_capa.spsh",
+      FT_BOOLEAN, 24, NULL, GENMASK(3, 3),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_rx_antenna, /* DMG STA capa, bits [4..5] */
+     {"Number of RX DMG Antennas", "wlan.dmg_capa.num_rx",
+      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_base_custom), GENMASK(5, 4),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_fast_link, /* DMG STA capa, bits [6] */
+     {"Fast Link Adaptation", "wlan.dmg_capa.fast_link",
+      FT_BOOLEAN, 24, NULL, GENMASK(6, 6),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_num_sectors, /* DMG STA capa, bits [7..13] */
+     {"Total Number of Sectors", "wlan.dmg_capa.num_sectors",
+      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_base_custom), GENMASK(13, 7),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_rxss_length, /* DMG STA capa, bits [14..19] */
+     {"RXSS Length", "wlan.dmg_capa.rxss_len",
+      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_mul_two_base_custom), GENMASK(19, 14),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_reciprocity, /* DMG STA capa, bits [20] */
+     {"DMG Antenna Reciprocity", "wlan.dmg_capa.reciprocity",
+      FT_BOOLEAN, 24, NULL, GENMASK(20, 20),
+      NULL, HFILL }},
+/* DMG STA capa, A-MPDU params, bits [21..26] */
+    {&hf_ieee80211_tag_max_ampdu_exp, /* DMG STA capa, bits [21..23] */
+     {"Maximum A-MPDU Length Exponent", "wlan.dmg_capa.max_ampdu_exp",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(23, 21),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_min_mpdu_spacing, /* DMG STA capa, bits [24..26] */
+     {"Minimum MPDU Start Spacing", "wlan.dmg_capa.min_mpdu_spacing",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(26-24, 24-24),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_ba_flow_control , /* DMG STA capa, bits [27] */
+     {"BA with Flow Control", "wlan.dmg_capa.bs_flow_ctrl",
+      FT_BOOLEAN, 24, NULL, GENMASK(27-24, 27-24),
+      NULL, HFILL }},
+/* DMG STA capa, supported MCS set, bits [28..51] */
+    {&hf_ieee80211_tag_max_sc_rx_mcs, /* DMG STA capa, bits [28..32] */
+     {"Maximum SC Rx MCS", "wlan.dmg_capa.max_sc_rx_mcs",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(32-24, 28-24),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_max_ofdm_rx_mcs, /* DMG STA capa, bits [33..37] */
+     {"Maximum OFDM Rx MCS", "wlan.dmg_capa.max_ofdm_rx_mcs",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(37-24, 33-24),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_max_sc_tx_mcs, /* DMG STA capa, bits [38..42] */
+     {"Maximum SC Tx MCS", "wlan.dmg_capa.max_sc_tx_mcs",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(42-24, 38-24),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_max_ofdm_tx_mcs, /* DMG STA capa, bits [43..47] */
+     {"Maximum OFDM Tx MCS", "wlan.dmg_capa.max_ofdm_tx_mcs",
+      FT_UINT24, BASE_DEC, NULL, GENMASK(47-24, 43-24),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_low_power_supported, /* DMG STA capa, bits [48] */
+     {"Low Power SC PHY Supported", "wlan.dmg_capa.low_power_suuported",
+      FT_BOOLEAN, 16, NULL, GENMASK(48-48, 48-48),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_code_rate, /* DMG STA capa, bits [49] */
+     {"Code Rate 13/16", "wlan.dmg_capa.code_rate",
+      FT_BOOLEAN, 16, NULL, GENMASK(49-48, 49-48),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_dtp, /* DMG STA capa, bits [52] */
+     {"DTP Supported", "wlan.dmg_capa.dtp",
+      FT_BOOLEAN, 16, NULL, GENMASK(52-48, 52-48),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_appdu_supp, /* DMG STA capa, bits [53] */
+     {"A-PPDU Supported", "wlan.dmg_capa.appdu_supp",
+      FT_BOOLEAN, 16, NULL, GENMASK(53-48, 53-48),
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_heartbeat, /* DMG STA capa, bits [54] */
+     {"HeartBeat", "wlan.dmg_capa.heartbeat",
+      FT_BOOLEAN, 16, NULL, GENMASK(54-48, 54-48),
+      NULL, HFILL }},
 
-    case MGT_FRAME:
-      dissect_ieee80211_mgt(fcf, next_tvb, pinfo, tree);
-      break;
+    {&hf_ieee80211_tag_other_aid, /* DMG STA capa, bits [55] */
+     {"Supports Other_AID", "wlan.dmg_capa.other_aid",
+      FT_BOOLEAN, 16, NULL, GENMASK(55-48, 55-48),
+      NULL, HFILL }},
 
-    case DATA_FRAME:
-      if (is_amsdu && (tvb_reported_length_remaining(next_tvb, 0) > 4)) {
-        proto_item   *parent_item;
-        proto_tree   *mpdu_tree;
-        guint32       msdu_offset = 0;
-        guint         i           = 1;
+    {&hf_ieee80211_tag_pattern_recip, /* DMG STA capa, bits [56] */
+     {"Antenna Pattern Reciprocity", "wlan.dmg_capa.pattern_recip",
+      FT_BOOLEAN, 16, NULL, GENMASK(56-48, 56-48),
+      NULL, HFILL }},
 
-        parent_item = proto_tree_add_protocol_format(tree, proto_aggregate, next_tvb, 0,
-                                    tvb_reported_length_remaining(next_tvb, 0), "IEEE 802.11 Aggregate MSDU");
-        mpdu_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_parent_tree);
+    {&hf_ieee80211_tag_heartbeat_elapsed, /* DMG STA capa, bits [57..59] */
+     {"Heartbeat Elapsed Indication", "wlan.dmg_capa.heartbeat_elapsed",
+      FT_UINT16, BASE_DEC, NULL, GENMASK(59-48, 57-48),
+      NULL, HFILL }},
 
-        do {
-          tvbuff_t           *msdu_tvb;
-          guint16             msdu_length;
-          proto_tree         *subframe_tree;
-          const gchar *resolve_name;
+    {&hf_ieee80211_tag_grant_ack_supp, /* DMG STA capa, bits [60] */
+     {"Grant ACK Supported", "wlan.dmg_capa.grant_ack_supp",
+      FT_BOOLEAN, 16, NULL, GENMASK(60-48, 60-48),
+      NULL, HFILL }},
 
-          /*
-           * IEEE Std 802.11-2012 says, in section 8.3.2.2 "A-MSDU format":
-           *
-           *  The A-MSDU subframe header contains three fields: DA, SA, and
-           *  Length. The order of these fields and the bits within these
-           *  fields are the same as the IEEE 802.3 frame format.
-           *
-           * which means that the length field is big-endian, not
-           * little-endian.
-           */
-          msdu_length = tvb_get_ntohs(next_tvb, msdu_offset+12);
+    {&hf_ieee80211_tag_RXSSTxRate_supp, /* DMG STA capa, bits [61] */
+     {"RXSSTxRate Supported", "wlan.dmg_capa.RXSSTxRate",
+      FT_BOOLEAN, 16, NULL, GENMASK(61-48, 61-48),
+      NULL, HFILL }},
+/* 8.4.2.127.3 DMG PCP/AP Capability Information field */
+    {&hf_ieee80211_tag_pcp_tddti, /* DMG PCP/AP capa, bits [0] */
+     {"TDDTI", "wlan.dmg_capa.pcp_tdtti",
+      FT_BOOLEAN, 16, NULL, GENMASK(0, 0),
+      NULL, HFILL }},
 
-          parent_item = proto_tree_add_item(mpdu_tree, hf_ieee80211_amsdu_subframe, next_tvb,
-                            msdu_offset, roundup2(msdu_offset+14+msdu_length, 4), ENC_NA);
-          proto_item_append_text(parent_item, " #%u", i);
-          subframe_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_subframe_tree);
-          i += 1;
+    {&hf_ieee80211_tag_pcp_PSA, /* DMG PCP/AP capa, bits [1] */
+     {"Pseudo-static Allocations", "wlan.dmg_capa.pcp_psa",
+      FT_BOOLEAN, 16, NULL, GENMASK(1, 1),
+      NULL, HFILL }},
 
-          proto_tree_add_item(subframe_tree, hf_ieee80211_addr_da, next_tvb, msdu_offset, 6, ENC_NA);
-          resolve_name = tvb_get_ether_name(tvb, msdu_offset);
-          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_da_resolved, tvb, msdu_offset, 6,
-            resolve_name);
-          PROTO_ITEM_SET_HIDDEN(hidden_item);
-          proto_tree_add_item(subframe_tree, hf_ieee80211_addr_sa, next_tvb, msdu_offset+6, 6, ENC_NA);
-          resolve_name = tvb_get_ether_name(tvb, msdu_offset+6);
-          hidden_item = proto_tree_add_string(hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, msdu_offset+6, 6,
-            resolve_name);
-          PROTO_ITEM_SET_HIDDEN(hidden_item);
-          proto_tree_add_item(subframe_tree, hf_ieee80211_amsdu_length, next_tvb, msdu_offset+12, 2, ENC_BIG_ENDIAN);
+    {&hf_ieee80211_tag_pcp_handover, /* DMG PCP/AP capa, bits [2] */
+     {"PDP Handover", "wlan.dmg_capa.pcp_handover",
+      FT_BOOLEAN, 16, NULL, GENMASK(2, 2),
+      NULL, HFILL }},
 
-          msdu_offset += 14;
-          msdu_tvb = tvb_new_subset_length(next_tvb, msdu_offset, msdu_length);
-          call_dissector(llc_handle, msdu_tvb, pinfo, subframe_tree);
-          msdu_offset = roundup2(msdu_offset+msdu_length, 4);
-        } while (tvb_reported_length_remaining(next_tvb, msdu_offset) > 14);
+    {&hf_ieee80211_tag_pcp_max_assoc, /* DMG PCP/AP capa, bits [3..10] */
+     {"Max Associated STA Number", "wlan.dmg_capa.pcp_max_assoc",
+      FT_UINT16, BASE_DEC, NULL, GENMASK(10, 3),
+      NULL, HFILL }},
 
-        break;
-      }
-      /* I guess some bridges take Netware Ethernet_802_3 frames,
-         which are 802.3 frames (with a length field rather than
-         a type field, but with no 802.2 header in the payload),
-         and just stick the payload into an 802.11 frame.  I've seen
-         captures that show frames of that sort.
+    {&hf_ieee80211_tag_pcp_power_src, /* DMG PCP/AP capa, bits [11] */
+     {"Power Source", "wlan.dmg_capa.pcp_power_src",
+      FT_BOOLEAN, 16, NULL, GENMASK(11, 11),
+      NULL, HFILL }},
 
-         We also handle some odd form of encapsulation in which a
-         complete Ethernet frame is encapsulated within an 802.11
-         data frame, with no 802.2 header.  This has been seen
-         from some hardware.
+    {&hf_ieee80211_tag_pcp_decenter, /* DMG PCP/AP capa, bits [12] */
+     {"Decentralized PCP/AP Clustering", "wlan.dmg_capa.pcp_decenter",
+      FT_BOOLEAN, 16, NULL, GENMASK(12, 12),
+      NULL, HFILL }},
 
-         On top of that, at least at some point it appeared that
-         the OLPC XO sent out frames with two bytes of 0 between
-         the "end" of the 802.11 header and the beginning of
-         the payload. Something similar has also been observed
-         with Atheros chipsets. There the sequence control field
-         seems repeated.
+    {&hf_ieee80211_tag_pcp_forwarding, /* DMG PCP/AP capa, bits [13] */
+     {"PCP Forwarding", "wlan.dmg_capa.pcp_forwarding",
+      FT_BOOLEAN, 16, NULL, GENMASK(13, 13),
+      NULL, HFILL }},
 
-         So, if the packet doesn't start with 0xaa 0xaa:
+    {&hf_ieee80211_tag_pcp_center, /* DMG PCP/AP capa, bits [14] */
+     {"Centralized PCP/AP Clustering", "wlan.dmg_capa.pcp_center",
+      FT_BOOLEAN, 16, NULL, GENMASK(14, 14),
+      NULL, HFILL }},
 
-           we first use the same scheme that linux-wlan-ng does to detect
-           those encapsulated Ethernet frames, namely looking to see whether
-           the frame either starts with 6 octets that match the destination
-           address from the 802.11 header or has 6 octets that match the
-           source address from the 802.11 header following the first 6 octets,
-           and, if so, treat it as an encapsulated Ethernet frame;
+    {&hf_ieee80211_tag_sta_beam_track, /* DMG STA beam track capa*/
+     {"STA Beam Tracking Time Limit", "wlan.dmg_capa.beam_track",
+      FT_UINT16, BASE_DEC | BASE_UNIT_STRING, &units_microseconds, 0,
+      NULL, HFILL }},
 
-           otherwise, we use the same scheme that we use in the Ethernet
-           dissector to recognize Netware 802.3 frames, namely checking
-           whether the packet starts with 0xff 0xff and, if so, treat it
-           as an encapsulated IPX frame, and then check whether the
-           packet starts with 0x00 0x00 and, if so, treat it as an OLPC
-           frame, or check the packet starts with the repetition of the
-           sequence control field and, if so, treat it as an Atheros frame. */
-      encap_type = ENCAP_802_2;
-      if (tvb_bytes_exist(next_tvb, 0, 2)) {
-        octet1 = tvb_get_guint8(next_tvb, 0);
-        octet2 = tvb_get_guint8(next_tvb, 1);
-        if ((octet1 != 0xaa) || (octet2 != 0xaa)) {
-          if ((tvb_memeql(next_tvb, 6, (const guint8 *)pinfo->dl_src.data, 6) == 0) ||
-              (tvb_memeql(next_tvb, 0, (const guint8 *)pinfo->dl_dst.data, 6) == 0))
-            encap_type = ENCAP_ETHERNET;
-          else if ((octet1 == 0xff) && (octet2 == 0xff))
-            encap_type = ENCAP_IPX;
-          else if (((octet1 == 0x00) && (octet2 == 0x00)) ||
-                   (((octet2 << 8) | octet1) == seq_control)) {
-            proto_tree_add_item(tree, hf_ieee80211_mysterious_olpc_stuff, next_tvb, 0, 2, ENC_NA);
-            next_tvb = tvb_new_subset_remaining(next_tvb, 2);
-          }
-        }
-      }
+    {&hf_ieee80211_tag_ext_sc_mcs_max_tx, /* DMG STA Ext SC MCS Capa: Max TX*/
+     {"Extended SC Max Tx MCS Name", "wlan.dmg_capa.ext_sc_mcs_capa_max_tx",
+      FT_UINT8, BASE_DEC, VALS(extended_sc_mcs), GENMASK(2, 0),
+      NULL, HFILL }},
 
-      switch (encap_type) {
+    {&hf_ieee80211_tag_ext_sc_mcs_tx_code_7_8, /* DMG STA Ext SC MCS Capa: Tx code rate 7/8*/
+     {"Extended SC Tx MCS code rate 7/8", "wlan.dmg_capa.ext_sc_mcs_tx_code_7_8",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), GENMASK(3, 3),
+      NULL, HFILL }},
 
-      case ENCAP_802_2:
-        call_dissector(llc_handle, next_tvb, pinfo, tree);
-        break;
+    {&hf_ieee80211_tag_ext_sc_mcs_max_rx, /* DMG STA Ext SC MCS Capa: Max RX*/
+     {"Extended SC Max Rx MCS Name", "wlan.dmg_capa.ext_sc_mcs_capa_max_rx",
+      FT_UINT8, BASE_DEC, VALS(extended_sc_mcs), GENMASK(6, 4),
+      NULL, HFILL }},
 
-      case ENCAP_ETHERNET:
-        call_dissector(eth_withoutfcs_handle, next_tvb, pinfo, tree);
-        break;
+    {&hf_ieee80211_tag_ext_sc_mcs_rx_code_7_8, /* DMG STA Ext SC MCS Capa: Rx code rate 7/8*/
+     {"Extended SC Rx MCS code rate 7/8", "wlan.dmg_capa.ext_sc_mcs_rx_code_7_8",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), GENMASK(7, 7),
+      NULL, HFILL }},
 
-      case ENCAP_IPX:
-        call_dissector(ipx_handle, next_tvb, pinfo, tree);
-        break;
-      }
-      break;
+    {&hf_ieee80211_tag_max_basic_sf_amsdu, /* DMG Max Number of Basic Subframes in an A-MSDU*/
+     {"Max Number of Basic Subframes in an A-MSDU", "wlan.dmg_capa.max_basic_sf_amsdu",
+      FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(max_basic_sf_amsdu), 0,
+      NULL, HFILL }},
 
-    case EXTENSION_FRAME:
-    {
-      dissect_ieee80211_extension(fcf, next_tvb, pinfo, tree);
-      break;
-    }
-  }
-  pinfo->fragmented = save_fragmented;
+    {&hf_ieee80211_tag_max_short_sf_amsdu, /* DMG Max Number of short Subframes in an A-MSDU*/
+     {"Max Number of short Subframes in an A-MSDU", "wlan.dmg_capa.max_short_sf_amsdu",
+      FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(max_short_sf_amsdu), 0,
+      NULL, HFILL }},
 
-end_of_wlan:
-  whdr->stats = wlan_stats;
-  tap_queue_packet(wlan_tap, pinfo, whdr);
-  memset(&wlan_stats, 0, sizeof wlan_stats);
+    {&hf_ieee80211_tag_PSRSI,
+     {"PS Request Suspension Interval", "wlan.dmg_oper.psrsi",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_min_BHI_duration,
+     {"Min BHI Duration", "wlan.dmg_oper.min_BHI_duration",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 with a variable-length link-layer header and with the FCS
- * presence or absence indicated by the pseudo-header, if there is one.
- */
-static int
-dissect_ieee80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
-{
-  struct ieee_802_11_phdr *phdr = (struct ieee_802_11_phdr *)data;
-  struct ieee_802_11_phdr ourphdr;
+    {&hf_ieee80211_tag_brdct_sta_info_dur,
+     {"Broadcast STA Info Duration", "wlan.dmg_oper.brdcst_sta_info_dur",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-  if (phdr == NULL) {
-    /*
-     * Fake a pseudo-header.
-     * XXX - what are we supposed to do if the FCS length is unknown?
-     */
-    memset(&ourphdr, 0, sizeof(ourphdr));
-    ourphdr.fcs_len = -1;
-    ourphdr.decrypted = FALSE;
-    ourphdr.datapad = FALSE;
-    ourphdr.phy = PHDR_802_11_PHY_UNKNOWN;
-    phdr = &ourphdr;
-  }
-  return dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, phdr);
-}
+    {&hf_ieee80211_tag_assoc_resp_confirm_time,
+     {"Associated Response Confirm Time", "wlan.dmg_oper.assoc_resp_confirm_time",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 with a variable-length link-layer header and with an
- * FCS, but no pseudo-header.
- */
-static int
-dissect_ieee80211_withfcs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  struct ieee_802_11_phdr phdr;
+    {&hf_ieee80211_tag_min_pp_duration,
+     {"Min PP Duration", "wlan.dmg_oper.min_pp_duration",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-  /* Construct a pseudo-header to hand to the common code. */
-  memset(&phdr, 0, sizeof(phdr));
-  phdr.fcs_len = 4;
-  phdr.decrypted = FALSE;
-  phdr.datapad = FALSE;
-  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
-  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_SP_idle_timeout,
+     {"SP Idle Timeout", "wlan.dmg_oper.SP_idle_timeout",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 with a variable-length link-layer header and without an
- * FCS, but no pseudo-header.
- */
-static int
-dissect_ieee80211_withoutfcs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  struct ieee_802_11_phdr phdr;
+    {&hf_ieee80211_tag_max_lost_beacons,
+     {"Max Lost Beacons", "wlan.dmg_oper.max_lost_beacons",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-  /* Construct a pseudo-header to hand to the common code. */
-  memset(&phdr, 0, sizeof(phdr));
-  phdr.decrypted = FALSE;
-  phdr.datapad = FALSE;
-  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
-  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_type,
+     {"Type", "wlan.sctor_id.type",
+      FT_UINT32, BASE_HEX, NULL, 0x0000000f,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 from an Intel 2200BG adapter in a Centrino laptop
- * running Windows XP.
- *
- * From
- *
- *   https://www.wireshark.org/lists/ethereal-dev/200407/msg00184.html
- *
- * and
- *
- *   https://www.wireshark.org/lists/ethereal-dev/200407/msg00393.html:
- *
- *  I tried capturing from a Centrino laptop with the Intel 2200BG 802.11g
- *  chipset. I saw a lot of "Ethernet II" frames with 0x2452 as ethertype.
- *
- *    ...
- *
- *  This behaviour has been observed on Windows XP. In my opinion it is
- *  a "proprietary" behaviour of either the Centrino driver or the Centrino
- *  hardware. Currently I have no Linux distro installed on the machine to
- *  verify whether it is also the case.
- *
- *  These packets are seen only in a promiscuous capture:
- *    - Packets normally received by the Centrino computer have the normal
- *      structure (no 802.11/LLC header but directly IP header).
- *    - Packets that are supposed to be received by another computer have
- *      the 802.11/LLC headers. ... Also I noticed that when WEP is enabled,
- *      the 802.11 header has the flag "WEP" set to true, but the packet
- *      is already decrypted. I added a test in the code to accomodate this.
- *      For TKIP it seems to stay encrypted.
- */
-static int
-dissect_ieee80211_centrino(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  struct ieee_802_11_phdr phdr;
+    {&hf_ieee80211_tag_tap1,
+     {"Tap 1", "wlan.sctor_id.tap1",
+      FT_UINT32, BASE_HEX, NULL, 0x000003f0,
+      NULL, HFILL }},
 
-  /* Construct a pseudo-header to hand to the common code. */
-  memset(&phdr, 0, sizeof(phdr));
-  phdr.decrypted = FALSE;
-  phdr.datapad = FALSE;
-  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
-  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_IS_CENTRINO|IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_state1,
+     {"State 1", "wlan.sctor_id.state1",
+      FT_UINT32, BASE_HEX, NULL, 0x0000fc00,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 with a variable-length link-layer header and a byte-swapped
- * control field and with no FCS (some hardware sends out LWAPP-encapsulated
- * 802.11 packets with the control field byte swapped).
- */
-static int
-dissect_ieee80211_bsfc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  struct ieee_802_11_phdr phdr;
+    {&hf_ieee80211_tag_tap2,
+     {"Tap 2", "wlan.sctor_id.tap2",
+      FT_UINT32, BASE_HEX, NULL, 0x00ff0000,
+      NULL, HFILL }},
 
-  /* Construct a pseudo-header to hand to the common code. */
-  memset(&phdr, 0, sizeof(phdr));
-  phdr.decrypted = FALSE;
-  phdr.datapad = FALSE;
-  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
-  dissect_ieee80211_common(tvb, pinfo, tree, IEEE80211_COMMON_OPT_BROKEN_FC|IEEE80211_COMMON_OPT_NORMAL_QOS, &phdr);
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_state2,
+     {"State 2", "wlan.sctor_id.state2",
+      FT_UINT32, BASE_HEX, NULL, 0xff000000,
+      NULL, HFILL }},
 
-/*
- * Dissect 802.11 with a variable-length link-layer header without qos elements
- * in data+qos frames and with no FCS (sent as WIDS frames by Cisco standalone
- * APs).
- */
-static int
-dissect_ieee80211_noqos(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  struct ieee_802_11_phdr phdr;
+    {&hf_ieee80211_tag_allocation_id,
+     {"Allocation ID", "wlan.ext_sched.alloc_id",
+      FT_UINT16, BASE_DEC, NULL, 0x000f,
+      NULL, HFILL }},
 
-  /* Construct a pseudo-header to hand to the common code. */
-  memset(&phdr, 0, sizeof(phdr));
-  phdr.decrypted = FALSE;
-  phdr.datapad = FALSE;
-  phdr.phy = PHDR_802_11_PHY_UNKNOWN;
-  dissect_ieee80211_common(tvb, pinfo, tree, 0, &phdr);
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_allocation_type,
+     {"Allocation Type", "wlan.ext_sched.alloc_type",
+      FT_UINT16, BASE_DEC, VALS(allocation_type), 0x0070,
+      NULL, HFILL }},
 
+    {&hf_ieee80211_tag_pseudo_static,
+     {"Pseudo-static", "wlan.ext_sched.p_static",
+      FT_BOOLEAN, 16, NULL, 0x0080,
+      NULL, HFILL }},
 
-/* ------------- */
-static guint
-retransmit_hash(gconstpointer k)
-{
-  const retransmit_key *key = (const retransmit_key *)k;
-  guint hash_val;
-  int   i;
+    {&hf_ieee80211_tag_truncatable,
+     {"Truncatable", "wlan.ext_sched.truncatable",
+      FT_BOOLEAN, 16, NULL, 0x0100,
+      NULL, HFILL }},
 
-  hash_val = 0;
-  for (i = 0; i < 6; i++)
-    hash_val += key->bssid[i];
+    {&hf_ieee80211_tag_extendable,
+     {"Extenedable", "wlan.ext_sched.extendable",
+      FT_BOOLEAN, 16, NULL, 0x0200,
+      NULL, HFILL }},
 
-  for (i = 0; i < 6; i++)
-    hash_val += key->src[i];
+    {&hf_ieee80211_tag_pcp_active,
+     {"PCP Active", "wlan.ext_sched.pcp_active",
+      FT_BOOLEAN, 16, NULL, 0x0400,
+      NULL, HFILL }},
 
-  return hash_val;
-}
+    {&hf_ieee80211_tag_lp_sc_used,
+     {"LP SC Used", "wlan.ext_sched.lp_sc_used",
+      FT_BOOLEAN, 16, NULL, 0x0800,
+      NULL, HFILL }},
 
-static gint
-retransmit_equal(gconstpointer k1, gconstpointer k2)
-{
-  const retransmit_key *key1 = (const retransmit_key *)k1;
-  const retransmit_key *key2 = (const retransmit_key *)k2;
+    {&hf_ieee80211_tag_src_aid,
+     {"Source AID", "wlan.ext_sched.src_id",
+      FT_UINT8, BASE_DEC, NULL, 0xff,
+      NULL, HFILL }},
 
-  return ((!memcmp(key1->bssid, key2->bssid, 6) && !memcmp(key1->src, key2->src, 6)) ? TRUE:FALSE);
-}
+    {&hf_ieee80211_tag_dest_aid,
+     {"Destination AID", "wlan.ext_sched.dest_id",
+      FT_UINT8, BASE_DEC, NULL, 0xff,
+      NULL, HFILL }},
 
-static guint
-frame_hash(gconstpointer k)
-{
-  guint32 frame = GPOINTER_TO_UINT(k);
+    {&hf_ieee80211_tag_alloc_start,
+     {"Allocation Start", "wlan.ext_sched.alloc_start",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-  return frame;
-}
+    {&hf_ieee80211_tag_alloc_block_duration,
+     {"Allocation Block Duration", "wlan.ext_sched.block_duration",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
 
-static gint
-frame_equal(gconstpointer k1, gconstpointer k2)
-{
-  guint32 frame1 = GPOINTER_TO_UINT(k1);
-  guint32 frame2 = GPOINTER_TO_UINT(k2);
+    {&hf_ieee80211_tag_num_blocks,
+     {"Number of Blocks", "wlan.ext_sched.num_blocks",
+      FT_UINT8, BASE_DEC, NULL, 0xff,
+      NULL, HFILL }},
 
-  return frame1==frame2;
-}
+    {&hf_ieee80211_tag_alloc_block_period,
+     {"Allocation Block Period", "wlan.ext_sched.alloc_block_period",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
 
-/*
- * EAPOL key description dissectors.
- */
-#define KEY_INFO_KEYDES_VERSION_MASK        0x0007
-#define KEY_INFO_KEY_TYPE_MASK              0x0008
-#define KEY_INFO_KEY_INDEX_MASK             0x0030
-#define KEY_INFO_INSTALL_MASK               0x0040
-#define KEY_INFO_KEY_ACK_MASK               0x0080
-#define KEY_INFO_KEY_MIC_MASK               0x0100
-#define KEY_INFO_SECURE_MASK                0x0200
-#define KEY_INFO_ERROR_MASK                 0x0400
-#define KEY_INFO_REQUEST_MASK               0x0800
-#define KEY_INFO_ENCRYPTED_KEY_DATA_MASK    0x1000
-#define KEY_INFO_SMK_MESSAGE_MASK           0x2000
+    {&hf_ieee80211_tag_aid,
+     {"AID", "wlan.sta_avail.aid",
+      FT_UINT16, BASE_DEC, NULL, 0x00ff,
+      NULL, HFILL }},
 
-#define KEYDES_VER_TYPE1        0x01
-#define KEYDES_VER_TYPE2        0x02
-#define KEYDES_VER_TYPE3        0x03
+    {&hf_ieee80211_tag_cbap,
+     {"CBAP", "wlan.sta_avail.cbap",
+      FT_BOOLEAN, 16, NULL, 0x0100,
+      NULL, HFILL }},
 
-static const value_string keydes_version_vals[] = {
-  { KEYDES_VER_TYPE1,     "RC4 Cipher, HMAC-MD5 MIC" },
-  { KEYDES_VER_TYPE2,     "AES Cipher, HMAC-SHA1 MIC" },
-  { KEYDES_VER_TYPE3,     "AES Cipher, AES-128-CMAC MIC" },
-  { 0, NULL }
-};
+    {&hf_ieee80211_tag_pp_avail,
+     {"PP Available", "wlan.sta_avail.pp_avail",
+      FT_BOOLEAN, 16, NULL, 0x0200,
+      NULL, HFILL }},
 
-static int proto_wlan_rsna_eapol = -1;
+    {&hf_ieee80211_tag_next_ati_start_time,
+     {"Start Time", "wlan.next_ati.start_time",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_keydes_version = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_type = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_index = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_install = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_ack = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_mic = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_secure = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_error = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_request = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_encrypted_key_data = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_keyinfo_smk_message = -1;
-static int hf_wlan_rsna_eapol_keydes_key_len = -1;
-static int hf_wlan_rsna_eapol_keydes_replay_counter = -1;
-static int hf_wlan_rsna_eapol_keydes_key_iv = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_nonce = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_rsc = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_id = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_mic = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_data_len = -1;
-static int hf_wlan_rsna_eapol_wpa_keydes_data = -1;
+    {&hf_ieee80211_tag_next_ati_duration,
+     {"ATI Duration", "wlan.next_ati.duration",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
 
-static gint ett_keyinfo = -1;
-static gint ett_wlan_rsna_eapol_keydes_data = -1;
+    {&hf_ieee80211_tag_old_bssid,
+     {"Old BSSID", "wlan.pcp_handover.old_bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "OLD_BSSID", HFILL }},
 
-static const true_false_string keyinfo_key_type_tfs = { "Pairwise Key", "Group Key" };
+    {&hf_ieee80211_tag_new_pcp_addr,
+     {"New PCP Address", "wlan.pcp_handover.new_pcp_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "New_PCP_Address", HFILL }},
 
-static int
-dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
-{
-  int         offset = 0;
-  guint16     keyinfo;
-  guint16     eapol_data_len;
-  proto_tree *keydes_tree;
-  proto_tree *ti = NULL;
-  static const int * wlan_rsna_eapol_wpa_keydes_keyinfo[] = {
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_keydes_version,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_type,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_index,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_install,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_ack,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_key_mic,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_secure,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_error,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_request,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_encrypted_key_data,
-    &hf_wlan_rsna_eapol_wpa_keydes_keyinfo_smk_message,
-    NULL
-  };
+    {&hf_ieee80211_tag_bssid,
+     {"BSSID", "wlan.quiet_res.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "BSS-ID", HFILL }},
 
-  /*
-   * RSNA key descriptors.
-   */
-  eapol_data_len = tvb_get_ntohs(tvb, offset+92);
-  keyinfo = tvb_get_ntohs(tvb, offset);
-  if (keyinfo & KEY_INFO_REQUEST_MASK) {
-    col_set_str(pinfo->cinfo, COL_INFO, "Key (Request)");
-    if (keyinfo & KEY_INFO_ERROR_MASK)
-      col_set_str(pinfo->cinfo, COL_INFO, "Key (Request, Error)");
-  } else if (keyinfo & KEY_INFO_KEY_TYPE_MASK) {
-    guint16 masked;
-    /* Windows is setting the Secure Bit on message 2 when rekeying, so we'll ignore it */
-    masked = keyinfo &
-      (KEY_INFO_INSTALL_MASK | KEY_INFO_KEY_ACK_MASK | KEY_INFO_KEY_MIC_MASK);
+    {&hf_ieee80211_tag_duplex_relay,
+     {"Duplex", "wlan.relay_capabilities.duplex",
+      FT_UINT8, BASE_DEC, NULL, 0x01,
+      NULL, HFILL }},
 
-    switch (masked) {
-    case KEY_INFO_KEY_ACK_MASK:
-      col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 1 of 4)");
-      break;
+    {&hf_ieee80211_tag_cooperation_relay,
+     {"Cooperation", "wlan.relay_capabilities.cooperation",
+      FT_BOOLEAN, 8, NULL, 0x02,
+      NULL, HFILL }},
 
-    case KEY_INFO_KEY_MIC_MASK:
-      /* We check the key length to differentiate between message 2 and 4 and just hope that
-      there are no strange implementations with key data and non-zero key length in message 4.
-      According to the IEEE specification, sections 11.6.6.3 and 11.6.6.5 we should
-      use the Secure Bit and/or the Nonce, but there are implementations ignoring the spec.
-      The Secure Bit is incorrectly set on rekeys for Windows clients for Message 2 and the Nonce is non-zero
-      in Message 4 in Bug 11994 (Apple?) */
-      if (eapol_data_len)
-        col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 2 of 4)");
-      else
-        col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 4 of 4)");
-      break;
+    {&hf_ieee80211_tag_tx_mode,
+     {"TX-Mode", "wlan.realy_trans_param.tx_mode",
+      FT_BOOLEAN, 8, NULL, 0x04,
+      NULL, HFILL }},
 
-    case (KEY_INFO_INSTALL_MASK | KEY_INFO_KEY_ACK_MASK | KEY_INFO_KEY_MIC_MASK):
-      col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 3 of 4)");
-      break;
-    }
-  } else {
-    if (keyinfo & KEY_INFO_KEY_ACK_MASK)
-      col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 1 of 2)");
-    else
-      col_set_str(pinfo->cinfo, COL_INFO, "Key (Group Message 2 of 2)");
-  }
+    {&hf_ieee80211_tag_link_change_interval,
+     {"Link Change Interval", "wlan.realy_trans_param.link_change_interval",
+      FT_UINT8, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0xff,
+      NULL, HFILL }},
 
-  proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_wlan_rsna_eapol_wpa_keydes_keyinfo,
-                                    ett_keyinfo, wlan_rsna_eapol_wpa_keydes_keyinfo,
-                                    ENC_BIG_ENDIAN, BMT_NO_APPEND);
-  offset += 2;
+    {&hf_ieee80211_tag_data_sensing_time,
+     {"Data Sensing Time", "wlan.realy_trans_param.data_sensing_time",
+      FT_UINT8, BASE_DEC, NULL, 0xff,
+      NULL, HFILL }},
 
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_key_len, tvb, offset,
-                      2, ENC_BIG_ENDIAN);
-  offset += 2;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_replay_counter, tvb,
-                      offset, 8, ENC_BIG_ENDIAN);
-  offset += 8;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_nonce, tvb, offset,
-                      32, ENC_NA);
-  offset += 32;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_keydes_key_iv, tvb,
-                      offset, 16, ENC_NA);
-  offset += 16;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_rsc, tvb, offset,
-                      8, ENC_NA);
-  offset += 8;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_id, tvb, offset, 8,
-                      ENC_NA);
-  offset += 8;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_mic, tvb, offset,
-                      16, ENC_NA);
-  offset += 16;
-  proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_data_len, tvb,
-                      offset, 2, ENC_BIG_ENDIAN);
-  offset += 2;
-  if (eapol_data_len != 0) {
-    ti = proto_tree_add_item(tree, hf_wlan_rsna_eapol_wpa_keydes_data,
-                             tvb, offset, eapol_data_len, ENC_NA);
-    if ((keyinfo & KEY_INFO_ENCRYPTED_KEY_DATA_MASK) ||
-        !(keyinfo & KEY_INFO_KEY_TYPE_MASK)) {
-      /* RSN: EAPOL-Key Key Data is encrypted.
-       * WPA: Group Keys use encrypted Key Data.
-       * Cannot parse this without knowing the key.
-       * IEEE 802.11i-2004 8.5.2.
-       */
-    } else {
-      keydes_tree = proto_item_add_subtree(ti, ett_wlan_rsna_eapol_keydes_data);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, keydes_tree,
-                                       tvb_reported_length_remaining(tvb, offset),
-                                       -1, NULL);
-    }
-  }
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_tag_first_period,
+     {"First Period", "wlan.realy_trans_param.first_period",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
 
-/* It returns the algorithm used for decryption and the header and trailer lengths. */
-static tvbuff_t *
-try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PAIRPDCAP_KEY_ITEM used_key)
-{
-  const guint8      *enc_data;
-  tvbuff_t          *decr_tvb = NULL;
-  guint32            dec_caplen;
-  guchar             dec_data[AIRPDCAP_MAX_CAPLEN];
+    {&hf_ieee80211_tag_second_period,
+     {"Second Period", "wlan.realy_trans_param.second_period",
+      FT_UINT16, BASE_DEC, NULL, 0xffff,
+      NULL, HFILL }},
 
-  if (!enable_decryption)
-    return NULL;
+    {&hf_ieee80211_tag_initiator,
+     {"Initiator", "wlan.beam_refine.initiator",
+      FT_BOOLEAN, 40, NULL, 0x0000000001,
+      NULL, HFILL }},
 
-  /* get the entire packet                                  */
-  enc_data = tvb_get_ptr(tvb, 0, len+offset);
+    {&hf_ieee80211_tag_tx_train_res,
+     {"TX-train-response", "wlan.beam_refine.tx_train_res",
+      FT_BOOLEAN, 40, NULL, 0x0000000002,
+      NULL, HFILL }},
 
-  /*  process packet with AirPDcap                              */
-  if (AirPDcapPacketProcess(&airpdcap_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen,
-                            used_key, FALSE)==AIRPDCAP_RET_SUCCESS)
-  {
-    guint8 *tmp;
-    *algorithm=used_key->KeyType;
-    switch (*algorithm) {
-      case AIRPDCAP_KEY_TYPE_WEP:
-        *sec_header=AIRPDCAP_WEP_HEADER;
-        *sec_trailer=AIRPDCAP_WEP_TRAILER;
-        break;
-      case AIRPDCAP_KEY_TYPE_CCMP:
-        *sec_header=AIRPDCAP_RSNA_HEADER;
-        *sec_trailer=AIRPDCAP_CCMP_TRAILER;
-        break;
-      case AIRPDCAP_KEY_TYPE_TKIP:
-        *sec_header=AIRPDCAP_RSNA_HEADER;
-        *sec_trailer=AIRPDCAP_TKIP_TRAILER;
-        break;
-      default:
-        return NULL;
-    }
+    {&hf_ieee80211_tag_rx_train_res,
+     {"RX-train-response", "wlan.beam_refine.rx_train_res",
+      FT_BOOLEAN, 40, NULL, 0x0000000004,
+      NULL, HFILL }},
 
-    /* allocate buffer for decrypted payload                      */
-    tmp = (guint8 *)wmem_memdup(pinfo->pool, dec_data+offset, dec_caplen-offset);
+    {&hf_ieee80211_tag_tx_trn_ok,
+     {"TX-TRN-OK", "wlan.beam_refine.tx_trn_ok",
+      FT_BOOLEAN, 40, NULL, 0x0000000008,
+      NULL, HFILL }},
 
-    len = dec_caplen-offset;
+    {&hf_ieee80211_tag_txss_fbck_req,
+     {"TXSS-FBCK-REQ", "wlan.beam_refine.txss_fbck_req",
+      FT_BOOLEAN, 40, NULL, 0x0000000010,
+      NULL, HFILL }},
 
-    /* decrypt successful, let's set up a new data tvb.              */
-    decr_tvb = tvb_new_child_real_data(tvb, tmp, len, len);
-  }
+    {&hf_ieee80211_tag_bs_fbck,
+     {"BS-FBCK", "wlan.beam_refine.bs_fbck",
+      FT_UINT40, BASE_DEC, NULL, 0x00000007e0,
+      NULL, HFILL }},
 
-  return decr_tvb;
-}
+    {&hf_ieee80211_tag_bs_fbck_antenna_id,
+     {"BS-FBCK Anetenna ID", "wlan.beam_refine.bs_fbck_antenna_id",
+      FT_UINT40, BASE_DEC, NULL, 0x0000001800,
+      NULL, HFILL }},
 
-/* Collect our WEP and WPA keys */
-static void
-set_airpdcap_keys(void)
-{
-  guint                     i;
-  AIRPDCAP_KEYS_COLLECTION  *keys = g_new(AIRPDCAP_KEYS_COLLECTION, 1);
-  GByteArray                *bytes = NULL;
+    {&hf_ieee80211_tag_snr_requested,
+     {"SNR Requested", "wlan.beam_refine.snr_req",
+      FT_BOOLEAN, 40, NULL, 0x0000002000,
+      NULL, HFILL }},
 
-  keys->nKeys = 0;
+    {&hf_ieee80211_tag_channel_measurement_requested,
+     {"Channel Measurement Requested", "wlan.beam_refine.ch_measure_req",
+      FT_BOOLEAN, 40, NULL, 0x0000004000,
+      NULL, HFILL }},
 
-  for (i = 0; (uat_wep_key_records != NULL) && (i < num_wepkeys_uat) && (i < MAX_ENCRYPTION_KEYS); i++)
-  {
-    decryption_key_t *dk;
-    dk = parse_key_string(uat_wep_key_records[i].string, uat_wep_key_records[i].key);
+    {&hf_ieee80211_tag_number_of_taps_requested,
+     {"Number of Taps Requested", "wlan.beam_refine.taps_req",
+      FT_UINT40, BASE_DEC | BASE_VAL64_STRING, VALS64(number_of_taps_values), 0x0000018000,
+      NULL, HFILL }},
 
-    if (dk != NULL)
-    {
-      AIRPDCAP_KEY_ITEM          key;
-      if (dk->type == AIRPDCAP_KEY_TYPE_WEP)
-      {
-        gboolean res;
-        key.KeyType = AIRPDCAP_KEY_TYPE_WEP;
+    {&hf_ieee80211_tag_sector_id_order_req,
+     {"Sector ID Order Requested", "wlan.beam_refine.sector_id_req",
+      FT_BOOLEAN, 40, NULL, 0x0000020000,
+      NULL, HFILL }},
 
-        bytes = g_byte_array_new();
-        res = hex_str_to_bytes(dk->key->str, bytes, FALSE);
+    {&hf_ieee80211_tag_snr_present,
+     {"SNR Present", "wlan.beam_refine.snr_present",
+      FT_BOOLEAN, 40, NULL, 0x0000040000,
+      NULL, HFILL }},
 
-        if (dk->key->str && res && (bytes->len > 0) && (bytes->len <= AIRPDCAP_WEP_KEY_MAXLEN))
-        {
-          /*
-           * WEP key is correct (well, the can be even or odd, so it is not
-           * a real check, I think... is a check performed somewhere in the
-           * AirPDcap function???)
-           */
-          memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len);
-          key.KeyData.Wep.WepKeyLen = bytes->len;
-          keys->Keys[keys->nKeys] = key;
-          keys->nKeys += 1;
-        }
-      }
-      else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PWD)
-      {
-        key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PWD;
+    {&hf_ieee80211_tag_channel_measurement_present,
+     {"Channel Measurement Present", "wlan.beam_refine.ch_measure_present",
+      FT_BOOLEAN, 40, NULL, 0x0000080000,
+      NULL, HFILL }},
 
-        /* XXX - This just lops the end if the key off if it's too long.
-         *       Should we handle this more gracefully? */
-        g_strlcpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1);
+    {&hf_ieee80211_tag_tap_delay_present,
+     {"Tap Delay Present", "wlan.beam_refine.tap_delay_present",
+      FT_BOOLEAN, 40, NULL, 0x0000100000,
+      NULL, HFILL }},
 
-        key.UserPwd.SsidLen = 0;
-        if ((dk->ssid != NULL) && (dk->ssid->len <= AIRPDCAP_WPA_SSID_MAX_LEN))
-        {
-          memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len);
-          key.UserPwd.SsidLen = dk->ssid->len;
-        }
+    {&hf_ieee80211_tag_number_of_taps_present,
+     {"Number of Taps Present", "wlan.beam_refine.taps_present",
+      FT_UINT40, BASE_DEC | BASE_VAL64_STRING, VALS64(number_of_taps_values), 0x0000600000,
+      NULL, HFILL }},
 
-        keys->Keys[keys->nKeys] = key;
-        keys->nKeys += 1;
-      }
-      else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PSK)
-      {
-        key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PSK;
+    {&hf_ieee80211_tag_number_of_measurement,
+     {"Number of Measurements", "wlan.beam_refine.num_measurement",
+      FT_UINT40, BASE_DEC, NULL, 0x003f800000,
+      NULL, HFILL }},
 
-        bytes = g_byte_array_new();
-        hex_str_to_bytes(dk->key->str, bytes, FALSE);
+    {&hf_ieee80211_tag_sector_id_order_present,
+     {"Sector ID Order Present", "wlan.beam_refine.sector_id_present",
+      FT_BOOLEAN, 40, NULL, 0x0040000000,
+      NULL, HFILL }},
 
-        /* XXX - Pass the correct array of bytes... */
-        if (bytes->len <= AIRPDCAP_WPA_PSK_LEN) {
-          memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len);
+    {&hf_ieee80211_tag_number_of_beams,
+     {"Number of Beams", "wlan.beam_refine.num_beams",
+      FT_UINT40, BASE_DEC, NULL, 0x0f80000000,
+      NULL, HFILL }},
 
-          keys->Keys[keys->nKeys] = key;
-          keys->nKeys += 1;
-        }
-      }
-      free_key_string(dk);
-      if (bytes) {
-        g_byte_array_free(bytes, TRUE);
-        bytes = NULL;
-      }
-    }
-  }
+    {&hf_ieee80211_tag_mid_extension,
+     {"MID Extension", "wlan.beam_refine.mid_ext",
+      FT_BOOLEAN, 40, NULL, 0x1000000000,
+      NULL, HFILL }},
 
-  /* Now set the keys */
-  AirPDcapSetKeys(&airpdcap_ctx, keys->Keys, keys->nKeys);
-  g_free(keys);
-}
+    {&hf_ieee80211_tag_capability_request,
+     {"Capability Request", "wlan.beam_refine.cap_req",
+      FT_BOOLEAN, 40, NULL, 0x2000000000,
+      NULL, HFILL }},
 
-static void
-init_wepkeys(void)
-{
+    {&hf_ieee80211_tag_beam_refine_reserved,
+     {"Reserved", "wlan.beam_refine.reserved",
+      FT_UINT40, BASE_DEC, NULL, 0xc000000000,
+      NULL, HFILL }},
 
-  /*
-   * XXX - AirPDcap - That God sends it to us beautiful (che dio ce la mandi bona)
-   * The next lines will add a key to the AirPDcap context. The keystring will be added
-   * to the old WEP array too, but we don't care, because the packets will come here
-   * already decrypted... One of these days we will fix this too
-   */
-  set_airpdcap_keys();
-}
+    {&hf_ieee80211_tag_nextpcp_list,
+      {"AID of NextPCP", "wlan.next_pcp.list",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-/*
- * This code had been taken from AirSnort crack.c function classify()
- * Permission granted by snax <at> shmoo dot com
- * weak_iv - determine which key byte an iv is useful in resolving
- * parm     - p, pointer to the first byte of an IV
- * return   -  n - this IV is weak for byte n of a WEP key
- *            -1 - this IV is not weak for any key bytes
- *
- * This function tests for IVs that are known to satisfy the criteria
- * for a weak IV as specified in FMS section 7.1
- *
- */
-static int
-weak_iv(guchar *iv)
-{
-  guchar sum, k;
+    {&hf_ieee80211_tag_nextpcp_token,
+      {"NextPCP List Token", "wlan.next_pcp.token",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-  if ((iv[1] == 255) && (iv[0] > 2) && (iv[0] < 16)) {
-    return iv[0] -3;
-  }
+    {&hf_ieee80211_tag_reamaining_BI,
+      {"Remaining BI's", "wlan.pcp_handover.remaining_BIs",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-  sum = iv[0] + iv[1];
-  if (sum == 1) {
-    if (iv[2] <= 0x0a) {
-      return iv[2] +2;
-    }
-    else if (iv[2] == 0xff) {
-      return 0;
-    }
-  }
-  k = 0xfe - iv[2];
-  if ((sum == k)  && ((iv[2] >= 0xf2) && (iv[2] <= 0xfe) && (iv[2] != 0xfd))) {
-    return k;
-  }
-  return -1;
-}
+    {&hf_ieee80211_tag_request_token,
+      {"Request Token", "wlan.request_token",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-static void
-wlan_retransmit_init(void)
-{
-  if (fc_analyse_retransmit_table) {
-    g_hash_table_destroy(fc_analyse_retransmit_table);
-    fc_analyse_retransmit_table = NULL;
-  }
+    {&hf_ieee80211_tag_bi_start_time,
+      {"BI Start Time", "wlan.bi_start_time",
+       FT_UINT32, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-  if (fc_first_frame_table) {
-    g_hash_table_destroy(fc_first_frame_table);
-    fc_first_frame_table = NULL;
-  }
+    {&hf_ieee80211_tag_sleep_cycle,
+      {"Sleep Cycle", "wlan.sleep_cycle",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-  if (wlan_subdissector)
-    return;
+    {&hf_ieee80211_tag_num_awake_bis,
+      {"Number of Awake/Doze BIs", "wlan.num_awake_bis",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-  fc_analyse_retransmit_table= g_hash_table_new(retransmit_hash, retransmit_equal);
-  fc_first_frame_table = g_hash_table_new(frame_hash, frame_equal);
+    {&hf_ieee80211_ff_dmg_action_code,
+     {"DMG Action", "wlan.fixed.dmg_act",
+      FT_UINT8, BASE_HEX, VALS(ff_dmg_action_flags), 0,
+      "Action Code", HFILL }},
 
-}
+    {&hf_ieee80211_ff_unprotected_dmg_action_code,
+     {"Unprotected DMG Action", "wlan.fixed.unprotected_dmg_act",
+      FT_UINT8, BASE_HEX, VALS(ff_unprotected_dmg_action_flags), 0,
+      "Action Code", HFILL }},
 
-static int
-dissect_data_encap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
-{
-  int         offset = 0;
-  guint8      type;
-  int         tagged_parameter_tree_len;
-  proto_tree *tagged_tree;
+    {&hf_ieee80211_ff_dmg_pwr_mgmt,
+      {"DMG Power Management", "wlan.dmg.pwr_mgmt",
+       FT_BOOLEAN, 8, NULL, 0x01,
+       NULL, HFILL }},
 
-  type = tvb_get_guint8(tvb, offset);
-  proto_tree_add_item(tree, hf_ieee80211_data_encap_payload_type, tvb, offset,
-                      1, ENC_LITTLE_ENDIAN);
-  offset += 1;
-  switch (type) {
-  case 1:
-    col_set_str(pinfo->cinfo, COL_PROTOCOL, "RRB");
-    /* TODO: IEEE 802.11r */
-    break;
-  case 2:
-    col_set_str(pinfo->cinfo, COL_PROTOCOL, "TDLS");
-    col_clear(pinfo->cinfo, COL_INFO);
-    offset += add_ff_action(tree, tvb, pinfo, offset);
-    tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
-    if (tagged_parameter_tree_len > 0) {
-      tagged_tree = get_tagged_parameter_tree(tree, tvb, offset,
-                                              tagged_parameter_tree_len);
-      ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree,
-                                       tagged_parameter_tree_len, -1, NULL);
-    }
-    break;
-  }
-  return tvb_captured_length(tvb);
-}
+    {&hf_ieee80211_ff_subject_address,
+      {"Subject Address", "wlan.dmg.subject_addr",
+       FT_ETHER, BASE_NONE, NULL, 0,
+       "MAC address of requested STA", HFILL }},
 
-void
-proto_register_ieee80211(void)
-{
+    {&hf_ieee80211_ff_handover_reason,
+      {"Handover Reason", "wlan.dmg.handover_reason",
+       FT_UINT8, BASE_DEC, NULL, 0x03,
+       NULL, HFILL }},
 
-  static hf_register_info hf[] = {
-    {&hf_ieee80211_fc_field,
-     {"Frame Control Field", "wlan.fc",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "MAC Frame control", HFILL }},
+    {&hf_ieee80211_ff_handover_remaining_bi,
+      {"Handover Remaining BI", "wlan.dmg.handover_remaining_bi",
+       FT_UINT8, BASE_DEC, NULL, 0x01,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_proto_version,
-     {"Version", "wlan.fc.version",
-      FT_UINT8, BASE_DEC, NULL, 0x03,
-      "MAC Protocol version", HFILL }},  /* 0 */
+    {&hf_ieee80211_ff_handover_result,
+      {"Handover Result", "wlan.dmg.handover_result",
+       FT_UINT8, BASE_DEC, NULL, 0x01,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_frame_type,
-     {"Type", "wlan.fc.type",
-      FT_UINT8, BASE_DEC, VALS(frame_type), 0x0C,
-      "Frame type", HFILL }},
+    {&hf_ieee80211_ff_handover_reject_reason,
+      {"Handover Reject Reason", "wlan.dmg.handover_reject_reason",
+       FT_UINT8, BASE_DEC, NULL, 0x03,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_frame_subtype,
-     {"Subtype", "wlan.fc.subtype",
-      FT_UINT8, BASE_DEC, NULL, 0xF0,
-      "Frame subtype", HFILL }},  /* 2 */
+    {&hf_ieee80211_ff_destination_reds_aid,
+      {"Destination REDS AID", "wlan.dmg.destination_reds_aid",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_frame_type_subtype,
-     {"Type/Subtype", "wlan.fc.type_subtype",
-      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &frame_type_subtype_vals_ext, 0x0,
-      "Type and subtype combined (first byte: type, second byte: subtype)", HFILL }},
+    {&hf_ieee80211_ff_destination_aid,
+      {"Destination AID", "wlan.dmg.destination_aid",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_frame_extension,
-     {"Control Frame Extension", "wlan.fc.extension",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_realy_aid,
+      {"Relay AID", "wlan.dmg.realy_aid",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_ff_source_aid,
+      {"Source AID", "wlan.dmg.source_aid",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_flags,
-     {"Flags", "wlan.flags",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_timing_offset,
+      {"Timing Offset", "wlan.dmg.timing_offset",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_data_ds,
-     {"DS status", "wlan.fc.ds",
-      FT_UINT8, BASE_HEX, VALS(tofrom_ds), (FLAG_FROM_DS|FLAG_TO_DS),
-      "Data-frame DS-traversal status", HFILL }},  /* 3 */
+    {&hf_ieee80211_ff_sampling_frequency_offset,
+      {"Sampling Frequency Offset", "wlan.dmg.sampling_frequency_offset",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_to_ds,
-     {"To DS", "wlan.fc.tods",
-      FT_BOOLEAN, 8, TFS(&tods_flag), FLAG_TO_DS,
-      "To DS flag", HFILL }},    /* 4 */
+    {&hf_ieee80211_ff_relay_operation_type,
+      {"Relay Operation Type", "wlan.dmg.relay_operation_type",
+       FT_UINT8, BASE_DEC, NULL, 0x03,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_from_ds,
-     {"From DS", "wlan.fc.fromds",
-      FT_BOOLEAN, 8, TFS(&fromds_flag), FLAG_FROM_DS,
-      "From DS flag", HFILL }},    /* 5 */
+    {&hf_ieee80211_ff_peer_sta_aid,
+      {"Peer STA AID", "wlan.dmg.peer_sta_aid",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_more_frag,
-     {"More Fragments", "wlan.fc.frag",
-      FT_BOOLEAN, 8, TFS(&more_fragments), FLAG_MORE_FRAGMENTS,
-      "More Fragments flag", HFILL }},  /* 6 */
+    {&hf_ieee80211_ff_snr,
+      {"SNR", "wlan.dmg.snr",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_retry,
-     {"Retry", "wlan.fc.retry",
-      FT_BOOLEAN, 8, TFS(&retry_flags), FLAG_RETRY,
-      "Retransmission flag", HFILL }},
+    {&hf_ieee80211_ff_internal_angle,
+      {"Internal Angle", "wlan.dmg.internal_angle",
+       FT_UINT8, BASE_DEC, NULL, 0xfe,
+       NULL, HFILL }},
 
-    { &hf_ieee80211_fc_analysis_retransmission,
-     {"Retransmission", "wlan.analysis.retransmission",
-      FT_NONE, BASE_NONE, NULL, 0x0,
-      "This frame is a suspected wireless retransmission", HFILL }},
+    {&hf_ieee80211_ff_recommend,
+      {"Recommend", "wlan.dmg.recommend",
+       FT_UINT8, BASE_DEC, NULL, 0x01,
+       NULL, HFILL }},
 
-    { &hf_ieee80211_fc_analysis_retransmission_frame,
-     {"Retransmission of frame", "wlan.analysis.retransmission_frame",
-      FT_FRAMENUM, BASE_NONE, NULL, 0x0,
-      "This is a retransmission of frame #", HFILL }},
+    {&hf_ieee80211_ff_fst_action_code,
+      {"FST Action Code", "wlan.fst.action_code",
+       FT_UINT8, BASE_HEX, VALS(ff_fst_action_flags), 0,
+       "Action Code", HFILL }},
 
-    {&hf_ieee80211_fc_pwr_mgt,
-     {"PWR MGT", "wlan.fc.pwrmgt",
-      FT_BOOLEAN, 8, TFS(&pm_flags), FLAG_POWER_MGT,
-      "Power management status", HFILL }},
+    {&hf_ieee80211_ff_llt,
+      {"Link Loss Timeout", "wlan.fst.llt",
+       FT_UINT32, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_more_data,
-     {"More Data", "wlan.fc.moredata",
-      FT_BOOLEAN, 8, TFS(&md_flags), FLAG_MORE_DATA,
-      "More data flag", HFILL }},
+    {&hf_ieee80211_ff_fsts_id,
+      {"FSTS ID", "wlan.session_trans.fsts_id",
+       FT_UINT32, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_protected,
-     {"Protected flag", "wlan.fc.protected",
-      FT_BOOLEAN, 8, TFS(&protected_flags), FLAG_PROTECTED,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_mmpdu_len,
+      {"MMPDU Length", "wlan.fst.mmpdu_length",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_order,
-     {"Order flag", "wlan.fc.order",
-      FT_BOOLEAN, 8, TFS(&order_flags), FLAG_ORDER,
-      "Strictly ordered flag", HFILL }},
+    {&hf_ieee80211_ff_mmpdu_ctrl,
+      {"MMPDU Control", "wlan.fst.mmpdu_ctrl",
+       FT_UINT16, BASE_HEX, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_assoc_id,
-     {"Association ID", "wlan.aid",
-      FT_UINT16, BASE_DEC, NULL, 0x3FFF,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_oct_mmpdu,
+      {"OCT MMPDU", "wlan.fst.oct_mmpdu",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_did_duration,
-     {"Duration", "wlan.duration",
-      FT_UINT16, BASE_DEC, NULL, 0x7FFF,
+    {&hf_ieee80211_ff_vht_mimo_cntrl,
+     {"VHT MIMO Control", "wlan.vht.mimo_control.control",
+      FT_UINT24, BASE_HEX, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_addr_da,
-     {"Destination address", "wlan.da",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Destination Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_nc_index,
+     {"Nc Index", "wlan.vht.mimo_control.ncindex",
+      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_nc_index_vals), 0x000007,
+      "Number of Columns Less One", HFILL }},
 
-    { &hf_ieee80211_addr_da_resolved,
-      {"Destination address (resolved)", "wlan.da_resolved", FT_STRING,
-        BASE_NONE, NULL, 0x0,
-        "Destination Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_nr_index,
+     {"Nr Index", "wlan.vht.mimo_control.nrindex",
+      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_nr_index_vals), 0x000038,
+      "Number of Rows Less One", HFILL }},
 
-    {&hf_ieee80211_addr_sa,
-     {"Source address", "wlan.sa",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Source Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_channel_width,
+     {"Channel Width", "wlan.vht.mimo_control.chanwidth",
+      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_channel_width_vals), 0x0000C0,
+      NULL, HFILL }},
 
-    { &hf_ieee80211_addr_sa_resolved,
-      {"Source address (resolved)", "wlan.sa_resolved", FT_STRING,
-       BASE_NONE, NULL, 0x0,
-       "Source Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_grouping,
+     {"Grouping (Ng)", "wlan.vht.mimo_control.grouping",
+      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_grouping_vals), 0x000300,
+      NULL, HFILL }},
 
-    { &hf_ieee80211_addr,
-      {"Hardware address", "wlan.addr",
-       FT_ETHER, BASE_NONE, NULL, 0,
-       "SA, DA, BSSID, RA or TA Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_codebook_info,
+     {"Codebook Information", "wlan.vht.mimo_control.codebookinfo",
+      FT_UINT24, BASE_HEX, NULL, 0x000400,
+      NULL, HFILL }},
 
-    { &hf_ieee80211_addr_resolved,
-      { "Hardware address (resolved)", "wlan.addr_resolved", FT_STRING,
-        BASE_NONE, NULL, 0x0,
-        "SA, DA, BSSID, RA or TA Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_feedback_type,
+     {"Feedback Type", "wlan.vht.mimo_control.feedbacktype",
+      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_feedback_vals), 0x000800,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_addr_ra,
-     {"Receiver address", "wlan.ra",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Receiving Station Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_remaining_feedback_seg,
+     {"Remaining Feedback Segments", "wlan.vht.mimo_control.remainingfeedbackseg",
+      FT_UINT24, BASE_HEX, NULL, 0x007000,
+      NULL, HFILL }},
 
-    { &hf_ieee80211_addr_ra_resolved,
-      {"Receiver address (resolved)", "wlan.ra_resolved", FT_STRING, BASE_NONE,
-        NULL, 0x0, "Receiving Station Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_first_feedback_seg,
+     {"First Feedback Segments", "wlan.vht.mimo_control.firstfeedbackseg",
+      FT_UINT24, BASE_HEX, NULL, 0x008000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_addr_ta,
-     {"Transmitter address", "wlan.ta",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Transmitting Station Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_reserved,
+     {"Reserved", "wlan.vht.mimo_control.reserved",
+      FT_UINT24, BASE_HEX, NULL, 0x030000,
+      NULL, HFILL }},
 
-    { &hf_ieee80211_addr_ta_resolved,
-      {"Transmitter address (resolved)", "wlan.ta_resolved", FT_STRING,
-        BASE_NONE, NULL, 0x0,
-        "Transmitting Station Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_ff_vht_mimo_cntrl_sounding_dialog_token_number,
+     {"Sounding Dialog Token Number", "wlan.vht.mimo_control.sounding_dialog_tocken_nbr",
+      FT_UINT24, BASE_HEX, NULL, 0xFC0000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_addr_bssid,
-     {"BSS Id", "wlan.bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Basic Service Set ID", HFILL }},
+    {&hf_ieee80211_ff_vht_action,
+      {"VHT Action", "wlan.vht.action",
+       FT_UINT8, BASE_DEC, VALS(vht_action_vals), 0,
+       NULL, HFILL }},
 
-    { &hf_ieee80211_addr_bssid_resolved,
-      {"BSS Id (resolved)", "wlan.bssid_resolved", FT_STRING, BASE_NONE, NULL,
-        0x0, "Basic Service Set ID (resolved)", HFILL }},
+    {&hf_ieee80211_vht_compressed_beamforming_report,
+      {"VHT Compressed Beamforming Report", "wlan.vht.compressed_beamforming_report",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_addr_staa,
-     {"STA address", "wlan.staa",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Station Hardware Address", HFILL }},
+    {&hf_ieee80211_vht_mu_exclusive_beamforming_report,
+      {"VHT MU Exclusive Beamforming Report","wlan.vht.exclusive_beamforming_report",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    { &hf_ieee80211_addr_staa_resolved,
-      {"STA address (resolved)", "wlan.staa_resolved", FT_STRING, BASE_NONE, NULL,
-        0x0, "Station Hardware Address (resolved)", HFILL }},
+    {&hf_ieee80211_vht_compressed_beamforming_report_snr,
+      {"Signal to Noise Ratio (SNR)", "wlan.vht.compressed_beamforming_report.snr",
+       FT_INT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_frag_number,
-     {"Fragment number", "wlan.frag",
-      FT_UINT16, BASE_DEC, NULL, 0x000F,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_compressed_beamforming_phi_angle,
+      {"PHI", "wlan.vht.compressed_beamforming_report.phi",
+       FT_NONE, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_seq_number,
-     {"Sequence number", "wlan.seq",
-      FT_UINT16, BASE_DEC, NULL, 0xFFF0,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_compressed_beamforming_psi_angle,
+      {"PSI", "wlan.vht.compressed_beamforming_report.psi",
+       FT_NONE, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_control_field,
-     {"Mesh Control Field", "wlan.mesh.control_field",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_compressed_beamforming_feedback_matrix,
+      {"Compressed Beamforming Feedback Matrix", "wlan.vht.compressed_beamforming_report.feedback_matrix",
+       FT_NONE, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos,
-     {"Qos Control", "wlan.qos",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_mu_Exclusive_beamforming_delta_snr,
+      {"Delta SNR for space-time stream Nc for subcarrier k", "wlan.vht.exclusive_beamforming_report.delta_snr",
+       FT_NONE, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos_tid,
-     {"TID", "wlan.qos.tid",
-      FT_UINT16, BASE_DEC, NULL, 0x000F,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_group_id_management,
+      {"Group ID Management", "wlan.vht.group_id_management",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos_priority,
-     {"Priority", "wlan.qos.priority",
-      FT_UINT16, BASE_DEC, VALS(ieee80211_qos_tags_acs), 0x0007,
-      "802.1D Tag", HFILL }},
+    {&hf_ieee80211_vht_membership_status_array,
+      {"Membership Status Array", "wlan.vht.membership_status_array",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos_eosp,
-     {"EOSP", "wlan.qos.eosp",
-      FT_BOOLEAN, 16, TFS(&eosp_flag), QOS_FLAG_EOSP,
-      "EOSP Field", HFILL }},
+      {&hf_ieee80211_vht_user_position_array,
+        {"User Position Array", "wlan.vht.user_position_array",
+         FT_BYTES, BASE_NONE, NULL, 0,
+         NULL, HFILL }},
 
-    {&hf_ieee80211_qos_bit4,
-     {"QoS bit 4", "wlan.qos.bit4",
-      FT_BOOLEAN, 16, TFS(&bit4_flag), QOS_FLAG_EOSP,
-      NULL, HFILL }},
+      {&hf_ieee80211_vht_membership_status_field,
+        {"Membership Status Field", "wlan.vht.membership_status_array.field",
+         FT_UINT8, BASE_DEC, NULL, 0,
+         NULL, HFILL }},
 
-    {&hf_ieee80211_qos_ack_policy,
-     {"Ack Policy", "wlan.qos.ack",
-      FT_UINT16, BASE_HEX,  VALS(ack_policy), 0x0060,
-      NULL, HFILL }},
+      {&hf_ieee80211_vht_user_position_field,
+        {"User Position Field", "wlan.vht.user_position_array.field",
+         FT_UINT8, BASE_DEC, NULL, 0,
+         NULL, HFILL }},
 
-    {&hf_ieee80211_qos_amsdu_present,
-     {"Payload Type", "wlan.qos.amsdupresent",
-      FT_BOOLEAN, 16, TFS(&ieee80211_qos_amsdu_present_flag), 0x0080,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_operation_mode_notification,
+      {"Operation Mode Notification", "wlan.vht.operation_mode_notification",
+       FT_BYTES, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos_txop_limit,
-     {"TXOP Limit", "wlan.qos.txop_limit",
-      FT_UINT16, BASE_DEC, NULL, 0xFF00,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_he_action,
+      {"HE Action", "wlan.he.action",
+       FT_UINT8, BASE_DEC, VALS(he_action_vals), 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_qos_ps_buf_state,
-     {"QAP PS Buffer State", "wlan.qos.ps_buf_state",
-      FT_UINT16, BASE_HEX, NULL, 0xFF00,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_nc_index,
+     {"Nc Index", "wlan.he.mimo.nc_index",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000007, NULL, HFILL }},
 
-    {&hf_ieee80211_qos_buf_state_indicated,
-     {"Buffer State Indicated", "wlan.qos.buf_state_indicated",
-      FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_nr_index,
+     {"Nr Index", "wlan.he.mimo.nr_index",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000038, NULL, HFILL }},
 
-    {&hf_ieee80211_qos_highest_pri_buf_ac,
-     {"Highest-Priority Buffered AC", "wlan.qos.highest_pri_buf_ac",
-       FT_UINT16, BASE_DEC, VALS(wme_acs), 0x0C00,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_bw,
+     {"BW", "wlan.he.mimo.bw",
+      FT_UINT40, BASE_DEC, NULL, 0x00000000C0, NULL, HFILL }},
 
-    {&hf_ieee80211_qos_qap_buf_load,
-     {"QAP Buffered Load", "wlan.qos.qap_buf_load",
-      FT_UINT16, BASE_DEC, NULL, 0xF000,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_grouping,
+     {"Grouping", "wlan.he.mimo.grouping",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000100, NULL, HFILL }},
 
-    {&hf_ieee80211_qos_txop_dur_req,
-     {"TXOP Duration Requested", "wlan.qos.txop_dur_req",
-      FT_UINT16, BASE_DEC, NULL, 0xFF00,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_codebook_info,
+     {"Codebook Information", "wlan.he.mimo.codebook_info",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000200, NULL, HFILL }},
 
-    {&hf_ieee80211_qos_queue_size,
-     {"Queue Size", "wlan.qos.queue_size",
-      FT_UINT16, BASE_DEC, NULL, 0xFF00,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_feedback_type,
+     {"Feedback Type", "wlan.he.mimo.feedback_type",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000C00, NULL, HFILL }},
 
-    {&hf_ieee80211_fcs,
-     {"Frame check sequence", "wlan.fcs",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      "Frame Check Sequence (FCS)", HFILL }},
+    {&hf_he_mimo_control_remaining_feedback_segs,
+     {"Remaining Feedback Segments", "wlan.he.mimo.remaining_feedback_segs",
+      FT_UINT40, BASE_DEC, NULL, 0x0000007000, NULL, HFILL }},
 
-    {&hf_ieee80211_fcs_status,
-     {"FCS Status", "wlan.fcs.status",
-      FT_UINT8, BASE_NONE, VALS(proto_checksum_vals), 0x0,
-      NULL, HFILL }},
+    {&hf_he_mimo_control_first_feedback_seg,
+     {"First Feedback Segment", "wlan.he.mimo.first_feedback_seg",
+      FT_UINT40, BASE_DEC, NULL, 0x0000008000, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_overlap,
-      {"Fragment overlap", "wlan.fragment.overlap",
-       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-       "Fragment overlaps with other fragments", HFILL }},
+    {&hf_he_mimo_control_ru_start_index,
+     {"RU Start Index", "wlan.he.mimo.ru_start_index",
+      FT_UINT40, BASE_HEX, NULL, 0x00007F0000, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_overlap_conflict,
-      {"Conflicting data in fragment overlap", "wlan.fragment.overlap.conflict",
-       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-       "Overlapping fragments contained conflicting data", HFILL }},
+    {&hf_he_mimo_control_ru_end_index,
+     {"RU End Index", "wlan.he.mimo.ru_end_index",
+      FT_UINT40, BASE_HEX, NULL, 0x003F800000, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_multiple_tails,
-      {"Multiple tail fragments found", "wlan.fragment.multipletails",
-       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-       "Several tails were found when defragmenting the packet", HFILL }},
+    {&hf_he_mimo_control_sounding_dialog_token_num,
+     {"Sounding Dialog Token Number", "wlan.he.mimo.sounding_dialog_token_num",
+      FT_UINT40, BASE_DEC, NULL, 0x0FC0000000, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_too_long_fragment,
-      {"Fragment too long", "wlan.fragment.toolongfragment",
-       FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-       "Fragment contained data past end of packet", HFILL }},
+    {&hf_he_mimo_control_reserved,
+     {"Reserved", "wlan.he.mimo.reserved",
+      FT_UINT40, BASE_DEC, NULL, 0xF000000000, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_error,
-      {"Defragmentation error", "wlan.fragment.error",
-       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
-       "Defragmentation error due to illegal fragments", HFILL }},
+    {&hf_ieee80211_he_mimo_control_field,
+     {"HE MIMO Control", "wlan.he.action.he_mimo_control",
+      FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_fragment_count,
-      {"Fragment count", "wlan.fragment.count",
-       FT_UINT32, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_tspec_allocation_id,
+      {"Allocation ID", "wlan.dmg_tspec.allocation_id",
+       FT_UINT24, BASE_DEC, NULL, 0x00000f,
        NULL, HFILL }},
 
-    {&hf_ieee80211_fragment,
-      {"802.11 Fragment", "wlan.fragment",
-       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
+    {&hf_ieee80211_tag_tspec_allocation_type,
+      {"Allocation Type", "wlan.dmg_tspec.allocation_type",
+       FT_UINT24, BASE_DEC, NULL, 0x000070,
        NULL, HFILL }},
 
-    {&hf_ieee80211_fragments,
-      {"802.11 Fragments", "wlan.fragments",
-       FT_NONE, BASE_NONE, NULL, 0x0,
+    {&hf_ieee80211_tag_tspec_allocation_format,
+      {"Allocation Format", "wlan.dmg_tspec.allocation_format",
+       FT_BOOLEAN, 24, NULL, 0x000080,
        NULL, HFILL }},
 
-    {&hf_ieee80211_reassembled_in,
-      {"Reassembled 802.11 in frame", "wlan.reassembled_in",
-       FT_FRAMENUM, BASE_NONE, NULL, 0x0,
-       "This 802.11 packet is reassembled in this frame", HFILL }},
+    {&hf_ieee80211_tag_tspec_pseudo_static,
+      {"Pseudo Static", "wlan.dmg_tspec.pseudo_static",
+       FT_BOOLEAN, 24, NULL, 0x000100,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_reassembled_length,
-      {"Reassembled 802.11 length", "wlan.reassembled.length",
-       FT_UINT32, BASE_DEC, NULL, 0x0,
-       "The total length of the reassembled payload", HFILL }},
+    {&hf_ieee80211_tag_tspec_truncatable,
+      {"Truncatable", "wlan.dmg_tspec.truncatable",
+       FT_BOOLEAN, 24, NULL, 0x000200,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_wep_iv,
-     {"Initialization Vector", "wlan.wep.iv",
-      FT_UINT24, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_extendable,
+      {"Extendable", "wlan.dmg_tspec.extendable",
+       FT_BOOLEAN, 24, NULL, 0x000400,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_wep_iv_weak,
-     {"Weak IV", "wlan.wep.weakiv",
-      FT_BOOLEAN, BASE_NONE, NULL, 0x0,
-       NULL, HFILL}},
+    {&hf_ieee80211_tag_tspec_lp_sc_used,
+      {"LP SC Usec", "wlan.dmg_tspec.lp_sc_used",
+       FT_BOOLEAN, 24, NULL, 0x000800,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tkip_extiv,
-     {"TKIP Ext. Initialization Vector", "wlan.tkip.extiv",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "TKIP Extended Initialization Vector", HFILL }},
+    {&hf_ieee80211_tag_tspec_up,
+      {"UP", "wlan.dmg_tspec.up",
+       FT_UINT24, BASE_HEX, NULL, 0x007000,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ccmp_extiv,
-     {"CCMP Ext. Initialization Vector", "wlan.ccmp.extiv",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "CCMP Extended Initialization Vector", HFILL }},
+    {&hf_ieee80211_tag_tspec_dest_aid,
+      {"Destination AID", "wlan.dmg_tspec.dest_aid",
+       FT_UINT24, BASE_HEX, NULL, 0x7f8000,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_wep_key,
-     {"Key Index", "wlan.wep.key",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_allocation_period,
+      {"Allocation Period", "wlan.dmg_tspec.allocation_period",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_wep_icv,
-     {"WEP ICV", "wlan.wep.icv",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_min_allocation,
+      {"Minimal Allocation", "wlan.dmg_tspec.min_allocation",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_analysis_pmk,
-     {"PMK", "wlan.analysis.pmk",
-      FT_STRING, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_max_allocation,
+      {"Maximal Allocation", "wlan.dmg_tspec.max_allocation",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_analysis_tk,
-     {"TK", "wlan.analysis.tk",
-      FT_STRING, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_min_duration,
+      {"Minimal Duration", "wlan.dmg_tspec.min_duration",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_fc_analysis_gtk,
-     {"GTK", "wlan.analysis.gtk",
-      FT_STRING, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_num_of_constraints,
+      {"Number Of Constraints", "wlan.dmg_tspec.num_of_constraints",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_request_control,
-     {"Block Ack Request (BAR) Control", "wlan.bar.control",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_tsconst_start_time,
+      {"TS Constraint Start Time", "wlan.dmg_tspec.tsconst.start_time",
+       FT_UINT32, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control,
-     {"Block Ack Request Control", "wlan.ba.control",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tspec_tsconst_duration,
+      {"TS Constraint Duration", "wlan.dmg_tspec.tsconst.duration",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_ack_policy,
-     {"BAR Ack Policy", "wlan.ba.control.ackpolicy",
-      FT_BOOLEAN, 16, TFS(&ieee80211_block_ack_control_ack_policy_flag), 0x01,
-      "Block Ack Request (BAR) Ack Policy", HFILL }},
+    {&hf_ieee80211_tag_tspec_tsconst_period,
+      {"TS Constraint Period", "wlan.dmg_tspec.tsconst.period",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_multi_tid,
-     {"Multi-TID", "wlan.ba.control.multitid",
-      FT_BOOLEAN, 16, 0, 0x02,
-      "Multi-Traffic Identifier (TID)", HFILL }},
+    {&hf_ieee80211_tag_tspec_tsconst_interferer_mac,
+      {"TS Constraint Interferer MAC Address", "wlan.dmg_tspec.tsconst.interferer_mac",
+       FT_ETHER, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_compressed_bitmap,
-     {"Compressed Bitmap", "wlan.ba.control.cbitmap",
-      FT_BOOLEAN, 16, 0, 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_channel_measurement_feedback_realtive_I,
+      {"Channel Measurement Feedback Relative I", "wlan.ch_meas_fb.realtive_I",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_reserved,
-     {"Reserved", "wlan.ba.control.reserved",
-      FT_UINT16, BASE_HEX, NULL, 0x0ff8,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_channel_measurement_feedback_realtive_Q,
+      {"Channel Measurement Feedback Relative Q", "wlan.ch_meas_fb.realtive_Q",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_basic_tid_info,
-     {"TID for which a Basic BlockAck frame is requested", "wlan.ba.basic.tidinfo",
-      FT_UINT16, BASE_HEX, NULL, 0xf000,
-      "Traffic Identifier (TID) for which a Basic BlockAck frame is requested", HFILL }},
+    {&hf_ieee80211_tag_channel_measurement_feedback_tap_delay,
+      {"Channel Measurement Feedback Tap Delay", "wlan.ch_meas_fb.tap_delay",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_compressed_tid_info,
-     {"TID for which a BlockAck frame is requested", "wlan.bar.compressed.tidinfo",
-      FT_UINT16, BASE_HEX, NULL, 0xf000,
-      "Traffic Identifier (TID) for which a BlockAck frame is requested", HFILL }},
+    {&hf_ieee80211_tag_channel_measurement_feedback_sector_id,
+      {"Channel Measurement Feedback Secotr ID", "wlan.ch_meas_fb.sector_id",
+       FT_UINT8, BASE_DEC, NULL, 0xfc,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_control_multi_tid_info,
-     {"Number of TIDs Present", "wlan.ba.mtid.tidinfo",
-      FT_UINT16, BASE_HEX, NULL, 0xf000,
-      "Number of Traffic Identifiers (TIDs) Present", HFILL }},
+    {&hf_ieee80211_tag_channel_measurement_feedback_antenna_id,
+      {"Channel Measurement Feedback Antenna ID", "wlan.ch_meas_fb.antenna_id",
+       FT_UINT8, BASE_DEC, NULL, 0x03,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_multi_tid_info,
-     {"Traffic Identifier (TID) Info", "wlan.ba.mtid.tid",
-      FT_UINT8, BASE_DEC, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_awake_window,
+      {"Awake Window", "wlan.awake_window",
+       FT_UINT16, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_tag_addba_ext_no_frag,
+      {"ADDBA No Fragmentation", "wlan.addba.no_frag",
+       FT_BOOLEAN, 8, NULL, 0x01,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_multi_tid_reserved,
-     {"Reserved", "wlan.bar.mtid.tidinfo.reserved",
-      FT_UINT16, BASE_HEX, 0, 0x0fff,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_addba_ext_he_fragmentation_operation,
+      {"ADDBA HE Fragmentation Operation", "wlan.addba.he_frag_oper",
+       FT_UINT8, BASE_HEX, NULL, 0x06,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_multi_tid_value,
-     {"Multi-TID Value", "wlan.bar.mtid.tidinfo.value",
-      FT_UINT16, BASE_HEX, 0, 0xf000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_addba_ext_reserved,
+      {"Reserved", "wlan.addba.he_frag_oper",
+       FT_UINT8, BASE_HEX, NULL, 0xF8,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_request_type,
-     {"Block Ack Request Type", "wlan.bar.type",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_request_type_flags), 0x06,
-      "Block Ack Request (BAR) Type", HFILL }},
+    {&hf_ieee80211_tag_multi_band_ctrl_sta_role,
+      {"STA Rold", "wlan.multi_band.ctrl_sta_role",
+       FT_UINT8, BASE_DEC, NULL, 0xe0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_type,
-     {"Block Ack Type", "wlan.ba.type",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_type_flags), 0x06,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_ctrl_addr_present,
+      {"STA MAC Address Present", "wlan.multi_band.ctrl_addr_present",
+       FT_BOOLEAN, 8, NULL, 0x10,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_bitmap,
-     {"Block Ack Bitmap", "wlan.ba.bm",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_ctrl_cipher_present,
+      {"PCS Present", "wlan.multi_band.ctrl_cipher_present",
+       FT_BOOLEAN, 8, NULL, 0x08,
+       NULL, HFILL }},
 
-    /* Used for Extended compressed BlockAck */
-    {&hf_ieee80211_block_ack_RBUFCAP,
-     {"Block Ack RBUFCAP", "wlan.ba.RBUFCAP",
-      FT_BOOLEAN, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_oper_class,
+      {"Operating Class", "wlan.multi_band.oper_class",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_block_ack_bitmap_missing_frame,
-     {"Missing frame", "wlan.ba.bm.missing_frame",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_channel_number,
+      {"Channel Number", "wlan.multi_band.channel_number",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_beamform_feedback_seg_retrans_bitmap,
-     {"Feedback segment Retansmission Bitmap", "wlan.beamform.feedback_seg_retrans_bitmap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_tsf_offset,
+      {"TSF Offset", "wlan.multi_band.tsf_offset",
+       FT_UINT64, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_token,
-     {"Sounding Dialog Token", "wlan.vht_ndp.token",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_conn_ap,
+      {"Connection Capability AP", "wlan.multi_band.conn_ap",
+       FT_BOOLEAN, 8, NULL, 0x80,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_token_number,
-     {"Sounding Dialog Token Number", "wlan.vht_ndp.token.number",
-      FT_UINT8, BASE_DEC, NULL, 0xFC,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_conn_pcp,
+      {"Connection Capability PCP", "wlan.multi_band.conn_pcp",
+       FT_BOOLEAN, 8, NULL, 0x40,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_token_reserved,
-     {"Reserved", "wlan.vht_ndp.token.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0x03,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_conn_dls,
+      {"Connection Capability DLS", "wlan.multi_band.conn_dls",
+       FT_BOOLEAN, 8, NULL, 0x20,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_sta_info,
-     {"STA Info", "wlan.vht_ndp.sta_info",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_conn_tdls,
+      {"Connection Capability TDLS", "wlan.multi_band.conn_tdls",
+       FT_BOOLEAN, 8, NULL, 0x10,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_sta_info_aid12,
-     {"AID12", "wlan.vht_ndp.sta_info.aid12",
-      FT_UINT16, BASE_HEX, NULL, 0x0FFF,
-      "12 least significant bits of the AID of the target STA", HFILL }},
+    {&hf_ieee80211_tag_multi_band_conn_ibss,
+      {"Connection Capability IBSS", "wlan.multi_band.conn_ibss",
+       FT_BOOLEAN, 8, NULL, 0x08,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_sta_info_feedback_type,
-     {"Feedback Type", "wlan.vht_ndp.sta_info.feedback_type",
-      FT_BOOLEAN, 16, TFS(&vht_ndp_annc_sta_info_feedback_type), 0x1000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_fst_timeout,
+      {"FST Session Timeout", "wlan.multi_band.fst_timeout",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_sta_info_nc_index,
-     {"Nc Index", "wlan.vht_ndp.sta_info.nc_index",
-      FT_UINT16, BASE_DEC, VALS(num_plus_one_3bit_flag), 0xE000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_multi_band_sta_mac,
+      {"Transmitting STA MAC Address", "wlan.multi_band.sta_mac",
+       FT_ETHER, BASE_NONE, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ndp_annc_sta_info_reserved,
-     {"Reserved", "wlan.vht_ndp.sta_info.reserved",
-      FT_UINT16, BASE_HEX, NULL, 0xE000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_activity,
+      {"Activity", "wlan.activity",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_data_encap_payload_type,
-     {"Payload Type", "wlan.data_encap.payload_type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_data_encap_payload_types), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_dmg_link_adapt_mcs,
+      {"MCS", "wlan.dmg_link_adapt.mcs",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_tdls_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tdls_action_codes_ext, 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_tag_dmg_link_adapt_link_margin,
+      {"Link Margin", "wlan.dmg_link_adapt.link_margin",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_target_channel,
-     {"Target Channel", "wlan.fixed.target_channel",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_ref_timestamp,
+      {"Reference Timestamp", "wlan.ref_timestamp",
+       FT_UINT32, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_operating_class,
-     {"Operating Class", "wlan.fixed.operating_class",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_switching_stream_non_qos,
+      {"Non-Qos Data Frames", "wlan.switching_stream.non_qos",
+       FT_BOOLEAN, 8, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_wnm_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &wnm_action_codes_ext, 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_tag_switching_stream_param_num,
+      {"Number Of Switching Stream Elements", "wlan.switching_stream.param_num",
+       FT_UINT8, BASE_DEC, NULL, 0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_unprotected_wnm_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &unprotected_wnm_action_codes_ext, 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_tag_switching_stream_old_tid,
+      {"Old Band TID", "wlan.switching_stream.old_tid",
+       FT_UINT16, BASE_DEC, NULL, 0xf000,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_key_data,
-     {"Key Data", "wlan.fixed.key_data",
-      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_tag_switching_stream_old_direction,
+      {"Old Band Direction", "wlan.switching_stream.old_direction",
+       FT_BOOLEAN, 16, NULL, 0x0800,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_key_data_length,
-     {"Key Data Length", "wlan.fixed.key_data_length",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_tag_switching_stream_new_tid,
+      {"New Band TID", "wlan.switching_stream.new_tid",
+       FT_UINT16, BASE_DEC, NULL, 0x0780,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_wnm_notification_type,
-     {"WNM-Notification type", "wlan.fixed.wnm_notification_type",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &wnm_notification_types_ext, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_switching_stream_new_direction,
+      {"New Band Direction", "wlan.switching_stream.new_direction",
+       FT_BOOLEAN, 16, NULL, 0x0040,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_action_code,
-     {"Action code", "wlan.rm.action_code",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rm_action_codes_ext, 0,
-      "Radio Measurement Action", HFILL }},
+    {&hf_ieee80211_tag_switching_stream_new_valid_id,
+      {"Stream ID in New Band Valid", "wlan.switching_stream.new_valid_id",
+       FT_BOOLEAN, 16, NULL, 0x0020,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_dialog_token,
-     {"Dialog token", "wlan.rm.dialog_token",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Non-zero Dialog Token identifies request/report transaction", HFILL }},
+    {&hf_ieee80211_tag_switching_stream_llt_type,
+      {"LLT Type", "wlan.switching_stream.llt_type",
+       FT_BOOLEAN, 16, NULL, 0x0010,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_repetitions,
-     {"Repetitions", "wlan.rm.repetitions",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Numer of Repetitions, 65535 indicates repeat until cancellation", HFILL }},
+    {&hf_ieee80211_ff_timestamp,
+     {"Timestamp", "wlan.fixed.timestamp",
+      FT_UINT64, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_tx_power,
-     {"Transmit Power Used", "wlan.rm.tx_power",
-      FT_INT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_auth_alg,
+     {"Authentication Algorithm", "wlan.fixed.auth.alg",
+      FT_UINT16, BASE_DEC, VALS(auth_alg), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_max_tx_power,
-     {"Max Transmit Power", "wlan.rm.max_tx_power",
-      FT_INT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_beacon_interval,
+     {"Beacon Interval", "wlan.fixed.beacon",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(beacon_interval_base_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_tpc,
-     {"TPC Report", "wlan.rm.tpc",
+    {&hf_ieee80211_fixed_parameters,
+     {"Fixed parameters", "wlan.fixed.all",
       FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_tpc_element_id,
-     {"TPC Element ID", "wlan.rm.tpc.element_id",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tagged_parameters,
+     {"Tagged parameters", "wlan.tagged.all",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_tpc_length,
-     {"TPC Length", "wlan.rm.tpc.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Length of TPC Report element (always 2)", HFILL }},
+    {&hf_ieee80211_tag_ssid,
+     {"SSID", "wlan.ssid",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "Indicates the identity of an ESS or IBSS", HFILL }},
 
-    {&hf_ieee80211_ff_tpc_tx_power,
-     {"TPC Transmit Power", "wlan.rm.tpc.tx_power",
-      FT_INT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_supp_rates,
+     {"Supported Rates", "wlan.supported_rates",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
+      "In Mbit/sec, (B) for Basic Rates", HFILL }},
 
-    {&hf_ieee80211_ff_tpc_link_margin,
-     {"TPC Link Margin", "wlan.rm.tpc.link_margin",
-      FT_INT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_fh_dwell_time,
+     {"Dwell Time", "wlan.fh.dwell_time",
+      FT_UINT16, BASE_HEX, NULL, 0x0,
+      "In Time Unit (TU)", HFILL }},
 
-    {&hf_ieee80211_ff_rm_rx_antenna_id,
-     {"Receive Antenna ID", "wlan.rm.rx_antenna_id",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_fh_hop_set,
+     {"Hop Set", "wlan.fh.hop_set",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_tx_antenna_id,
-     {"Transmit Antenna ID", "wlan.rm.tx_antenna_id",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_fh_hop_pattern,
+     {"Hop Pattern", "wlan.fh.hop_pattern",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_rcpi,
-     {"Received Channel Power", "wlan.rm.rcpi",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_fh_hop_index,
+     {"Hop Index", "wlan.fh.hop_index",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_rm_rsni,
-     {"Received Signal to noise indication", "wlan.rm.rsni",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_block_ack_params,
+     {"Block Ack Parameters", "wlan.fixed.baparams",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_request_mode_pref_cand,
-     {"Preferred Candidate List Included", "wlan.fixed.request_mode.pref_cand",
-      FT_UINT8, BASE_DEC, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_block_ack_params_amsdu_permitted,
+     {"A-MSDUs", "wlan.fixed.baparams.amsdu",
+      FT_BOOLEAN, 16, TFS(&ff_block_ack_params_amsdu_permitted_flag), 0x0001,
+      "A-MSDU Permitted in QoS Data MPDUs", HFILL }},
 
-    {&hf_ieee80211_ff_request_mode_abridged,
-     {"Abridged", "wlan.fixed.request_mode.abridged",
-      FT_UINT8, BASE_DEC, NULL, 0x02,
+    {&hf_ieee80211_ff_block_ack_params_policy,
+     {"Block Ack Policy", "wlan.fixed.baparams.policy",
+      FT_BOOLEAN, 16, TFS(&ff_block_ack_params_policy_flag), 0x0002,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_request_mode_disassoc_imminent,
-     {"Disassociation Imminent", "wlan.fixed.request_mode.disassoc_imminent",
-      FT_UINT8, BASE_DEC, NULL, 0x04,
+    {&hf_ieee80211_ff_block_ack_params_tid,
+     {"Traffic Identifier", "wlan.fixed.baparams.tid",
+      FT_UINT16, BASE_HEX, NULL, 0x003C,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_request_mode_bss_term_included,
-     {"BSS Termination Included", "wlan.fixed.request_mode.bss_term_included",
-      FT_UINT8, BASE_DEC, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_block_ack_params_buffer_size,
+     {"Number of Buffers (1 Buffer = 2304 Bytes)", "wlan.fixed.baparams.buffersize",
+      FT_UINT16, BASE_DEC, NULL, 0xFFC0,
+      "Number of Buffers", HFILL }},
 
-    {&hf_ieee80211_ff_request_mode_ess_disassoc_imminent,
-     {"ESS Disassociation Imminent", "wlan.fixed.request_mode.ess_disassoc_imminent",
-      FT_UINT8, BASE_DEC, NULL, 0x10,
+    {&hf_ieee80211_ff_block_ack_timeout,
+     {"Block Ack Timeout", "wlan.fixed.batimeout",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_disassoc_timer,
-     {"Disassociation Timer", "wlan.fixed.disassoc_timer",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_block_ack_ssc,
+     {"Block Ack Starting Sequence Control (SSC)", "wlan.fixed.ssc",
+      FT_UINT16, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bss_termination_delay,
-     {"BSS Termination Delay", "wlan.fixed.bss_termination_delay",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_block_ack_ssc_fragment,
+     {"Fragment", "wlan.fixed.ssc.fragment",
+      FT_UINT16, BASE_DEC, 0, 0x000f,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bss_transition_status_code,
-     {"BSS Transition Status Code", "wlan.fixed.bss_transition_status_code",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_block_ack_ssc_sequence,
+     {"Starting Sequence Number", "wlan.fixed.ssc.sequence",
+      FT_UINT16, BASE_DEC, 0, 0xfff0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_validity_interval,
-     {"Validity Interval", "wlan.fixed.validity_interval",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_delba_param,
+     {"Delete Block Ack (DELBA) Parameter Set", "wlan.fixed.delba.param",
+      FT_UINT16, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bss_termination_duration,
-     {"BSS Termination Duration", "wlan.fixed.bss_termination_duration",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ff_delba_param_reserved,
+     {"Reserved", "wlan.fixed.delba.param.reserved",
+      FT_UINT16, BASE_HEX, 0, 0x07ff,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_url_len,
-     {"Session Information URL Length",
-      "wlan.fixed.session_information.url_length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_delba_param_init,
+     {"Initiator", "wlan.fixed.delba.param.initiator",
+      FT_BOOLEAN, 16, 0, 0x0800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_url,
-     {"Session Information URL", "wlan.fixed.session_information.url",
-      FT_STRING, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_delba_param_tid,
+     {"TID", "wlan.fixed.delba.param.tid",
+      FT_UINT16, BASE_HEX, 0, 0xf000,
+      "Traffic Identifier (TID)", HFILL }},
 
-    {&hf_ieee80211_ff_target_bss,
-     {"BSS Transition Target BSS", "wlan.fixed.bss_transition_target_bss",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ff_max_reg_pwr,
+     {"Maximum Regulation Power", "wlan.fixed.maxregpwr",
+      FT_UINT16, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bss_transition_query_reason,
-     {"BSS Transition Query Reason", "wlan.fixed.bss_transition_query_reason",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_transition_reasons), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_measurement_pilot_int,
+     {"Measurement Pilot Interval", "wlan.fixed.msmtpilotint",
+      FT_UINT8, BASE_HEX, 0, 0,
+      "Measurement Pilot Interval Fixed Field", HFILL }},
 
-    {&hf_ieee80211_ff_bss_transition_candidate_list_entries,
-     {"BSS Transition Candidate List Entries", "wlan.fixed.bss_transition_candidate_list_entries",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ff_country_str,
+     {"Country String", "wlan.fixed.country",
+      FT_STRING, BASE_NONE, 0, 0,
       NULL, HFILL }},
 
-/* 802.11ad */
-    {&hf_ieee80211_cf_response_offset,
-     {"Response Offset", "wlan.res_offset",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_max_tx_pwr,
+     {"Maximum Transmit Power", "wlan.fixed.maxtxpwr",
+      FT_UINT8, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_grant_ack_reserved,
-     {"Reserved", "wlan.grant_ack.reserved",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ff_tx_pwr_used,
+     {"Transmit Power Used", "wlan.fixed.txpwr",
+      FT_UINT8, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dynamic_allocation,
-     {"Dynamic Allocation", "wlan.dynamic_allocation",
-      FT_UINT40, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_transceiver_noise_floor,
+     {"Transceiver Noise Floor", "wlan.fixed.tnoisefloor",
+      FT_UINT8, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_TID,
-     {"TID", "wlan.dynamic_allocation.tid",
-      FT_UINT40, BASE_DEC, NULL, 0x000000000F,
+    {&hf_ieee80211_ff_channel_width,
+     {"Supported Channel Width", "wlan.fixed.chanwidth",
+      FT_UINT8, BASE_HEX, VALS(ff_channel_width_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_alloc_type,
-     {"Allocation Type", "wlan.dynamic_allocation.alloc_type",
-      FT_UINT40, BASE_DEC, NULL, 0x000000070,
+    {&hf_ieee80211_ff_qos_info_ap,
+     {"QoS Information (AP)", "wlan.fixed.qosinfo.ap",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_src_aid,
-     {"Source AID", "wlan.dynamic_allocation.src_aid",
-      FT_UINT40, BASE_DEC, NULL, 0x0000007F80,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_qos_info_ap_edca_param_set_counter,
+     {"EDCA Parameter Set Update Count", "wlan.fixed.qosinfo.ap.edcaupdate",
+      FT_UINT8, BASE_HEX, NULL, 0x0F,
+      "Enhanced Distributed Channel Access (EDCA) Parameter Set Update Count", HFILL }},
 
-    {&hf_ieee80211_ff_dest_aid,
-     {"Destination AID", "wlan.dynamic_allocation.dest_aid",
-      FT_UINT40, BASE_DEC, NULL, 0x00007f8000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_qos_info_ap_q_ack,
+     {"Q-Ack", "wlan.fixed.qosinfo.ap.qack",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_q_ack_flag), 0x10,
+      "QoS Ack", HFILL }},
 
-    {&hf_ieee80211_ff_alloc_duration,
-     {"Allocation Duration", "wlan.dynamic_allocation.alloc_duration",
-      FT_UINT40, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0x7FFF800000,
+    {&hf_ieee80211_ff_qos_info_ap_queue_req,
+     {"Queue Request", "wlan.fixed.qosinfo.ap.queue_req",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_queue_req_flag), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_b39,
-     {"Reserved (b39)", "wlan.dynamic_allocation.b39",
-      FT_UINT40, BASE_HEX, NULL, 0x8000000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_qos_info_ap_txop_request,
+     {"TXOP Request", "wlan.fixed.qosinfo.ap.txopreq",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_txop_request_flag), 0x40,
+      "Transmit Opportunity (TXOP) Request", HFILL }},
 
-    {&hf_ieee80211_ff_ssw,
-     {"Sector Sweep", "wlan.ssw",
-      FT_UINT24, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_qos_info_ap_reserved,
+     {"Reserved", "wlan.fixed.qosinfo.ap.reserved",
+      FT_BOOLEAN, 8, NULL, 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ssw_direction,
-     {"Sector Sweep Direction", "wlan.ssw.direction",
-      FT_BOOLEAN, 24, TFS(&ieee80211_cf_ssw_direction), 0x000001,
-      NULL, HFILL}},
+    {&hf_ieee80211_ff_qos_info_sta,
+     {"QoS Information (STA)", "wlan.fixed.qosinfo.sta",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "TCLAS Processing", HFILL }},
 
-    {&hf_ieee80211_ff_ssw_cdown,
-     {"Sector Sweep CDOWN", "wlan.ssw.cdown",
-      FT_UINT24, BASE_DEC, NULL, 0x0003fe,
+    {&hf_ieee80211_ff_qos_info_sta_ac_vo,
+     {"AC_VO U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_vo",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ssw_sector_id,
-     {"Sector Sweep Sector ID", "wlan.ssw.sector_id",
-      FT_UINT24, BASE_DEC, NULL, 0x00fc00,
+    {&hf_ieee80211_ff_qos_info_sta_ac_vi,
+     {"AC_VI U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_vi",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ssw_dmg_ant_id,
-     {"Sector Sweep DMG Antenna ID", "wlan.ssw.dmg_ant_id",
-      FT_UINT24, BASE_DEC, NULL, 0x030000,
+    {&hf_ieee80211_ff_qos_info_sta_ac_bk,
+     {"AC_BK U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_bk",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ssw_rxss_len,
-     {"Sector Sweep RXSS Length", "wlan.ssw.rxss_len",
-      FT_UINT24, BASE_DEC, NULL, 0xfc0000,
+    {&hf_ieee80211_ff_qos_info_sta_ac_be,
+     {"AC_BE U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_be",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf,
-     {"Beam Forming", "wlan.bf",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_qos_info_sta_q_ack,
+     {"Q-Ack", "wlan.fixed.qosinfo.sta.qack",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_q_ack_flag), 0x10,
+      "QoS Ack", HFILL }},
+
+    {&hf_ieee80211_ff_qos_info_sta_max_sp_length,
+     {"Max SP Length", "wlan.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_bf_train,
-     {"Beam Forming Training", "wlan.bf.train",
-      FT_BOOLEAN, 16, NULL, 0x0001,
+    {&hf_ieee80211_ff_qos_info_sta_more_data_ack,
+     {"More Data Ack", "wlan.fixed.qosinfo.sta.more_data_ack",
+      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_more_data_ack_flag), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_is_init,
-     {"Beam Forming Is InitiatorTXSS", "wlan.bf.isInit",
-      FT_BOOLEAN, 16, NULL, 0x0002,
+    {&hf_ieee80211_ff_sm_pwr_save,
+     {"Spatial Multiplexing (SM) Power Control", "wlan.fixed.sm.powercontrol",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_is_resp,
-     {"Beam Forming Is ResponderTXSS", "wlan.bf.isResp",
-      FT_BOOLEAN, 16, NULL, 0x0004,
+    {&hf_ieee80211_ff_sm_pwr_save_enabled,
+     {"SM Power Save", "wlan.fixed.sm.powercontrol.enabled",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+      "Spatial Multiplexing (SM) Power Save", HFILL }},
+
+    {&hf_ieee80211_ff_sm_pwr_save_sm_mode,
+     {"SM Mode", "wlan.fixed.sm.powercontrol.mode",
+      FT_BOOLEAN, 8, TFS(&ff_sm_pwr_save_sm_mode_flag), 0x02,
+      "Spatial Multiplexing (SM) Mode", HFILL }},
+
+    {&hf_ieee80211_ff_sm_pwr_save_reserved,
+     {"Reserved", "wlan.fixed.sm.powercontrol.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xFC,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_rxss_len,
-     {"Beam Forming RXSS Length", "wlan.bf.rxss_len",
-      FT_UINT16, BASE_DEC, NULL, 0x01f8,
+    {&hf_ieee80211_ff_pco_phase_cntrl,
+     {"Phased Coexistence Operation (PCO) Phase Control", "wlan.fixed.pco.phasecntrl",
+      FT_BOOLEAN, BASE_NONE, TFS(&ff_pco_phase_cntrl_flag), 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_rxss_rate,
-     {"Beam Forming RXSS Rate", "wlan.bf.rxss_rate",
-      FT_BOOLEAN, 16, NULL, 0x0200,
+    {&hf_ieee80211_ff_psmp_param_set,
+     {"Power Save Multi-Poll (PSMP) Parameter Set", "wlan.fixed.psmp.paramset",
+      FT_UINT16, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_b10b15,
-     {"Reserved (B10-B15)", "wlan.bf.reserved",
-      FT_UINT16, BASE_DEC, NULL, 0xFC00,
+    {&hf_ieee80211_ff_psmp_param_set_n_sta,
+     {"Number of STA Info Fields Present", "wlan.fixed.psmp.paramset.nsta",
+      FT_UINT16, BASE_HEX, 0, 0x000F,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bf_num_sectors,
-     {"Beam Forming Total Number of Sectors", "wlan.bf.num_sectors",
-      FT_UINT16, BASE_DEC, NULL, 0x03f8,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_psmp_param_set_more_psmp,
+     {"More PSMP", "wlan.fixed.psmp.paramset.more",
+      FT_BOOLEAN, 16, TFS(&ff_psmp_param_set_more_psmp_flag), 0x0010,
+      "More Power Save Multi-Poll (PSMP)", HFILL }},
 
-    {&hf_ieee80211_ff_bf_num_rx_dmg_ants,
-     {"Beam Forming Number of DMG Antennas", "wlan.bf.num_dmg_ants",
-      FT_UINT16, BASE_DEC, NULL, 0x0c00,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_psmp_param_set_psmp_sequence_duration,
+     {"PSMP Sequence Duration [us]", "wlan.fixed.psmp.paramset.seqduration",
+      FT_UINT16, BASE_DEC, 0, 0xFFE0,
+      "Power Save Multi-Poll (PSMP) Sequence Duration", HFILL }},
 
-    {&hf_ieee80211_ff_bf_b12b15,
-     {"Reserved (B12-B15)", "wlan.bf.reserved",
-      FT_UINT16, BASE_DEC, NULL, 0xF000,
+    {&hf_ieee80211_ff_mimo_cntrl,
+     {"MIMO Control", "wlan.fixed.mimo.control",
+      FT_BYTES, BASE_NONE, 0, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_addr_nav_da,
-     {"Destination address of STA that caused NAV update", "wlan.nav_da",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "DMG Destination Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_mimo_cntrl_nc_index,
+     {"Nc Index", "wlan.fixed.mimo.control.ncindex",
+      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nc_index_flags), 0x0003,
+      "Number of Columns Less One", HFILL }},
 
-    {&hf_ieee80211_addr_nav_sa,
-     {"Source address of STA that caused NAV update", "wlan.nav_sa",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "DMG Source Hardware Address", HFILL }},
+    {&hf_ieee80211_ff_mimo_cntrl_nr_index,
+     {"Nr Index", "wlan.fixed.mimo.control.nrindex",
+      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nr_index_flags), 0x000C,
+      "Number of Rows Less One", HFILL }},
 
-    {&hf_ieee80211_ff_sswf,
-     {"Sector Sweep Feedback", "wlan.sswf",
-      FT_UINT24, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_mimo_cntrl_channel_width,
+     {"Channel Width", "wlan.fixed.mimo.control.chanwidth",
+      FT_BOOLEAN, 16, TFS(&ff_mimo_cntrl_channel_width_flag), 0x0010,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_total_sectors,
-     {"Sector Sweep Feedback total number of sectors", "wlan.sswf.num_sectors",
-      FT_UINT24, BASE_DEC, NULL, 0x0001ff,
+    {&hf_ieee80211_ff_mimo_cntrl_grouping,
+     {"Grouping (Ng)", "wlan.fixed.mimo.control.grouping",
+      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_grouping_flags), 0x0060,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_num_rx_dmg_ants,
-     {"Sector Sweep Feedback Number of receive DMG Antennas", "wlan.sswf.num_dmg_ants",
-      FT_UINT24, BASE_DEC, NULL, 0x000600,
+    {&hf_ieee80211_ff_mimo_cntrl_coefficient_size,
+     {"Coefficient Size (Nb)", "wlan.fixed.mimo.control.cosize",
+      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_coefficient_size_flags), 0x0180,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_poll_required,
-     {"Sector Sweep Feedback Poll required", "wlan.sswf.poll",
-      FT_BOOLEAN, 24, NULL, 0x010000,
+    {&hf_ieee80211_ff_mimo_cntrl_codebook_info,
+     {"Codebook Information", "wlan.fixed.mimo.control.codebookinfo",
+      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_codebook_info_flags), 0x0600,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_reserved1,
-     {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
-      FT_UINT24, BASE_HEX, NULL, 0x00F800,
+    {&hf_ieee80211_ff_mimo_cntrl_remaining_matrix_segment,
+     {"Remaining Matrix Segment", "wlan.fixed.mimo.control.matrixseg",
+      FT_UINT16, BASE_HEX, 0, 0x3800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_reserved2,
-     {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
-      FT_UINT24, BASE_HEX, NULL, 0xFE0000,
+    {&hf_ieee80211_ff_mimo_cntrl_reserved,
+     {"Reserved", "wlan.fixed.mimo.control.reserved",
+      FT_UINT16, BASE_HEX, 0, 0xC000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_sector_select,
-     {"Sector Sweep Feedback Sector Select", "wlan.sswf.sector_select",
-      FT_UINT24, BASE_DEC, NULL, 0x00003F,
+    {&hf_ieee80211_ff_mimo_cntrl_sounding_timestamp,
+     {"Sounding Timestamp", "wlan.fixed.mimo.control.soundingtime",
+      FT_UINT32, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_dmg_antenna_select,
-     {"Sector Sweep Feedback DMG Antenna Select", "wlan.sswf.dmg_antenna_select",
-      FT_UINT24, BASE_DEC, NULL, 0x0000C0,
+    {&hf_ieee80211_ff_psmp_sta_info,
+     {"Power Save Multi-Poll (PSMP) Station Information", "wlan.fixed.psmp.stainfo",
+      FT_UINT64, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sswf_snr_report,
-     {"Sector Sweep Feedback SNR Report", "wlan.sswf.snr_report",
-      FT_UINT24, BASE_DEC, NULL, 0x00FF00,
+    {&hf_ieee80211_ff_psmp_sta_info_type,
+     {"Sta Info Type", "wlan.fixed.psmp.stainfo.type",
+      FT_UINT32, BASE_HEX, VALS(ff_psmp_sta_info_flags), PSMP_STA_INFO_FLAG_TYPE,
       NULL, HFILL }},
 
-
-    {&hf_ieee80211_ff_brp,
-     {"BRP Request", "wlan.brp",
-      FT_UINT32, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_psmp_sta_info_dtt_start_offset,
+     {"DTT Start Offset", "wlan.fixed.psmp.stainfo.dttstart",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_START,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_L_RX,
-     {"BRP Request L-RX", "wlan.brp.l_rx",
-      FT_UINT32, BASE_DEC, NULL, 0x0000001f,
+    {&hf_ieee80211_ff_psmp_sta_info_dtt_duration,
+     {"DTT Duration", "wlan.fixed.psmp.stainfo.dttduration",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_DURATION,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_TX_TRN_REQ,
-     {"BRP Request TX-TRN-REQ", "wlan.brp.tx_trn_req",
-      FT_BOOLEAN, 32, NULL, 0x00000020,
+    {&hf_ieee80211_ff_psmp_sta_info_sta_id,
+     {"Target Station ID", "wlan.fixed.psmp.stainfo.staid",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_STA_ID,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_MID_REQ,
-     {"BRP Request MID-REQ", "wlan.brp.mid_req",
-      FT_BOOLEAN, 32, NULL, 0x00000040,
+    {&hf_ieee80211_ff_psmp_sta_info_utt_start_offset,
+     {"UTT Start Offset", "wlan.fixed.psmp.stainfo.uttstart",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_START,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_BC_REQ,
-     {"BRP Request BC-REQ", "wlan.brp.bc_req",
-      FT_BOOLEAN, 32, NULL, 0x00000080,
+    {&hf_ieee80211_ff_psmp_sta_info_utt_duration,
+     {"UTT Duration", "wlan.fixed.psmp.stainfo.uttduration",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_DURATION,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_MID_GRANT,
-     {"BRP Request MID-GRANT", "wlan.brp.mid_grant",
-      FT_BOOLEAN, 32, NULL, 0x00000100,
+    {&hf_ieee80211_ff_psmp_sta_info_reserved_small,
+     {"Reserved", "wlan.fixed.psmp.stainfo.reserved",
+      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_IA_RESERVED,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_BC_GRANT,
-     {"BRP Request BC-GRANT", "wlan.brp.bc_grant",
-      FT_BOOLEAN, 32, NULL, 0x00000200,
+    {&hf_ieee80211_ff_psmp_sta_info_reserved_large,
+     {"Reserved", "wlan.fixed.psmp.stainfo.reserved64",
+      FT_UINT64, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_chan_FBCK_CAP,
-     {"BRP Request Chan FBCK-CAP", "wlan.brp.chan_fbck_cap",
-      FT_BOOLEAN, 32, NULL, 0x00000400,
+    {&hf_ieee80211_ff_psmp_sta_info_psmp_multicast_id,
+     {"Power Save Multi-Poll (PSMP) Multicast ID", "wlan.fixed.psmp.stainfo.multicastid",
+      FT_UINT64, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_tx_sector,
-     {"BRP Request TX Sector ID", "wlan.brp.tx_sector_id",
-      FT_UINT32, BASE_DEC, NULL, 0x0001f800,
+    {&hf_ieee80211_ff_ant_selection,
+     {"Antenna Selection", "wlan.fixed.antsel",
+      FT_UINT8, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_other_aid,
-     {"BRP Request Other AID", "wlan.brp.other_aid",
-      FT_UINT32, BASE_DEC, NULL, 0x01fe0000,
+    {&hf_ieee80211_ff_ant_selection_0,
+     {"Antenna 0", "wlan.fixed.antsel.ant0",
+      FT_UINT8, BASE_HEX, 0, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_tx_antenna,
-     {"BRP Request TX Antenna ID", "wlan.brp.tx_antenna_id",
-      FT_UINT32, BASE_DEC, NULL, 0x06000000,
+    {&hf_ieee80211_ff_ant_selection_1,
+     {"Antenna 1", "wlan.fixed.antsel.ant1",
+      FT_UINT8, BASE_HEX, 0, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_brp_reserved,
-     {"BRP Request Reserved", "wlan.brp.reserved",
-      FT_UINT32, BASE_HEX, NULL, 0xF8000000,
+    {&hf_ieee80211_ff_ant_selection_2,
+     {"Antenna 2", "wlan.fixed.antsel.ant2",
+      FT_UINT8, BASE_HEX, 0, 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_blm,
-     {"Beamformed Link Maintenance", "wlan.blm",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_ant_selection_3,
+     {"Antenna 3", "wlan.fixed.antsel.ant3",
+      FT_UINT8, BASE_HEX, 0, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_blm_unit_index,
-     {"BeamLink Maintenance Uint Index", "wlan.blm.uint_index",
-      FT_BOOLEAN, 8, NULL, 0x01,
+    {&hf_ieee80211_ff_ant_selection_4,
+     {"Antenna 4", "wlan.fixed.antsel.ant4",
+      FT_UINT8, BASE_HEX, 0, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_blm_maint_value,
-     {"BeamLink Maintenance Value", "wlan.blm.value",
-      FT_UINT8, BASE_DEC, NULL, 0x7e,
+    {&hf_ieee80211_ff_ant_selection_5,
+     {"Antenna 5", "wlan.fixed.antsel.ant5",
+      FT_UINT8, BASE_HEX, 0, 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_blm_is_master,
-     {"BeamLink Is Master", "wlan.blm.is_master",
-      FT_BOOLEAN, 8, NULL, 0x80,
+    {&hf_ieee80211_ff_ant_selection_6,
+     {"Antenna 6", "wlan.fixed.antsel.ant6",
+      FT_UINT8, BASE_HEX, 0, 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic,
-     {"Beacon Interval Control", "wlan.bic",
-      FT_UINT48, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ff_ant_selection_7,
+     {"Antenna 7", "wlan.fixed.antsel.ant7",
+      FT_UINT8, BASE_HEX, 0, 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_cc_present,
-     {"Clustering Control Present", "wlan.bic.cc",
-      FT_BOOLEAN, 48, NULL, 0x000000000001,
+    {&hf_ieee80211_ff_ext_channel_switch_announcement,
+     {"Extended Channel Switch Announcement", "wlan.fixed.extchansw",
+      FT_UINT32, BASE_HEX, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_discovery_mode,
-     {"Discovery Mode", "wlan.bic.discovery_mode",
-      FT_BOOLEAN, 48, NULL, 0x000000000002,
+    {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_mode,
+     {"Channel Switch Mode", "wlan.fixed.extchansw.switchmode",
+      FT_UINT32, BASE_HEX, VALS(ieee80211_tag_ext_channel_switch_announcement_switch_mode_flags), 0x000000FF,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_next_beacon,
-     {"Next Beacon", "wlan.bic.next_beacon",
-      FT_UINT48, BASE_DEC, NULL, 0x00000000003c,
+    {&hf_ieee80211_ff_ext_channel_switch_announcement_new_ope_class,
+     {"New Operating Class", "wlan.fixed.extchansw.new.opeclass",
+      FT_UINT32, BASE_HEX, NULL, 0x0000FF00,
+      NULL, HFILL }},
 
+    {&hf_ieee80211_ff_ext_channel_switch_announcement_new_chan_number,
+     {"New Channel Number", "wlan.fixed.extchansw.new.channumber",
+      FT_UINT32, BASE_HEX, NULL, 0x00FF0000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_ati_present,
-     {"ATI Present", "wlan.bic.ati",
-      FT_BOOLEAN, 48, NULL, 0x000000000040,
+    {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_count,
+     {"Channel Switch Count", "wlan.extchanswitch.switchcount",
+      FT_UINT32, BASE_HEX, NULL, 0xFF000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_abft_len,
-     {"A-BFT length", "wlan.bic.abft_len",
-      FT_UINT48, BASE_DEC, NULL, 0x000000000380,
+    {&hf_ieee80211_ff_ht_info,
+     {"HT Information", "wlan.fixed.extchansw",
+      FT_UINT8, BASE_HEX, 0, 0,
+      "HT Information Fixed Field", HFILL }},
+
+    {&hf_ieee80211_ff_ht_info_information_request,
+     {"Information Request", "wlan.fixed.mimo.control.chanwidth",
+      FT_BOOLEAN, 8, TFS(&ff_ht_info_information_request_flag), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_fss,
-     {"FSS", "wlan.bic.fss",
-      FT_UINT48, BASE_DEC, NULL, 0x000000003c00,
+    {&hf_ieee80211_ff_ht_info_40_mhz_intolerant,
+     {"40 MHz Intolerant", "wlan.fixed.mimo.control.chanwidth",
+      FT_BOOLEAN, 8, TFS(&ff_ht_info_40_mhz_intolerant_flag), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_is_resp,
-     {"Is TXSS Responder", "wlan.bic.is_responder",
-      FT_BOOLEAN, 48, NULL, 0x000000004000,
+    {&hf_ieee80211_ff_ht_info_sta_chan_width,
+     {"Station Channel Width", "wlan.fixed.mimo.control.chanwidth",
+      FT_BOOLEAN, 8, TFS(&ff_ht_info_sta_chan_width_flag), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_next_abft,
-     {"Next A-BFT", "wlan.bic.next_abft",
-      FT_UINT48, BASE_DEC, NULL, 0x000000078000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_ht_info_reserved,
+     {"Reserved", "wlan.fixed.extchansw",
+      FT_UINT8, BASE_HEX, 0, 0xF8,
+      "Reserved Field", HFILL }},
 
-    {&hf_ieee80211_ff_bic_frag_txss,
-     {"Fragmented TXSS", "wlan.bic.frag_txss",
-      FT_BOOLEAN, 48, NULL, 0x000000080000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_ht_action,
+     {"HT Action", "wlan.fixed.htact",
+      FT_UINT8, BASE_HEX, VALS(ff_ht_action_flags), 0,
+      "HT Action Code", HFILL }},
 
-    {&hf_ieee80211_ff_bic_txss_span,
-     {"TXSS span", "wlan.bic.txss_span",
-      FT_UINT48, BASE_DEC, NULL, 0x000007f00000,
+    {&hf_ieee80211_ff_mimo_csi_snr,
+     {"Signal to Noise Ratio (SNR)", "wlan.mimo.csimatrices.snr",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_NBI_abft,
-     {"Number of Beacon Intervals that are needed to allocate A-BFT", "wlan.bic.NBI_abft",
-      FT_UINT48, BASE_DEC, NULL, 0x00078000000,
+    {&hf_ieee80211_ff_mimo_csi_matrices,
+     {"CSI Matrices", "wlan.mimo.csimatrices",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_abft_count,
-     {"A-BFT Count", "wlan.bic.abft_count",
-      FT_UINT48, BASE_DEC, NULL, 0x001f80000000,
+    {&hf_ieee80211_ff_mimo_csi_bf_matrices,
+     {"Beamforming Feedback Matrices", "wlan.mimo.csimatrices.bf",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_bic_nabft,
-     {"Number of A-BFT's received from each Antenna", "wlan.bic.nabft",
-      FT_UINT48, BASE_DEC, NULL, 0x07e000000000,
+    {&hf_ieee80211_ff_mimo_csi_cbf_matrices,
+     {"Compressed Beamforming Feedback Matrices", "wlan.mimo.csimatrices.cbf",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
+    {&hf_ieee80211_ff_public_action,
+     {"Public Action", "wlan.fixed.publicact",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ff_pa_action_codes_ext, 0,
+      "Public Action Code", HFILL }},
 
-    {&hf_ieee80211_ff_bic_pcp,
-     {"PCP Association Ready", "wlan.bic.pcp",
-      FT_BOOLEAN, 48, NULL, 0x080000000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_protected_public_action,
+     {"Protected Public Action", "wlan.fixed.publicact",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ff_ppa_action_codes_ext, 0,
+      "Protected Public Action Code", HFILL }},
 
-    {&hf_ieee80211_ff_bic_reserved,
-     {"Reserved", "wlan.bic.reserved",
-      FT_UINT48, BASE_HEX, NULL, 0xF00000000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_capture,
+     {"Capabilities Information", "wlan.fixed.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Capability information", HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params,
-     {"DMG Parameters", "wlan.dmg_params",
-      FT_UINT8, BASE_HEX , NULL, 0,
+    {&hf_ieee80211_ff_cf_ess,
+     {"ESS capabilities", "wlan.fixed.capabilities.ess",
+      FT_BOOLEAN, 16, TFS(&cf_ess_flags), 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params_bss,
-     {"BSS Type", "wlan.dmg_params.bss",
-      FT_UINT8, BASE_DEC, VALS(bss_type), 0x03,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_cf_ibss,
+     {"IBSS status", "wlan.fixed.capabilities.ibss",
+      FT_BOOLEAN, 16, TFS(&cf_ibss_flags), 0x0002,
+      "IBSS participation", HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params_cbap_only,
-     {"CBAP Only", "wlan.dmp_params.cbap_only",
-      FT_BOOLEAN, 8, NULL, 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_cf_sta_poll,
+     {"CFP participation capabilities", "wlan.fixed.capabilities.cfpoll.sta",
+      FT_UINT16, BASE_HEX, VALS(sta_cf_pollable), 0x020C,
+      "CF-Poll capabilities for a STA", HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params_cbap_src,
-     {"CBAP Source", "wlan.dmp_params.cbap_src",
-      FT_BOOLEAN, 8, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_cf_ap_poll,
+     {"CFP participation capabilities", "wlan.fixed.capabilities.cfpoll.ap",
+      FT_UINT16, BASE_HEX, VALS(ap_cf_pollable), 0x020C,
+      "CF-Poll capabilities for an AP", HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params_privacy,
-     {"DMG Privacy", "wlan.dmp_params.privacy",
-      FT_BOOLEAN, 8, NULL, 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_cf_privacy,
+     {"Privacy", "wlan.fixed.capabilities.privacy",
+      FT_BOOLEAN, 16, TFS(&cf_privacy_flags), 0x0010,
+      "WEP support", HFILL }},
 
-    {&hf_ieee80211_ff_dmg_params_policy,
-     {"ECPAC Policy Enforced", "wlan.dmp_params.policy",
-      FT_BOOLEAN, 8, NULL, 0x20,
+    {&hf_ieee80211_ff_cf_preamble,
+     {"Short Preamble", "wlan.fixed.capabilities.preamble",
+      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x0020,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cc,
-     {"Clustering Control", "wlan.cc",
-      FT_UINT64, BASE_HEX , NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_cf_pbcc,
+     {"PBCC", "wlan.fixed.capabilities.pbcc",
+      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x0040,
+      "PBCC Modulation", HFILL }},
 
-    {&hf_ieee80211_ff_cc_abft_resp_addr,
-     {"A-BFT Responder Address", "wlan.cc.abft_resp_addr",
-      FT_ETHER, BASE_NONE , NULL, 0,
+    {&hf_ieee80211_ff_cf_agility,
+     {"Channel Agility", "wlan.fixed.capabilities.agility",
+      FT_BOOLEAN, 16, TFS(&tfs_inuse_not_inuse), 0x0080,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cc_sp_duration,
-     {"Beacon SP Duration", "wlan.cc.sp_duration",
-      FT_UINT8, BASE_DEC , NULL, 0,
+    {&hf_ieee80211_ff_cf_spec_man,
+     {"Spectrum Management", "wlan.fixed.capabilities.spec_man",
+      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x0100,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cc_cluster_id,
-     {"Cluster ID", "wlan.cc.cluster_id",
-      FT_UINT64, BASE_DEC , NULL, 0,
+    {&hf_ieee80211_ff_short_slot_time,
+     {"Short Slot Time", "wlan.fixed.capabilities.short_slot_time",
+      FT_BOOLEAN, 16, TFS(&tfs_inuse_not_inuse), 0x0400,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cc_role,
-     {"Cluster Member Role", "wlan.cc.rold",
-      FT_UINT8, BASE_DEC , NULL, 0,
+    {&hf_ieee80211_ff_cf_apsd,
+     {"Automatic Power Save Delivery", "wlan.fixed.capabilities.apsd",
+      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x0800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cc_max_mem,
-     {"Cluster MaxMem", "wlan.cc.max_mem",
-      FT_UINT8, BASE_DEC , NULL, 0,
+    {&hf_ieee80211_ff_radio_measurement,
+     {"Radio Measurement", "wlan.fixed.capabilities.radio_measurement",
+      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x1000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_relay_support,
-     {"Relay Supportability", "wlan.relay_capabilities.relay_support",
-      FT_BOOLEAN, 8, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_dsss_ofdm,
+     {"DSSS-OFDM", "wlan.fixed.capabilities.dsss_ofdm",
+      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x2000,
+      "DSSS-OFDM Modulation", HFILL }},
 
-    {&hf_ieee80211_tag_relay_use,
-     {"Relay Usability", "wlan.relay_capabilities.relay_use",
-      FT_BOOLEAN, 8, NULL, 0x02,
+    {&hf_ieee80211_ff_cf_del_blk_ack,
+     {"Delayed Block Ack", "wlan.fixed.capabilities.del_blk_ack",
+      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x4000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_relay_permission,
-     {"Relay Permission", "wlan.relay_capabilities.relay_permission",
-      FT_BOOLEAN, 8, NULL, 0x04,
+    {&hf_ieee80211_ff_cf_imm_blk_ack,
+     {"Immediate Block Ack", "wlan.fixed.capabilities.imm_blk_ack",
+      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x8000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_AC_power,
-     {"A/C Power", "wlan.relay_capabilities.AC_power",
-      FT_BOOLEAN, 8, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_auth_seq,
+     {"Authentication SEQ", "wlan.fixed.auth_seq",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Authentication Sequence Number", HFILL }},
 
-    {&hf_ieee80211_tag_relay_prefer,
-     {"Relay Preference", "wlan.relay_capabilities.relay_prefer",
-      FT_BOOLEAN, 8, NULL, 0x10,
+    {&hf_ieee80211_ff_assoc_id,
+     {"Association ID", "wlan.fixed.aid",
+      FT_UINT16, BASE_HEX, NULL, 0x3FFF,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_duplex,
-     {"Duplex", "wlan.relay_capabilities.duplex",
-      FT_UINT8, BASE_DEC, NULL, 0x60,
+    {&hf_ieee80211_ff_listen_ival,
+     {"Listen Interval", "wlan.fixed.listen_ival",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cooperation,
-     {"Cooperation", "wlan.relay_capabilities.cooperation",
-      FT_BOOLEAN, 8, NULL, 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_current_ap,
+     {"Current AP", "wlan.fixed.current_ap",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "MAC address of current AP", HFILL }},
 
-#if 0
-    {&hf_ieee80211_ff_rcsi,
-     {"Relay Capable STA Info", "wlan.rcsi",
-      FT_UINT24, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_reason,
+     {"Reason code", "wlan.fixed.reason_code",
+      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_reason_code_ext, 0,
+      "Reason for unsolicited notification", HFILL }},
 
-    {&hf_ieee80211_ff_rcsi_aid,
-     {"AID", "wlan.rcsi.aid",
-      FT_UINT8, BASE_DEC, NULL, 0xff,
-      NULL, HFILL }},
-#endif
+    {&hf_ieee80211_ff_status_code,
+     {"Status code", "wlan.fixed.status_code",
+      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_status_code_ext, 0,
+      "Status of requested event", HFILL }},
 
-    {&hf_ieee80211_ff_band_id,
-     {"Band ID", "wlan.band_id",
-      FT_UINT8, BASE_DEC, VALS(band_id), 0xff,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_category_code,
+     {"Category code", "wlan.fixed.category_code",
+      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &category_codes_ext, 0,
+      "Management action category", HFILL }},
 
-    {&hf_ieee80211_tag_move,
-     {"Move", "wlan.dmg_bss_param_change.move",
-      FT_BOOLEAN, 8, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT16, BASE_DEC, VALS(action_codes), 0,
+      "Management action code", HFILL }},
 
-    {&hf_ieee80211_tag_size,
-     {"Size", "wlan.dmg_bss_param_change.size",
-      FT_BOOLEAN, 8, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_dialog_token,
+     {"Dialog token", "wlan.fixed.dialog_token",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Management action dialog token", HFILL }},
 
-    {&hf_ieee80211_tag_tbtt_offset,
-     {"TBTT Offset", "wlan.dmg_bss_param_change.tbtt_offset",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0xffffffff,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_followup_dialog_token,
+     {"Followup Dialog token", "wlan.fixed.followup_dialog_token",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Management action followup dialog token", HFILL }},
 
-    {&hf_ieee80211_tag_bi_duration,
-     {"BI Duration", "wlan.dmg_bss_param_change.bi_duration",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_action_type,
+     {"Marvell Action type", "wlan.fixed.mrvl_action_type",
+      FT_UINT8, BASE_DEC, VALS(vendor_action_types_mrvl), 0,
+      "Vendor Specific Action Type (Marvell)", HFILL }},
 
-    {&hf_ieee80211_tag_dmg_capa_sta_addr,
-     {"STA Address", "wlan.dmg_capa.sta_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "STA_Address", HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_action_code,
+     {"Mesh action(Marvell)", "wlan.fixed.mrvl_mesh_action",
+      FT_UINT8, BASE_HEX, VALS(mesh_mgt_action_codes_mrvl), 0,
+      "Mesh action code(Marvell)", HFILL }},
 
-    {&hf_ieee80211_tag_dmg_capa_aid,
-     {"AID", "wlan.dmg_capa.aid",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
-/* 8.4.2.127.2 DMG STA Capability Information field */
-    {&hf_ieee80211_tag_reverse_direction, /* DMG STA capa, bits [0] */
-     {"Reverse Direction", "wlan.dmg_capa.reverse_direction",
-      FT_BOOLEAN, 24, NULL, GENMASK(0, 0),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_length,
+     {"Message Length", "wlan.fixed.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_hlts, /* DMG STA capa, bits [1] */
-     {"Higher Layer Timer Synchronization", "wlan.dmg_capa.htls",
-      FT_BOOLEAN, 24, NULL, GENMASK(1, 1),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_mode,
+     {"Message Mode", "wlan.fixed.mode",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tpc, /* DMG STA capa, bits [2] */
-     {"TPC", "wlan.dmg_capa.tpc",
-      FT_BOOLEAN, 24, NULL, GENMASK(2, 2),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_ttl,
+     {"Message TTL", "wlan.fixed.ttl",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_spsh, /* DMG STA capa, bits [3] */
-     {"SPSH and Interference Mitigation", "wlan.dmg_capa.spsh",
-      FT_BOOLEAN, 24, NULL, GENMASK(3, 3),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_dstcount,
+     {"Destination Count", "wlan.fixed.dstcount",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_rx_antenna, /* DMG STA capa, bits [4..5] */
-     {"Number of RX DMG Antennas", "wlan.dmg_capa.num_rx",
-      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_base_custom), GENMASK(5, 4),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_hopcount,
+     {"Hop Count", "wlan.fixed.hopcount",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fast_link, /* DMG STA capa, bits [6] */
-     {"Fast Link Adaptation", "wlan.dmg_capa.fast_link",
-      FT_BOOLEAN, 24, NULL, GENMASK(6, 6),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_rreqid,
+     {"RREQ ID", "wlan.fixed.rreqid",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_num_sectors, /* DMG STA capa, bits [7..13] */
-     {"Total Number of Sectors", "wlan.dmg_capa.num_sectors",
-      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_base_custom), GENMASK(13, 7),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_sa,
+     {"Source Address", "wlan.fixed.sa",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Source MAC address", HFILL }},
 
-    {&hf_ieee80211_tag_rxss_length, /* DMG STA capa, bits [14..19] */
-     {"RXSS Length", "wlan.dmg_capa.rxss_len",
-      FT_UINT24, BASE_CUSTOM, CF_FUNC(extra_one_mul_two_base_custom), GENMASK(19, 14),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_ssn,
+     {"SSN", "wlan.fixed.ssn",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Source Sequence Number", HFILL }},
 
-    {&hf_ieee80211_tag_reciprocity, /* DMG STA capa, bits [20] */
-     {"DMG Antenna Reciprocity", "wlan.dmg_capa.reciprocity",
-      FT_BOOLEAN, 24, NULL, GENMASK(20, 20),
-      NULL, HFILL }},
-/* DMG STA capa, A-MPDU params, bits [21..26] */
-    {&hf_ieee80211_tag_max_ampdu_exp, /* DMG STA capa, bits [21..23] */
-     {"Maximum A-MPDU Length Exponent", "wlan.dmg_capa.max_ampdu_exp",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(23, 21),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_metric,
+     {"Metric", "wlan.fixed.metric",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Route Metric", HFILL }},
 
-    {&hf_ieee80211_tag_min_mpdu_spacing, /* DMG STA capa, bits [24..26] */
-     {"Minimum MPDU Start Spacing", "wlan.dmg_capa.min_mpdu_spacing",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(26-24, 24-24),
+    {&hf_ieee80211_ff_marvell_mesh_mgt_flags,
+     {"RREQ Flags", "wlan.fixed.hopcount",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ba_flow_control , /* DMG STA capa, bits [27] */
-     {"BA with Flow Control", "wlan.dmg_capa.bs_flow_ctrl",
-      FT_BOOLEAN, 24, NULL, GENMASK(27-24, 27-24),
-      NULL, HFILL }},
-/* DMG STA capa, supported MCS set, bits [28..51] */
-    {&hf_ieee80211_tag_max_sc_rx_mcs, /* DMG STA capa, bits [28..32] */
-     {"Maximum SC Rx MCS", "wlan.dmg_capa.max_sc_rx_mcs",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(32-24, 28-24),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_da,
+     {"Destination Address", "wlan.fixed.da",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Destination MAC address", HFILL }},
 
-    {&hf_ieee80211_tag_max_ofdm_rx_mcs, /* DMG STA capa, bits [33..37] */
-     {"Maximum OFDM Rx MCS", "wlan.dmg_capa.max_ofdm_rx_mcs",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(37-24, 33-24),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_dsn,
+     {"DSN", "wlan.fixed.dsn",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Destination Sequence Number", HFILL }},
 
-    {&hf_ieee80211_tag_max_sc_tx_mcs, /* DMG STA capa, bits [38..42] */
-     {"Maximum SC Tx MCS", "wlan.dmg_capa.max_sc_tx_mcs",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(42-24, 38-24),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_marvell_mesh_mgt_lifetime,
+     {"Lifetime", "wlan.fixed.lifetime",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Route Lifetime", HFILL }},
 
-    {&hf_ieee80211_tag_max_ofdm_tx_mcs, /* DMG STA capa, bits [43..47] */
-     {"Maximum OFDM Tx MCS", "wlan.dmg_capa.max_ofdm_tx_mcs",
-      FT_UINT24, BASE_DEC, NULL, GENMASK(47-24, 43-24),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_wme_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT16, BASE_HEX, VALS(wme_action_codes), 0,
+      "Management notification action code", HFILL }},
 
-    {&hf_ieee80211_tag_low_power_supported, /* DMG STA capa, bits [48] */
-     {"Low Power SC PHY Supported", "wlan.dmg_capa.low_power_suuported",
-      FT_BOOLEAN, 16, NULL, GENMASK(48-48, 48-48),
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_wme_status_code,
+     {"Status code", "wlan.fixed.status_code",
+      FT_UINT16, BASE_HEX, VALS(wme_status_codes), 0,
+      "Management notification setup response status code", HFILL }},
 
-    {&hf_ieee80211_tag_code_rate, /* DMG STA capa, bits [49] */
-     {"Code Rate 13/16", "wlan.dmg_capa.code_rate",
-      FT_BOOLEAN, 16, NULL, GENMASK(49-48, 49-48),
+    {&hf_ieee80211_ff_mesh_action,
+     {"Mesh Action code", "wlan.fixed.mesh_action",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &mesh_action_ext, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dtp, /* DMG STA capa, bits [52] */
-     {"DTP Supported", "wlan.dmg_capa.dtp",
-      FT_BOOLEAN, 16, NULL, GENMASK(52-48, 52-48),
+    {&hf_ieee80211_ff_multihop_action,
+     {"Multihop Action code", "wlan.fixed.multihop_action",
+      FT_UINT8, BASE_HEX, VALS(multihop_action), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_appdu_supp, /* DMG STA capa, bits [53] */
-     {"A-PPDU Supported", "wlan.dmg_capa.appdu_supp",
-      FT_BOOLEAN, 16, NULL, GENMASK(53-48, 53-48),
+    {&hf_ieee80211_ff_mesh_flags,
+     {"Mesh Flags", "wlan.fixed.mesh_flags",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_heartbeat, /* DMG STA capa, bits [54] */
-     {"HeartBeat", "wlan.dmg_capa.heartbeat",
-      FT_BOOLEAN, 16, NULL, GENMASK(54-48, 54-48),
+    {&hf_ieee80211_ff_mesh_ttl,
+     {"Mesh TTL", "wlan.fixed.mesh_ttl",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_other_aid, /* DMG STA capa, bits [55] */
-     {"Supports Other_AID", "wlan.dmg_capa.other_aid",
-      FT_BOOLEAN, 16, NULL, GENMASK(55-48, 55-48),
+    {&hf_ieee80211_ff_mesh_sequence,
+     {"Sequence Number", "wlan.fixed.mesh_sequence",
+      FT_UINT32, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pattern_recip, /* DMG STA capa, bits [56] */
-     {"Antenna Pattern Reciprocity", "wlan.dmg_capa.pattern_recip",
-      FT_BOOLEAN, 16, NULL, GENMASK(56-48, 56-48),
+    {&hf_ieee80211_ff_mesh_addr4,
+     {"Mesh Extended Address 4", "wlan.fixed.mesh_addr4",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_heartbeat_elapsed, /* DMG STA capa, bits [57..59] */
-     {"Heartbeat Elapsed Indication", "wlan.dmg_capa.heartbeat_elapsed",
-      FT_UINT16, BASE_DEC, NULL, GENMASK(59-48, 57-48),
+    {&hf_ieee80211_ff_mesh_addr5,
+     {"Mesh Extended Address 5", "wlan.fixed.mesh_addr5",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_grant_ack_supp, /* DMG STA capa, bits [60] */
-     {"Grant ACK Supported", "wlan.dmg_capa.grant_ack_supp",
-      FT_BOOLEAN, 16, NULL, GENMASK(60-48, 60-48),
+    {&hf_ieee80211_ff_mesh_addr6,
+     {"Mesh Extended Address 6", "wlan.fixed.mesh_addr6",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_RXSSTxRate_supp, /* DMG STA capa, bits [61] */
-     {"RXSSTxRate Supported", "wlan.dmg_capa.RXSSTxRate",
-      FT_BOOLEAN, 16, NULL, GENMASK(61-48, 61-48),
-      NULL, HFILL }},
-/* 8.4.2.127.3 DMG PCP/AP Capability Information field */
-    {&hf_ieee80211_tag_pcp_tddti, /* DMG PCP/AP capa, bits [0] */
-     {"TDDTI", "wlan.dmg_capa.pcp_tdtti",
-      FT_BOOLEAN, 16, NULL, GENMASK(0, 0),
+    {&hf_ieee80211_ff_selfprot_action,
+     {"Self-protected Action code", "wlan.fixed.selfprot_action",
+      FT_UINT8, BASE_HEX, VALS(selfprot_action), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pcp_PSA, /* DMG PCP/AP capa, bits [1] */
-     {"Pseudo-static Allocations", "wlan.dmg_capa.pcp_psa",
-      FT_BOOLEAN, 16, NULL, GENMASK(1, 1),
+    {&hf_ieee80211_mesh_peering_proto,
+     {"Mesh Peering Protocol ID", "wlan.peering.proto",
+      FT_UINT16, BASE_HEX, VALS(mesh_peering_proto_ids), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pcp_handover, /* DMG PCP/AP capa, bits [2] */
-     {"PDP Handover", "wlan.dmg_capa.pcp_handover",
-      FT_BOOLEAN, 16, NULL, GENMASK(2, 2),
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_peering_local_link_id,
+     {"Local Link ID", "wlan.peering.local_id",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Mesh Peering Management Local Link ID", HFILL }},
 
-    {&hf_ieee80211_tag_pcp_max_assoc, /* DMG PCP/AP capa, bits [3..10] */
-     {"Max Associated STA Number", "wlan.dmg_capa.pcp_max_assoc",
-      FT_UINT16, BASE_DEC, NULL, GENMASK(10, 3),
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_peering_peer_link_id,
+     {"Peer Link ID", "wlan.peering.peer_id",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Mesh Peering Management Peer Link ID", HFILL }},
 
-    {&hf_ieee80211_tag_pcp_power_src, /* DMG PCP/AP capa, bits [11] */
-     {"Power Source", "wlan.dmg_capa.pcp_power_src",
-      FT_BOOLEAN, 16, NULL, GENMASK(11, 11),
+    {&hf_ieee80211_ff_hwmp_flags,
+     {"HWMP Flags", "wlan.hwmp.flags",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pcp_decenter, /* DMG PCP/AP capa, bits [12] */
-     {"Decentralized PCP/AP Clustering", "wlan.dmg_capa.pcp_decenter",
-      FT_BOOLEAN, 16, NULL, GENMASK(12, 12),
+    {&hf_ieee80211_ff_hwmp_hopcount,
+     {"HWMP Hop Count", "wlan.hwmp.hopcount",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pcp_forwarding, /* DMG PCP/AP capa, bits [13] */
-     {"PCP Forwarding", "wlan.dmg_capa.pcp_forwarding",
-      FT_BOOLEAN, 16, NULL, GENMASK(13, 13),
+    {&hf_ieee80211_ff_hwmp_ttl,
+     {"HWMP TTL", "wlan.hwmp.ttl",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pcp_center, /* DMG PCP/AP capa, bits [14] */
-     {"Centralized PCP/AP Clustering", "wlan.dmg_capa.pcp_center",
-      FT_BOOLEAN, 16, NULL, GENMASK(14, 14),
+    {&hf_ieee80211_ff_hwmp_pdid,
+     {"HWMP Path Discovery ID", "wlan.hwmp.pdid",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_PSRSI,
-     {"PS Request Suspension Interval", "wlan.dmg_oper.psrsi",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_hwmp_orig_sta,
+     {"Originator STA Address", "wlan.hwmp.orig_sta",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_min_BHI_duration,
-     {"Min BHI Duration", "wlan.dmg_oper.min_BHI_duration",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_hwmp_orig_sn,
+     {"HWMP Originator Sequence Number", "wlan.hwmp.orig_sn",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      NULL, HFILL}},
 
-    {&hf_ieee80211_tag_brdct_sta_info_dur,
-     {"Broadcast STA Info Duration", "wlan.dmg_oper.brdcst_sta_info_dur",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_hwmp_orig_ext,
+     {"Originator External Address", "wlan.hwmp.orig_ext",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_assoc_resp_confirm_time,
-     {"Associated Response Confirm Time", "wlan.dmg_oper.assoc_resp_confirm_time",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_hwmp_lifetime,
+     {"HWMP Lifetime", "wlan.hwmp.lifetime",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_min_pp_duration,
-     {"Min PP Duration", "wlan.dmg_oper.min_pp_duration",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_hwmp_metric,
+     {"HWMP Metric", "wlan.hwmp.metric",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_SP_idle_timeout,
-     {"SP Idle Timeout", "wlan.dmg_oper.SP_idle_timeout",
+    {&hf_ieee80211_ff_hwmp_targ_count,
+     {"HWMP Target Count", "wlan.hwmp.targ_count",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_max_lost_beacons,
-     {"Max Lost Beacons", "wlan.dmg_oper.max_lost_beacons",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ff_hwmp_targ_flags,
+     {"HWMP Per-Target Flags", "wlan.hwmp.targ_flags",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_type,
-     {"Type", "wlan.sctor_id.type",
-      FT_UINT32, BASE_HEX, NULL, 0x0000000f,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_hwmp_targ_to_flags,
+     {"TO Flag", "wlan.hwmp.to_flag",
+      FT_BOOLEAN, 8, TFS(&hwmp_targ_to_flags), 0x01,
+      "Target Only Flag", HFILL }},
 
-    {&hf_ieee80211_tag_tap1,
-     {"Tap 1", "wlan.sctor_id.tap1",
-      FT_UINT32, BASE_HEX, NULL, 0x000003f0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_hwmp_targ_usn_flags,
+     {"USN Flag", "wlan.hwmp.usn_flag",
+      FT_BOOLEAN, 8, TFS(&hwmp_targ_usn_flags), 0x04,
+      "Unknown Target HWMP Sequence Number Flag", HFILL }},
 
-    {&hf_ieee80211_tag_state1,
-     {"State 1", "wlan.sctor_id.state1",
-      FT_UINT32, BASE_HEX, NULL, 0x0000fc00,
+    {&hf_ieee80211_ff_hwmp_targ_sta,
+     {"Target STA Address", "wlan.hwmp.targ_sta",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tap2,
-     {"Tap 2", "wlan.sctor_id.tap2",
-      FT_UINT32, BASE_HEX, NULL, 0x00ff0000,
+    {&hf_ieee80211_ff_hwmp_targ_ext,
+     {"Target External Address", "wlan.hwmp.targ_ext",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_state2,
-     {"State 2", "wlan.sctor_id.state2",
-      FT_UINT32, BASE_HEX, NULL, 0xff000000,
+    {&hf_ieee80211_ff_hwmp_targ_sn,
+     {"Target HWMP Sequence Number", "wlan.hwmp.targ_sn",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_allocation_id,
-     {"Allocation ID", "wlan.ext_sched.alloc_id",
-      FT_UINT16, BASE_DEC, NULL, 0x000f,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_path_sel_protocol,
+     {"Path Selection Protocol", "wlan.mesh.config.ps_protocol",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Path Selection Protocol", HFILL }},
 
-    {&hf_ieee80211_tag_allocation_type,
-     {"Allocation Type", "wlan.ext_sched.alloc_type",
-      FT_UINT16, BASE_DEC, VALS(allocation_type), 0x0070,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_path_sel_metric,
+     {"Path Selection Metric", "wlan.mesh.config.ps_metric",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Path Selection Metric", HFILL }},
 
-    {&hf_ieee80211_tag_pseudo_static,
-     {"Pseudo-static", "wlan.ext_sched.p_static",
-      FT_BOOLEAN, 16, NULL, 0x0080,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_congestion_control,
+     {"Congestion Control", "wlan.mesh.config.cong_ctl",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Congestion Control", HFILL }},
 
-    {&hf_ieee80211_tag_truncatable,
-     {"Truncatable", "wlan.ext_sched.truncatable",
-      FT_BOOLEAN, 16, NULL, 0x0100,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_sync_method,
+     {"Synchronization Method", "wlan.mesh.config.sync_method",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Synchronization Method", HFILL }},
 
-    {&hf_ieee80211_tag_extendable,
-     {"Extenedable", "wlan.ext_sched.extendable",
-      FT_BOOLEAN, 16, NULL, 0x0200,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_auth_protocol,
+     {"Authentication Protocol", "wlan.mesh.config.auth_protocol",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Authentication Protocol", HFILL }},
 
-    {&hf_ieee80211_tag_pcp_active,
-     {"PCP Active", "wlan.ext_sched.pcp_active",
-      FT_BOOLEAN, 16, NULL, 0x0400,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_formation_info,
+     {"Formation Info", "wlan.mesh.config.formation_info",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Formation Info", HFILL }},
 
-    {&hf_ieee80211_tag_lp_sc_used,
-     {"LP SC Used", "wlan.ext_sched.lp_sc_used",
-      FT_BOOLEAN, 16, NULL, 0x0800,
+    {&hf_ieee80211_mesh_form_info_num_of_peerings,
+     {"Number of Peerings", "wlan.mesh.config.formation_info.num_peers",
+      FT_UINT8, BASE_DEC, NULL, 0x7E,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_src_aid,
-     {"Source AID", "wlan.ext_sched.src_id",
-      FT_UINT8, BASE_DEC, NULL, 0xff,
-      NULL, HFILL }},
+    {&hf_ieee80211_mesh_config_capability,
+     {"Capability", "wlan.mesh.config.cap",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Mesh Configuration Capability", HFILL }},
 
-    {&hf_ieee80211_tag_dest_aid,
-     {"Destination AID", "wlan.ext_sched.dest_id",
-      FT_UINT8, BASE_DEC, NULL, 0xff,
+    {&hf_ieee80211_mesh_config_cap_accepting,
+     {"Accepting Additional Mesh Peerings", "wlan.mesh.config.cap.accept",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_alloc_start,
-     {"Allocation Start", "wlan.ext_sched.alloc_start",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_mesh_config_cap_mcca_support,
+     {"MCCA Support", "wlan.mesh.config.cap.mcca_support",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_alloc_block_duration,
-     {"Allocation Block Duration", "wlan.ext_sched.block_duration",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
+    {&hf_ieee80211_mesh_config_cap_mcca_enabled,
+     {"MCCA Enabled", "wlan.mesh.config.cap.mcca_enabled",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_num_blocks,
-     {"Number of Blocks", "wlan.ext_sched.num_blocks",
-      FT_UINT8, BASE_DEC, NULL, 0xff,
+    {&hf_ieee80211_mesh_config_cap_forwarding,
+     {"Mesh Forwarding", "wlan.mesh.config.cap.forwarding",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_alloc_block_period,
-     {"Allocation Block Period", "wlan.ext_sched.alloc_block_period",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
+    {&hf_ieee80211_mesh_config_cap_mbca_enabled,
+     {"MBCA Enabled", "wlan.mesh.config.cap.mbca_enabled",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_aid,
-     {"AID", "wlan.sta_avail.aid",
-      FT_UINT16, BASE_DEC, NULL, 0x00ff,
+    {&hf_ieee80211_mesh_config_cap_tbtt_adjusting,
+     {"TBTT Adjustment", "wlan.mesh.config.cap.tbtt_adjusting",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cbap,
-     {"CBAP", "wlan.sta_avail.cbap",
-      FT_BOOLEAN, 16, NULL, 0x0100,
+    {&hf_ieee80211_mesh_config_cap_power_save_level,
+     {"Power Save", "wlan.mesh.config.cap.power_save_level",
+      FT_BOOLEAN, 8, TFS(&mesh_config_cap_power_save_level_flags), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pp_avail,
-     {"PP Available", "wlan.sta_avail.pp_avail",
-      FT_BOOLEAN, 16, NULL, 0x0200,
+    {&hf_ieee80211_mesh_id,
+     {"Mesh ID", "wlan.mesh.id",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_next_ati_start_time,
-     {"Start Time", "wlan.next_ati.start_time",
+    {&hf_ieee80211_rann_flags,
+     {"RANN Flags", "wlan.rann.flags",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Root Announcement Flags", HFILL }},
+
+    {&hf_ieee80211_rann_root_sta,
+     {"Root STA Address", "wlan.rann.root_sta", FT_ETHER, BASE_NONE, NULL, 0,
+      "Root Mesh STA Address", HFILL }},
+
+    {&hf_ieee80211_rann_sn,
+     {"Root STA Sequence Number", "wlan.rann.rann_sn",
       FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+      "Root Mesh STA Sequence Number", HFILL }},
 
-    {&hf_ieee80211_tag_next_ati_duration,
-     {"ATI Duration", "wlan.next_ati.duration",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
-      NULL, HFILL }},
+    {&hf_ieee80211_rann_interval,
+     {"RANN Interval", "wlan.rann.interval",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Root Announcement Interval", HFILL }},
 
-    {&hf_ieee80211_tag_old_bssid,
-     {"Old BSSID", "wlan.pcp_handover.old_bssid",
+    {&hf_ieee80211_ff_qos_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT16, BASE_HEX, VALS(qos_action_codes), 0,
+      "QoS management action code", HFILL }},
+
+    {&hf_ieee80211_ff_ba_action,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_HEX, VALS(ba_action_codes), 0,
+      "Block Ack action code", HFILL }},
+
+    {&hf_ieee80211_ff_check_beacon,
+     {"Check Beacon", "wlan.fixed.check_beacon",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Unprotected WNM Check Beacon", HFILL }},
+
+    {&hf_ieee80211_ff_tod,
+     {"TOD", "wlan.fixed.tod",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Previous TS of transmit antenna port", HFILL }},
+
+    {&hf_ieee80211_ff_toa,
+     {"TOA", "wlan.fixed.toa",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Previous TS of receive antenna port", HFILL }},
+
+    {&hf_ieee80211_ff_max_tod_err,
+     {"MAX TOD ERROR", "wlan.fixed.max_tod_err",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Maximal Error at Previous TS of transmit antenna port", HFILL }},
+
+    {&hf_ieee80211_ff_max_toa_err,
+     {"MAX TOA ERROR", "wlan.fixed.max_toa_err",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Maximal Error at Previous TS of receive antenna port", HFILL }},
+
+    {&hf_ieee80211_ff_dls_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT16, BASE_HEX, VALS(dls_action_codes), 0,
+      "DLS management action code", HFILL }},
+
+    {&hf_ieee80211_ff_dst_mac_addr,
+     {"Destination address", "wlan.fixed.dst_mac_addr",
       FT_ETHER, BASE_NONE, NULL, 0,
-      "OLD_BSSID", HFILL }},
+      "Destination MAC address", HFILL }},
 
-    {&hf_ieee80211_tag_new_pcp_addr,
-     {"New PCP Address", "wlan.pcp_handover.new_pcp_addr",
+    {&hf_ieee80211_ff_src_mac_addr,
+     {"Source address", "wlan.fixed.src_mac_addr",
       FT_ETHER, BASE_NONE, NULL, 0,
-      "New_PCP_Address", HFILL }},
+      "Source MAC address", HFILL }},
+
+    {&hf_ieee80211_ff_req_ap_addr,
+     {"RequesterAP address", "wlan.fixed.req_ap_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_res_ap_addr,
+     {"ResponderAP address", "wlan.fixed.res_ap_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_ft_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_DEC, VALS(ft_action_codes), 0,
+      "Management action code", HFILL }},
 
-    {&hf_ieee80211_tag_bssid,
-     {"BSSID", "wlan.quiet_res.bssid",
+    {&hf_ieee80211_ff_sta_address,
+     {"STA Address", "wlan.fixed.sta_address",
       FT_ETHER, BASE_NONE, NULL, 0,
-      "BSS-ID", HFILL }},
-
-    {&hf_ieee80211_tag_duplex_relay,
-     {"Duplex", "wlan.relay_capabilities.duplex",
-      FT_UINT8, BASE_DEC, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cooperation_relay,
-     {"Cooperation", "wlan.relay_capabilities.cooperation",
-      FT_BOOLEAN, 8, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_target_ap_address,
+     {"Target AP Address", "wlan.fixed.target_ap_address",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Target AP MAC address", HFILL }},
 
-    {&hf_ieee80211_tag_tx_mode,
-     {"TX-Mode", "wlan.realy_trans_param.tx_mode",
-      FT_BOOLEAN, 8, NULL, 0x04,
+    {&hf_ieee80211_ff_gas_comeback_delay,
+     {"GAS Comeback Delay", "wlan.fixed.gas_comeback_delay",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_link_change_interval,
-     {"Link Change Interval", "wlan.realy_trans_param.link_change_interval",
-      FT_UINT8, BASE_CUSTOM, CF_FUNC(allocation_duration_base_custom), 0xff,
+    {&hf_ieee80211_ff_gas_fragment_id,
+     {"GAS Query Response Fragment ID", "wlan.fixed.gas_fragment_id",
+      FT_UINT8, BASE_DEC, NULL, 0x7f,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_data_sensing_time,
-     {"Data Sensing Time", "wlan.realy_trans_param.data_sensing_time",
-      FT_UINT8, BASE_DEC, NULL, 0xff,
+    {&hf_ieee80211_ff_more_gas_fragments,
+     {"More GAS Fragments", "wlan.fixed.more_gas_fragments",
+      FT_UINT8, BASE_DEC, NULL, 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_first_period,
-     {"First Period", "wlan.realy_trans_param.first_period",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
+    {&hf_ieee80211_ff_query_request_length,
+     {"Query Request Length", "wlan.fixed.query_request_length",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_second_period,
-     {"Second Period", "wlan.realy_trans_param.second_period",
-      FT_UINT16, BASE_DEC, NULL, 0xffff,
+    {&hf_ieee80211_ff_query_request,
+     {"Query Request", "wlan.fixed.query_request",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_initiator,
-     {"Initiator", "wlan.beam_refine.initiator",
-      FT_BOOLEAN, 40, NULL, 0x0000000001,
+    {&hf_ieee80211_ff_query_response_length,
+     {"Query Response Length", "wlan.fixed.query_response_length",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tx_train_res,
-     {"TX-train-response", "wlan.beam_refine.tx_train_res",
-      FT_BOOLEAN, 40, NULL, 0x0000000002,
+    {&hf_ieee80211_ff_query_response,
+     {"Query Response", "wlan.fixed.query_response",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_rx_train_res,
-     {"RX-train-response", "wlan.beam_refine.rx_train_res",
-      FT_BOOLEAN, 40, NULL, 0x0000000004,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragments,
+     {"GAS Query Response fragments", "wlan.fixed.fragments",
+      FT_NONE, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_tx_trn_ok,
-     {"TX-TRN-OK", "wlan.beam_refine.tx_trn_ok",
-      FT_BOOLEAN, 40, NULL, 0x0000000008,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment,
+     {"GAS Query Response fragment", "wlan.fixed.fragment",
+      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_txss_fbck_req,
-     {"TXSS-FBCK-REQ", "wlan.beam_refine.txss_fbck_req",
-      FT_BOOLEAN, 40, NULL, 0x0000000010,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_overlap,
+     {"GAS Query Response fragment overlap", "wlan.fixed.fragment.overlap",
+      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_bs_fbck,
-     {"BS-FBCK", "wlan.beam_refine.bs_fbck",
-      FT_UINT40, BASE_DEC, NULL, 0x00000007e0,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_overlap_conflict,
+     {"GAS Query Response fragment overlapping with conflicting data", "wlan.fixed.fragment.overlap.conflicts",
+      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_bs_fbck_antenna_id,
-     {"BS-FBCK Anetenna ID", "wlan.beam_refine.bs_fbck_antenna_id",
-      FT_UINT40, BASE_DEC, NULL, 0x0000001800,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_multiple_tails,
+     {"GAS Query Response has multiple tail fragments",  "wlan.fixed.fragment.multiple_tails",
+      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_snr_requested,
-     {"SNR Requested", "wlan.beam_refine.snr_req",
-      FT_BOOLEAN, 40, NULL, 0x0000002000,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_too_long_fragment,
+     {"GAS Query Response fragment too long", "wlan.fixed.fragment.too_long_fragment",
+      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_channel_measurement_requested,
-     {"Channel Measurement Requested", "wlan.beam_refine.ch_measure_req",
-      FT_BOOLEAN, 40, NULL, 0x0000004000,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_error,
+     {"GAS Query Response reassembly error", "wlan.fixed.fragment.error",
+      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_number_of_taps_requested,
-     {"Number of Taps Requested", "wlan.beam_refine.taps_req",
-      FT_UINT40, BASE_DEC | BASE_VAL64_STRING, VALS64(number_of_taps_values), 0x0000018000,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_fragment_count,
+     {"GAS Query Response fragment count", "wlan.fixed.fragment.count",
+      FT_UINT32, BASE_DEC, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_sector_id_order_req,
-     {"Sector ID Order Requested", "wlan.beam_refine.sector_id_req",
-      FT_BOOLEAN, 40, NULL, 0x0000020000,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_reassembled_in,
+     {"Reassembled in", "wlan.fixed.reassembled.in",
+      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_snr_present,
-     {"SNR Present", "wlan.beam_refine.snr_present",
-      FT_BOOLEAN, 40, NULL, 0x0000040000,
-      NULL, HFILL }},
+    {&hf_ieee80211_gas_resp_reassembled_length,
+     {"Reassembled length", "wlan.fixed.reassembled.length",
+      FT_UINT32, BASE_DEC, NULL, 0x00,
+      NULL, HFILL } },
 
-    {&hf_ieee80211_tag_channel_measurement_present,
-     {"Channel Measurement Present", "wlan.beam_refine.ch_measure_present",
-      FT_BOOLEAN, 40, NULL, 0x0000080000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_info_id,
+     {"Info ID", "wlan.fixed.anqp.info_id",
+      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
+      "Access Network Query Protocol Info ID", HFILL }},
 
-    {&hf_ieee80211_tag_tap_delay_present,
-     {"Tap Delay Present", "wlan.beam_refine.tap_delay_present",
-      FT_BOOLEAN, 40, NULL, 0x0000100000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_info_length,
+     {"Length", "wlan.fixed.anqp.info_length",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Access Network Query Protocol Length", HFILL }},
 
-    {&hf_ieee80211_tag_number_of_taps_present,
-     {"Number of Taps Present", "wlan.beam_refine.taps_present",
-      FT_UINT40, BASE_DEC | BASE_VAL64_STRING, VALS64(number_of_taps_values), 0x0000600000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_info,
+     {"Information", "wlan.fixed.anqp.info",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Access Network Query Protocol Information", HFILL }},
 
-    {&hf_ieee80211_tag_number_of_measurement,
-     {"Number of Measurements", "wlan.beam_refine.num_measurement",
-      FT_UINT40, BASE_DEC, NULL, 0x003f800000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_query_id,
+     {"ANQP Query ID", "wlan.fixed.anqp.query_id",
+      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
+      "Access Network Query Protocol Query ID", HFILL }},
 
-    {&hf_ieee80211_tag_sector_id_order_present,
-     {"Sector ID Order Present", "wlan.beam_refine.sector_id_present",
-      FT_BOOLEAN, 40, NULL, 0x0040000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_capability,
+     {"ANQP Capability", "wlan.fixed.anqp.capability",
+      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
+      "Access Network Query Protocol Query ID", HFILL }},
 
-    {&hf_ieee80211_tag_number_of_beams,
-     {"Number of Beams", "wlan.beam_refine.num_beams",
-      FT_UINT40, BASE_DEC, NULL, 0x0f80000000,
+    {&hf_ieee80211_ff_anqp_capability_vlen,
+     {"Vendor-specific Capability Length", "wlan.fixed.anqp.capability_vlen",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mid_extension,
-     {"MID Extension", "wlan.beam_refine.mid_ext",
-      FT_BOOLEAN, 40, NULL, 0x1000000000,
+    {&hf_ieee80211_ff_anqp_capability_vendor,
+     {"Vendor-specific Capability", "wlan.fixed.anqp.capability_vendor",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_capability_request,
-     {"Capability Request", "wlan.beam_refine.cap_req",
-      FT_BOOLEAN, 40, NULL, 0x2000000000,
+    {&hf_ieee80211_ff_venue_info_group,
+     {"Venue Group", "wlan.fixed.venue_info.group",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &venue_group_vals_ext, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_beam_refine_reserved,
-     {"Reserved", "wlan.beam_refine.reserved",
-      FT_UINT40, BASE_DEC, NULL, 0xc000000000,
+    {&hf_ieee80211_ff_venue_info_type,
+     {"Venue Type", "wlan.fixed.venue_info.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_nextpcp_list,
-      {"AID of NextPCP", "wlan.next_pcp.list",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_nextpcp_token,
-      {"NextPCP List Token", "wlan.next_pcp.token",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_reamaining_BI,
-      {"Remaining BI's", "wlan.pcp_handover.remaining_BIs",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_request_token,
-      {"Request Token", "wlan.request_token",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_venue_length,
+     {"Venue Name Duple Length", "wlan.fixed.anqp.venue.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_bi_start_time,
-      {"BI Start Time", "wlan.bi_start_time",
-       FT_UINT32, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_venue_language,
+     {"Language Code", "wlan.fixed.anqp.venue.language",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "Venue Name Language Code", HFILL }},
 
-    {&hf_ieee80211_tag_sleep_cycle,
-      {"Sleep Cycle", "wlan.sleep_cycle",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_venue_name,
+     {"Venue Name", "wlan.fixed.anqp.venue.name",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_num_awake_bis,
-      {"Number of Awake/Doze BIs", "wlan.num_awake_bis",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nw_auth_type_indicator,
+     {"Network Authentication Type Indicator", "wlan.fixed.anqp.nw_auth_type.indicator",
+      FT_UINT8, BASE_DEC, VALS(nw_auth_type_vals), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dmg_action_code,
-     {"DMG Action", "wlan.fixed.dmg_act",
-      FT_UINT8, BASE_HEX, VALS(ff_dmg_action_flags), 0,
-      "Action Code", HFILL }},
+    {&hf_ieee80211_ff_anqp_nw_auth_type_url_len,
+     {"Re-direct URL Length", "wlan.fixed.anqp.nw_auth_type.url_len",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_unprotected_dmg_action_code,
-     {"Unprotected DMG Action", "wlan.fixed.unprotected_dmg_act",
-      FT_UINT8, BASE_HEX, VALS(ff_unprotected_dmg_action_flags), 0,
-      "Action Code", HFILL }},
+    {&hf_ieee80211_ff_anqp_nw_auth_type_url,
+     {"Re-direct URL", "wlan.fixed.anqp.nw_auth_type_url",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dmg_pwr_mgmt,
-      {"DMG Power Management", "wlan.dmg.pwr_mgmt",
-       FT_BOOLEAN, 8, NULL, 0x01,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_roaming_consortium_oi_len,
+     {"OI Length", "wlan.fixed.anqp.roaming_consortium.oi_len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Roaming Consortium OI Length", HFILL }},
 
-    {&hf_ieee80211_ff_subject_address,
-      {"Subject Address", "wlan.dmg.subject_addr",
-       FT_ETHER, BASE_NONE, NULL, 0,
-       "MAC address of requested STA", HFILL }},
+    {&hf_ieee80211_ff_anqp_roaming_consortium_oi,
+     {"OI", "wlan.fixed.anqp.roaming_consortium.oi",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Roaming Consortium OI", HFILL }},
 
-    {&hf_ieee80211_ff_handover_reason,
-      {"Handover Reason", "wlan.dmg.handover_reason",
-       FT_UINT8, BASE_DEC, NULL, 0x03,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_ip_addr_avail_ipv6,
+     {"IPv6 Address", "wlan.fixed.anqp.ip_addr_availability.ipv6",
+      FT_UINT8, BASE_DEC, VALS(ip_addr_avail_ipv6_vals), 0x03,
+      "IP Address Type Availability information for IPv6", HFILL }},
 
-    {&hf_ieee80211_ff_handover_remaining_bi,
-      {"Handover Remaining BI", "wlan.dmg.handover_remaining_bi",
-       FT_UINT8, BASE_DEC, NULL, 0x01,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_ip_addr_avail_ipv4,
+     {"IPv4 Address", "wlan.fixed.anqp.ip_addr_availability.ipv4",
+      FT_UINT8, BASE_DEC, VALS(ip_addr_avail_ipv4_vals), 0xfc,
+      "IP Address Type Availability information for IPv4", HFILL }},
 
-    {&hf_ieee80211_ff_handover_result,
-      {"Handover Result", "wlan.dmg.handover_result",
-       FT_UINT8, BASE_DEC, NULL, 0x01,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_count,
+     {"NAI Realm Count", "wlan.fixed.anqp.nai_realm_list.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_handover_reject_reason,
-      {"Handover Reject Reason", "wlan.dmg.handover_reject_reason",
-       FT_UINT8, BASE_DEC, NULL, 0x03,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_field_len,
+     {"NAI Realm Data Field Length", "wlan.fixed.anqp.nai_realm_list.field_len",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_destination_reds_aid,
-      {"Destination REDS AID", "wlan.dmg.destination_reds_aid",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_encoding,
+     {"NAI Realm Encoding", "wlan.fixed.naqp_nai_realm_list.encoding",
+      FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals), 0x01,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_destination_aid,
-      {"Destination AID", "wlan.dmg.destination_aid",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_length,
+     {"NAI Realm Length", "wlan.fixed.naqp_nai_realm_list.realm_length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_realy_aid,
-      {"Relay AID", "wlan.dmg.realy_aid",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm,
+     {"NAI Realm", "wlan.fixed.naqp_nai_realm_list.realm",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_source_aid,
-      {"Source AID", "wlan.dmg.source_aid",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_eap_count,
+     {"EAP Method Count", "wlan.fixed.naqp_nai_realm_list.eap_method_count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_timing_offset,
-      {"Timing Offset", "wlan.dmg.timing_offset",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_eap_len,
+     {"EAP Method subfield Length", "wlan.fixed.naqp_nai_realm_list.eap_method_len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sampling_frequency_offset,
-      {"Sampling Frequency Offset", "wlan.dmg.sampling_frequency_offset",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_eap_method,
+     {"EAP Method", "wlan.fixed.naqp_nai_realm_list.eap_method",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_type_vals_ext, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_relay_operation_type,
-      {"Relay Operation Type", "wlan.dmg.relay_operation_type",
-       FT_UINT8, BASE_DEC, NULL, 0x03,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_count,
+     {"Authentication Parameter Count", "wlan.fixed.naqp_nai_realm_list.auth_param_count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_peer_sta_aid,
-      {"Peer STA AID", "wlan.dmg.peer_sta_aid",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_id,
+     {"Authentication Parameter ID", "wlan.fixed.naqp_nai_realm_list.auth_param_id",
+      FT_UINT8, BASE_DEC, VALS(nai_realm_auth_param_id_vals), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_snr,
-      {"SNR", "wlan.dmg.snr",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_len,
+     {"Authentication Parameter Length", "wlan.fixed.naqp_nai_realm_list.auth_param_len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_internal_angle,
-      {"Internal Angle", "wlan.dmg.internal_angle",
-       FT_UINT8, BASE_DEC, NULL, 0xfe,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_value,
+     {"Authentication Parameter Value", "wlan.fixed.naqp_nai_realm_list.auth_param_value",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_recommend,
-      {"Recommend", "wlan.dmg.recommend",
-       FT_UINT8, BASE_DEC, NULL, 0x01,
-       NULL, HFILL }},
+    {&hf_ieee80211_3gpp_gc_gud,
+     {"GUD", "wlan.fixed.anqp.3gpp_cellular_info.gud",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Generic container User Data", HFILL }},
 
-    {&hf_ieee80211_ff_fst_action_code,
-      {"FST Action Code", "wlan.fst.action_code",
-       FT_UINT8, BASE_HEX, VALS(ff_fst_action_flags), 0,
-       "Action Code", HFILL }},
+    {&hf_ieee80211_3gpp_gc_udhl,
+     {"UDHL", "wlan.fixed.anqp.3gpp_cellular_info.udhl",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "User Data Header Length", HFILL }},
 
-    {&hf_ieee80211_ff_llt,
-      {"Link Loss Timeout", "wlan.fst.llt",
-       FT_UINT32, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_3gpp_gc_iei,
+     {"IEI", "wlan.fixed.anqp.3gpp_cellular_info.iei",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Information Element Identity", HFILL }},
 
-    {&hf_ieee80211_ff_fsts_id,
-      {"FSTS ID", "wlan.session_trans.fsts_id",
-       FT_UINT32, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_3gpp_gc_plmn_len,
+     {"PLMN Length", "wlan.fixed.anqp.3gpp_cellular_info.plmn_len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Length of PLMN List value contents", HFILL }},
 
-    {&hf_ieee80211_ff_mmpdu_len,
-      {"MMPDU Length", "wlan.fst.mmpdu_length",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_3gpp_gc_num_plmns,
+     {"Number of PLMNs", "wlan.fixed.anqp.3gpp_cellular_info.num_plmns",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mmpdu_ctrl,
-      {"MMPDU Control", "wlan.fst.mmpdu_ctrl",
-       FT_UINT16, BASE_HEX, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_3gpp_gc_plmn,
+     {"PLMN", "wlan.fixed.anqp.3gpp_cellular_info.plmn_info",
+      FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_oct_mmpdu,
-      {"OCT MMPDU", "wlan.fst.oct_mmpdu",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_ieee80211_ff_anqp_domain_name_len,
+     {"Domain Name Length", "wlan.fixed.anqp.domain_name_list.len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl,
-     {"VHT MIMO Control", "wlan.vht.mimo_control.control",
-      FT_UINT24, BASE_HEX, NULL, 0x0,
+    {&hf_ieee80211_ff_anqp_domain_name,
+     {"Domain Name", "wlan.fixed.anqp.domain_name_list.name",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_nc_index,
-     {"Nc Index", "wlan.vht.mimo_control.ncindex",
-      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_nc_index_vals), 0x000007,
-      "Number of Columns Less One", HFILL }},
+    {&hf_ieee80211_ff_dls_timeout,
+     {"DLS timeout", "wlan.fixed.dls_timeout",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "DLS timeout value", HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_nr_index,
-     {"Nr Index", "wlan.vht.mimo_control.nrindex",
-      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_nr_index_vals), 0x000038,
-      "Number of Rows Less One", HFILL }},
+    {&hf_ieee80211_ff_sa_query_action_code,
+     {"Action code", "wlan.fixed.action_code",
+      FT_UINT8, BASE_DEC, VALS(sa_query_action_codes), 0,
+      "Management action code", HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_channel_width,
-     {"Channel Width", "wlan.vht.mimo_control.chanwidth",
-      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_channel_width_vals), 0x0000C0,
+    {&hf_ieee80211_ff_transaction_id,
+     {"Transaction Id", "wlan.fixed.transaction_id",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_grouping,
-     {"Grouping (Ng)", "wlan.vht.mimo_control.grouping",
-      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_grouping_vals), 0x000300,
+    {&hf_ieee80211_ff_send_confirm,
+     {"Send-Confirm", "wlan.fixed.send_confirm",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_codebook_info,
-     {"Codebook Information", "wlan.vht.mimo_control.codebookinfo",
-      FT_UINT24, BASE_HEX, NULL, 0x000400,
+    {&hf_ieee80211_ff_anti_clogging_token,
+     {"Anti-Clogging Token", "wlan.fixed.anti_clogging_token",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_feedback_type,
-     {"Feedback Type", "wlan.vht.mimo_control.feedbacktype",
-      FT_UINT24, BASE_HEX, VALS(ff_vht_mimo_cntrl_feedback_vals), 0x000800,
+    {&hf_ieee80211_ff_scalar,
+     {"Scalar", "wlan.fixed.scalar",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_remaining_feedback_seg,
-     {"Remaining Feedback Segments", "wlan.vht.mimo_control.remainingfeedbackseg",
-      FT_UINT24, BASE_HEX, NULL, 0x007000,
+    {&hf_ieee80211_ff_finite_field_element,
+     {"Finite Field Element", "wlan.fixed.finite_field_element",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_confirm,
+     {"Confirm", "wlan.fixed.confirm",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ff_finite_cyclic_group,
+     {"Group Id", "wlan.fixed.finite_cyclic_group",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_first_feedback_seg,
-     {"First Feedback Segments", "wlan.vht.mimo_control.firstfeedbackseg",
-      FT_UINT24, BASE_HEX, NULL, 0x008000,
-      NULL, HFILL }},
+    {&hf_ieee80211_anqp_wfa_subtype,
+     {"WFA Subtype", "wlan.anqp.wfa.subtype",
+      FT_UINT8, BASE_DEC, VALS(wfa_subtype_vals), 0, NULL, HFILL }},
+
+    {&hf_ieee80211_dpp_subtype,
+     {"DPP Subtype", "wlan.wfa.dpp.subtype",
+      FT_UINT8, BASE_DEC, VALS(dpp_subtype_vals), 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_reserved,
-     {"Reserved", "wlan.vht.mimo_control.reserved",
-      FT_UINT24, BASE_HEX, NULL, 0x030000,
-      NULL, HFILL }},
+    {&hf_hs20_indication_dgaf_disabled,
+     {"DGAF Disabled", "wlan.hs20.indication.dgaf_disabled",
+      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_mimo_cntrl_sounding_dialog_token_number,
-     {"Sounding Dialog Toker Number", "wlan.vht.mimo_control.soundingdialogtocketnbr",
-      FT_UINT24, BASE_HEX, NULL, 0xFC0000,
-      NULL, HFILL }},
+    {&hf_hs20_indication_pps_mo_id_present,
+     {"PPS MO ID Present", "wlan.hs20.indication.pps_mo_id_present",
+      FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_vht_action,
-      {"VHT Action", "wlan.vht.action",
-       FT_UINT8, BASE_DEC, VALS(vht_action_vals), 0,
-       NULL, HFILL }},
+    {&hf_hs20_indication_anqp_domain_id_present,
+     {"ANQP Domain ID Present", "wlan.hs20.indication.anqp_domain_id_present",
+      FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_compressed_beamforming_report,
-      {"VHT Compressed Beamforming Report", "wlan.vht.compressed_beamforming_report",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_reserved,
+      { "Reserved", "wlan.hs20.indication.reserved",
+       FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x80, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mu_exclusive_beamforming_report,
-      {"VHT MU Exclusive Beamforming Report","wlan.vht.exclusive_beamforming_report",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_indication_release_number,
+     {"Release Number", "wlan.hs20.indication.release_number",
+      FT_UINT8, BASE_DEC, VALS(hs20_indication_release_number_vals), 0xF0, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_compressed_beamforming_report_snr,
-      {"Signal to Noise Ratio (SNR)", "wlan.vht.compressed_beamforming_report.snr",
-       FT_INT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_indication_pps_mo_id,
+     {"PPS MO ID", "wlan.hs20.indication.pps_mo_id",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_compressed_beamforming_phi_angle,
-      {"PHI", "wlan.vht.compressed_beamforming_report.phi",
-       FT_NONE, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_indication_anqp_domain_id,
+     {"ANQP Domain ID", "wlan.hs20.indication.domain_id",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_compressed_beamforming_psi_angle,
-      {"PSI", "wlan.vht.compressed_beamforming_report.psi",
-       FT_NONE, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_subtype,
+     {"Subtype", "wlan.hs20.anqp.subtype",
+      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
+      "Hotspot 2.0 ANQP Subtype", HFILL }},
 
-    {&hf_ieee80211_vht_compressed_beamforming_feedback_matrix,
-      {"Compressed Beamforming Feedback Matrix", "wlan.vht.compressed_beamforming_report.feedback_matrix",
-       FT_NONE, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_reserved,
+     {"Reserved", "wlan.hs20.anqp.reserved",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mu_Exclusive_beamforming_delta_snr,
-      {"Delta SNR for space-time stream Nc for subcarrier k", "wlan.vht.exclusive_beamforming_report.delta_snr",
-       FT_NONE, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_payload,
+     {"Payload", "wlan.hs20.anqp.payload",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Hotspot 2.0 ANQP Payload", HFILL }},
 
-    {&hf_ieee80211_vht_group_id_management,
-      {"Group ID Management", "wlan.vht.group_id_management",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_hs_query_list,
+     {"Queried Subtype", "wlan.hs20.anqp.hs_query_list",
+      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
+      "Queried HS 2.0 Element Subtype", HFILL }},
 
-    {&hf_ieee80211_vht_membership_status_array,
-      {"Membership Status Array", "wlan.vht.membership_status_array",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_hs_capability_list,
+     {"Capability", "wlan.hs20.anqp.hs_capability_list",
+      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
+      "Hotspot 2.0 ANQP Subtype Capability", HFILL }},
 
-      {&hf_ieee80211_vht_user_position_array,
-        {"User Position Array", "wlan.vht.user_position_array",
-         FT_BYTES, BASE_NONE, NULL, 0,
-         NULL, HFILL }},
+    {&hf_hs20_anqp_ofn_length,
+     {"Length", "wlan.hs20.anqp.ofn.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Operator Friendly Name Length", HFILL }},
 
-      {&hf_ieee80211_vht_membership_status_field,
-        {"Membership Status Field", "wlan.vht.membership_status_array.field",
-         FT_UINT8, BASE_DEC, NULL, 0,
-         NULL, HFILL }},
+    {&hf_hs20_anqp_ofn_language,
+     {"Language Code", "wlan.hs20.anqp.ofn.language",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "Operator Friendly Name Language Code", HFILL }},
 
-      {&hf_ieee80211_vht_user_position_field,
-        {"User Position Field", "wlan.vht.user_position_array.field",
-         FT_UINT8, BASE_DEC, NULL, 0,
-         NULL, HFILL }},
+    {&hf_hs20_anqp_ofn_name,
+     {"Operator Friendly Name", "wlan.hs20.anqp.ofn.name",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_vht_operation_mode_notification,
-      {"Operation Mode Notification", "wlan.vht.operation_mode_notification",
-       FT_BYTES, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_link_status,
+     {"Link Status", "wlan.hs20.anqp.wan_metrics.link_status",
+      FT_UINT8, BASE_DEC, VALS(hs20_wm_link_status_vals), 0x03, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_allocation_id,
-      {"Allocation ID", "wlan.dmg_tspec.allocation_id",
-       FT_UINT24, BASE_DEC, NULL, 0x00000f,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_symmetric_link,
+     {"Symmetric Link", "wlan.hs20.anqp.wan_metrics.symmetric_link",
+      FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_allocation_type,
-      {"Allocation Type", "wlan.dmg_tspec.allocation_type",
-       FT_UINT24, BASE_DEC, NULL, 0x000070,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_at_capacity,
+     {"At Capacity", "wlan.hs20.anqp.wan_metrics.at_capacity",
+      FT_UINT8, BASE_DEC, NULL, 0x08, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_allocation_format,
-      {"Allocation Format", "wlan.dmg_tspec.allocation_format",
-       FT_BOOLEAN, 24, NULL, 0x000080,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_reserved,
+     {"Reserved", "wlan.hs20.anqp.wan_metrics.reserved",
+      FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_pseudo_static,
-      {"Pseudo Static", "wlan.dmg_tspec.pseudo_static",
-       FT_BOOLEAN, 24, NULL, 0x000100,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_downlink_speed,
+     {"Downlink Speed", "wlan.hs20.anqp.wan_metrics.downlink_speed",
+      FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_truncatable,
-      {"Truncatable", "wlan.dmg_tspec.truncatable",
-       FT_BOOLEAN, 24, NULL, 0x000200,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_uplink_speed,
+     {"Uplink Speed", "wlan.hs20.anqp.wan_metrics.uplink_speed",
+      FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_extendable,
-      {"Extendable", "wlan.dmg_tspec.extendable",
-       FT_BOOLEAN, 24, NULL, 0x000400,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_downlink_load,
+     {"Downlink Load", "wlan.hs20.anqp.wan_metrics.downlink_load",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_lp_sc_used,
-      {"LP SC Usec", "wlan.dmg_tspec.lp_sc_used",
-       FT_BOOLEAN, 24, NULL, 0x000800,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_uplink_load,
+     {"Uplink Load", "wlan.hs20.anqp.wan_metrics.uplink_load",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_up,
-      {"UP", "wlan.dmg_tspec.up",
-       FT_UINT24, BASE_HEX, NULL, 0x007000,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_wan_metrics_lmd,
+     {"LMD", "wlan.hs20.anqp.wan_metrics.lmd",
+      FT_UINT16, BASE_DEC, NULL, 0, "Load Measurement Duration", HFILL }},
 
-    {&hf_ieee80211_tag_tspec_dest_aid,
-      {"Destination AID", "wlan.dmg_tspec.dest_aid",
-       FT_UINT24, BASE_HEX, NULL, 0x7f8000,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_cc_proto_ip_proto,
+     {"IP Protocol", "wlan.hs20.anqp.cc.ip_proto",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "ProtoPort Tuple - IP Protocol", HFILL }},
 
-    {&hf_ieee80211_tag_tspec_allocation_period,
-      {"Allocation Period", "wlan.dmg_tspec.allocation_period",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_cc_proto_port_num,
+     {"Port Number", "wlan.hs20.anqp.cc.port_num",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "ProtoPort Tuple - Port Number", HFILL }},
 
-    {&hf_ieee80211_tag_tspec_min_allocation,
-      {"Minimal Allocation", "wlan.dmg_tspec.min_allocation",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_cc_proto_status,
+     {"Status", "wlan.hs20.anqp.cc.status",
+      FT_UINT8, BASE_DEC, VALS(hs20_cc_status_vals), 0,
+      "ProtoPort Tuple - Status", HFILL }},
 
-    {&hf_ieee80211_tag_tspec_max_allocation,
-      {"Maximal Allocation", "wlan.dmg_tspec.max_allocation",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_nai_hrq_count,
+     {"NAI Home Realm Count", "wlan.hs20.anqp.nai_hrq.count",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_min_duration,
-      {"Minimal Duration", "wlan.dmg_tspec.min_duration",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_nai_hrq_encoding_type,
+     {"NAI Home Realm Encoding Type",
+      "wlan.hs20.anqp.nai_hrq.encoding_type",
+      FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals),
+      0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_num_of_constraints,
-      {"Number Of Constraints", "wlan.dmg_tspec.num_of_constraints",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_nai_hrq_length,
+     {"NAI Home Realm Name Length", "wlan.hs20.anqp.nai_hrq.length",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_tsconst_start_time,
-      {"TS Constraint Start Time", "wlan.dmg_tspec.tsconst.start_time",
-       FT_UINT32, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_nai_hrq_realm_name,
+     {"NAI Home Realm Name", "wlan.hs20.anqp.nai_hrq.name",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_tsconst_duration,
-      {"TS Constraint Duration", "wlan.dmg_tspec.tsconst.duration",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_anqp_oper_class_indic,
+     {"Operating Class", "wlan.hs20.anqp.oper_class_indic.oper_class",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_tsconst_period,
-      {"TS Constraint Period", "wlan.dmg_tspec.tsconst.period",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_friendly_names_len,
+     {"OSU Friendly Name Length", "wlan.hs20.osu_friendly_names_len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tspec_tsconst_interferer_mac,
-      {"TS Constraint Interferer MAC Address", "wlan.dmg_tspec.tsconst.interferer_mac",
-       FT_ETHER, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_friendly_name_length,
+     {"Length", "wlan.hs20.osu_friendly_name.len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_measurement_feedback_realtive_I,
-      {"Channel Measurement Feedback Relative I", "wlan.ch_meas_fb.realtive_I",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_friendly_name_language,
+     {"Language Code", "wlan.hs20.osu_friendly_name.language",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_measurement_feedback_realtive_Q,
-      {"Channel Measurement Feedback Relative Q", "wlan.ch_meas_fb.realtive_Q",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_friendly_name_name,
+     {"OSU Friendly Name", "wlan.hs20.osu_friendly_name.name",
+     FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_measurement_feedback_tap_delay,
-      {"Channel Measurement Feedback Tap Delay", "wlan.ch_meas_fb.tap_delay",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_server_uri_len,
+     {"OSU Server URI Length", "wlan.hs20.osu_server_uri_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_measurement_feedback_sector_id,
-      {"Channel Measurement Feedback Secotr ID", "wlan.ch_meas_fb.sector_id",
-       FT_UINT8, BASE_DEC, NULL, 0xfc,
-       NULL, HFILL }},
+    {&hf_hs20_osu_server_uri,
+     {"OSU Server URI", "wlan.hs20.osu_server_uri",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_measurement_feedback_antenna_id,
-      {"Channel Measurement Feedback Antenna ID", "wlan.ch_meas_fb.antenna_id",
-       FT_UINT8, BASE_DEC, NULL, 0x03,
-       NULL, HFILL }},
+    {&hf_hs20_osu_method_list_len,
+     {"OSU Method List Length", "wlan.hs20.osu_method_list_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_awake_window,
-      {"Awake Window", "wlan.awake_window",
-       FT_UINT16, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_method_val,
+     {"OSU Method", "wlan.hs20.osu_method_list.method",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_addba_ext_no_frag,
-      {"ADDBA No Fragmentation", "wlan.addba.no_frag",
-       FT_BOOLEAN, 8, NULL, 0x80,
-       NULL, HFILL }},
+    {&hf_hs20_icons_avail_len,
+     {"Icons Available Length", "wlan.hs20.osu_icons_avail_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_ctrl_sta_role,
-      {"STA Rold", "wlan.multi_band.ctrl_sta_role",
-       FT_UINT8, BASE_DEC, NULL, 0xe0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_providers_list_ssid_len,
+     {"SSID Length", "wlan.hs20.anqp_osu_prov_list.ssid_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_ctrl_addr_present,
-      {"STA MAC Address Present", "wlan.multi_band.ctrl_addr_present",
-       FT_BOOLEAN, 8, NULL, 0x10,
-       NULL, HFILL }},
+    {&hf_hs20_osu_providers_ssid,
+     {"SSID", "wlan.hs20.anqp_osu_prov_list.ssid",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_ctrl_cipher_present,
-      {"PCS Present", "wlan.multi_band.ctrl_cipher_present",
-       FT_BOOLEAN, 8, NULL, 0x08,
-       NULL, HFILL }},
+    {&hf_hs20_osu_providers_count,
+     {"Number of OSU Providers", "wlan.hs20.anqp_osu_prov_list.number",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_oper_class,
-      {"Operating Class", "wlan.multi_band.oper_class",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_prov_length,
+     {"OSU Provider Length", "wlan.hs20.anqp_osu_prov.len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_channel_number,
-      {"Channel Number", "wlan.multi_band.channel_number",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_icon_request_filename,
+     {"Icon Filename", "wlan.hs20.anqp_icon_request.icon_filename",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_tsf_offset,
-      {"TSF Offset", "wlan.multi_band.tsf_offset",
-       FT_UINT64, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_width,
+     {"Icon Width", "wlan.hs20.osu_icons_avail.icon_width",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_conn_ap,
-      {"Connection Capability AP", "wlan.multi_band.conn_ap",
-       FT_BOOLEAN, 8, NULL, 0x80,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_height,
+     {"Icon Height", "wlan.hs20.osu_icons_avail.icon_height",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_conn_pcp,
-      {"Connection Capability PCP", "wlan.multi_band.conn_pcp",
-       FT_BOOLEAN, 8, NULL, 0x40,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_lang_code,
+     {"Language Code", "wlan.hs20.osu_icons_avail.lang_code",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_conn_dls,
-      {"Connection Capability DLS", "wlan.multi_band.conn_dls",
-       FT_BOOLEAN, 8, NULL, 0x20,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_icon_type_len,
+     {"Icon Type Length", "wlan.hs20.osu_icons_avail.icon_type_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_conn_tdls,
-      {"Connection Capability TDLS", "wlan.multi_band.conn_tdls",
-       FT_BOOLEAN, 8, NULL, 0x10,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_icon_type,
+     {"Icon Type", "wlan.hs20.osu_icons_avail.icon_type",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_conn_ibss,
-      {"Connection Capability IBSS", "wlan.multi_band.conn_ibss",
-       FT_BOOLEAN, 8, NULL, 0x08,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_filename_len,
+     {"Icon Filename Length", "wlan.hs20.osu_icons_avail.icon_filename_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_fst_timeout,
-      {"FST Session Timeout", "wlan.multi_band.fst_timeout",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_osu_icon_avail_filename,
+     {"Icon Filename", "wlan.hs20.osu_icons_avail.icon_filename",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_multi_band_sta_mac,
-      {"Transmitting STA MAC Address", "wlan.multi_band.sta_mac",
-       FT_ETHER, BASE_NONE, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_nai_len,
+     {"OSU_NAI Length", "wlan.hs20.osu_nai.len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_activity,
-      {"Activity", "wlan.activity",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_nai,
+     {"OSU_NAI", "wlan.hs20.osu_nai",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dmg_link_adapt_mcs,
-      {"MCS", "wlan.dmg_link_adapt.mcs",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_service_desc_len,
+     {"OSU Service Desctription Length", "wlan.hs20.osu_service_desc_len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dmg_link_adapt_link_margin,
-      {"Link Margin", "wlan.dmg_link_adapt.link_margin",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_service_desc_duple_len,
+     {"Length", "wlan.hs20.osu_service_desc.duple.len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ref_timestamp,
-      {"Reference Timestamp", "wlan.ref_timestamp",
-       FT_UINT32, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_service_desc_lang,
+     {"Language Code", "wlan.hs20.osu_service_desc.duple.lang",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_non_qos,
-      {"Non-Qos Data Frames", "wlan.switching_stream.non_qos",
-       FT_BOOLEAN, 8, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_osu_service_desc,
+     {"OSU Service Description", "wlan.hs20.osu_service_desc.duple.desc",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_param_num,
-      {"Number Of Switching Stream Elements", "wlan.switching_stream.param_num",
-       FT_UINT8, BASE_DEC, NULL, 0,
-       NULL, HFILL }},
+    {&hf_hs20_icon_binary_file_status,
+     {"Download Status Code", "wlan.hs20.anqp_icon_request.download_status",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_old_tid,
-      {"Old Band TID", "wlan.switching_stream.old_tid",
-       FT_UINT16, BASE_DEC, NULL, 0xf000,
-       NULL, HFILL }},
+    {&hf_hs20_icon_type_length,
+     {"Icon Type Length", "wlan.hs20.anqp_icon_request.icon_type_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_old_direction,
-      {"Old Band Direction", "wlan.switching_stream.old_direction",
-       FT_BOOLEAN, 16, NULL, 0x0800,
-       NULL, HFILL }},
+    {&hf_hs20_icon_type,
+     {"Icon Type", "wlan.hs20.anqp_icon_request.icon_type",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_new_tid,
-      {"New Band TID", "wlan.switching_stream.new_tid",
-       FT_UINT16, BASE_DEC, NULL, 0x0780,
-       NULL, HFILL }},
+    {&hf_hs20_icon_binary_data_len,
+     {"Icon Binary Data Length", "wlan.anqp_icon_request.icon_binary_data_len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_new_direction,
-      {"New Band Direction", "wlan.switching_stream.new_direction",
-       FT_BOOLEAN, 16, NULL, 0x0040,
-       NULL, HFILL }},
+    {&hf_hs20_icon_binary_data,
+     {"Icon Binary Data", "wlan.h220.anqp_icon_request.icon_binary_data",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_new_valid_id,
-      {"Stream ID in New Band Valid", "wlan.switching_stream.new_valid_id",
-       FT_BOOLEAN, 16, NULL, 0x0020,
-       NULL, HFILL }},
+    {&hf_hs20_subscription_remediation_url_len,
+     {"Server URL Length", "wlan.hs20.subs_remediation.server_url_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_switching_stream_llt_type,
-      {"LLT Type", "wlan.switching_stream.llt_type",
-       FT_BOOLEAN, 16, NULL, 0x0010,
-       NULL, HFILL }},
+    {&hf_hs20_subscription_remediation_server_url,
+     {"Server URL", "wlan.hs20.subs_remediation.server_url",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_timestamp,
-     {"Timestamp", "wlan.fixed.timestamp",
-      FT_UINT64, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_hs20_subscription_remediation_server_method,
+     {"Server Method", "wlan.hs20.subs_remediation.server_method",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_auth_alg,
-     {"Authentication Algorithm", "wlan.fixed.auth.alg",
-      FT_UINT16, BASE_DEC, VALS(auth_alg), 0,
-      NULL, HFILL }},
+    {&hf_hs20_deauth_reason_code,
+     {"De-Auth Reason Code", "wlan.hs20.deauth.reason_code",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_beacon_interval,
-     {"Beacon Interval", "wlan.fixed.beacon",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(beacon_interval_base_custom), 0,
-      NULL, HFILL }},
+    {&hf_hs20_reauth_delay,
+     {"Re-Auth Delay", "wlan.hs20.deauth.reauth_delay",
+      FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_seconds, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_fixed_parameters,
-     {"Fixed parameters", "wlan.fixed.all",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_hs20_deauth_reason_url_len,
+     {"Reason URL Length", "wlan.hs20.deauth.reason_url_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tagged_parameters,
-     {"Tagged parameters", "wlan.tagged.all",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_hs20_deauth_imminent_reason_url,
+     {"Reason URL", "wlan.hs20.deauth.reason_url",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ssid,
-     {"SSID", "wlan.ssid",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "Indicates the identity of an ESS or IBSS", HFILL }},
+    {&hf_hs20_anqp_venue_url_length,
+     {"Length", "wlan.hs20.venue_url.len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supp_rates,
-     {"Supported Rates", "wlan.supported_rates",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
-      "In Mbit/sec, (B) for Basic Rates", HFILL }},
+    {&hf_hs20_anqp_venue_number,
+     {"Venue number", "wlan.hs20.venue_url.venue_num",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fh_dwell_time,
-     {"Dwell Time", "wlan.fh.dwell_time",
-      FT_UINT16, BASE_HEX, NULL, 0x0,
-      "In Time Unit (TU)", HFILL }},
+    {&hf_hs20_anqp_venue_url,
+     {"Venue URL", "wlan.hs20.venue_url.url",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fh_hop_set,
-     {"Hop Set", "wlan.fh.hop_set",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_advice_of_charge_length,
+     {"Length", "wlan.hs20.advice_of_charge.len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fh_hop_pattern,
-     {"Hop Pattern", "wlan.fh.hop_pattern",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_advice_of_charge_type,
+     {"Advice of Charge Type", "wlan.hs20.advice_of_charge.type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fh_hop_index,
-     {"Hop Index", "wlan.fh.hop_index",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_aoc_nai_realm_encoding,
+     {"NAI Realm Encoding", "wlan.hs20.advice_of_charge.nai_realm_enc",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_params,
-     {"Block Ack Parameters", "wlan.fixed.baparams",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_aoc_nai_realm_len,
+     {"NAI Realm Length", "wlan.hs20.advice_of_charge.nai_realm_len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_params_amsdu_permitted,
-     {"A-MSDUs", "wlan.fixed.baparams.amsdu",
-      FT_BOOLEAN, 16, TFS(&ff_block_ack_params_amsdu_permitted_flag), 0x0001,
-      "A-MSDU Permitted in QoS Data MPDUs", HFILL }},
+    {&hf_hs20_anqp_aoc_nai_realm,
+     {"NAI Realm", "wlan.hs20.advice_of_charge.nai_realm",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_params_policy,
-     {"Block Ack Policy", "wlan.fixed.baparams.policy",
-      FT_BOOLEAN, 16, TFS(&ff_block_ack_params_policy_flag), 0x0002,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_aoc_plan_len,
+     {"Plan length", "wlan.hs20.advice_of_charge.plan_info_tuples.plan_len",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_params_tid,
-     {"Traffic Identifier", "wlan.fixed.baparams.tid",
-      FT_UINT16, BASE_HEX, NULL, 0x003C,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_aoc_plan_lang,
+     {"Plan language", "wlan.hs20.advice_of_charge.plan_info_tuples.plan_lang",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_params_buffer_size,
-     {"Number of Buffers (1 Buffer = 2304 Bytes)", "wlan.fixed.baparams.buffersize",
-      FT_UINT16, BASE_DEC, NULL, 0xFFC0,
-      "Number of Buffers", HFILL }},
+    {&hf_hs20_anqp_aoc_plan_curcy,
+     {"Plan currency", "wlan.hs20.advice_of_charge.plan_info_tuples.plan_curcy",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_timeout,
-     {"Block Ack Timeout", "wlan.fixed.batimeout",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_hs20_anqp_aoc_plan_information,
+     {"Plan information", "wlan.hs20.advice_of_charge.plan_info_tuples.info",
+      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_ssc,
-     {"Block Ack Starting Sequence Control (SSC)", "wlan.fixed.ssc",
-      FT_UINT16, BASE_HEX, 0, 0,
+    {&hf_ieee80211_tag,
+     {"Tag", "wlan.tag",
+      FT_NONE, BASE_NONE, 0x0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_ssc_fragment,
-     {"Fragment", "wlan.fixed.ssc.fragment",
-      FT_UINT16, BASE_DEC, 0, 0x000f,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_number,
+     {"Tag Number", "wlan.tag.number",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0,
+      "Element ID", HFILL }},
 
-    {&hf_ieee80211_ff_block_ack_ssc_sequence,
-     {"Starting Sequence Number", "wlan.fixed.ssc.sequence",
-      FT_UINT16, BASE_DEC, 0, 0xfff0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_length,
+     {"Tag length", "wlan.tag.length",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Length of tag", HFILL }},
+
+    {&hf_ieee80211_tag_interpretation,
+     {"Tag interpretation", "wlan.tag.interpretation",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "Interpretation of tag", HFILL }},
 
-    {&hf_ieee80211_ff_delba_param,
-     {"Delete Block Ack (DELBA) Parameter Set", "wlan.fixed.delba.param",
-      FT_UINT16, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_data,
+     {"Tag Data", "wlan.tag.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Data Interpretation of tag", HFILL }},
 
-    {&hf_ieee80211_ff_delba_param_reserved,
-     {"Reserved", "wlan.fixed.delba.param.reserved",
-      FT_UINT16, BASE_HEX, 0, 0x07ff,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_oui,
+     {"OUI", "wlan.tag.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
+      "OUI of vendor specific IE", HFILL }},
 
-    {&hf_ieee80211_ff_delba_param_init,
-     {"Initiator", "wlan.fixed.delba.param.initiator",
-      FT_BOOLEAN, 16, 0, 0x0800,
+    {&hf_ieee80211_tag_oui_wfa_subtype,
+     {"WFA Subtype", "wlan.tag.oui.wfa_subtype",
+      FT_UINT8, BASE_DEC, VALS(wfa_subtype_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_delba_param_tid,
-     {"TID", "wlan.fixed.delba.param.tid",
-      FT_UINT16, BASE_HEX, 0, 0xf000,
-      "Traffic Identifier (TID)", HFILL }},
+    {&hf_ieee80211_tag_ds_param_channel,
+     {"Current Channel", "wlan.ds.current_channel",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "DS Parameter Set - Current Channel", HFILL }},
 
-    {&hf_ieee80211_ff_max_reg_pwr,
-     {"Maximum Regulation Power", "wlan.fixed.maxregpwr",
-      FT_UINT16, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_cfp_count,
+     {"CFP Count", "wlan.cfp.count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Indicates how many delivery traffic indication messages (DTIMs)", HFILL }},
 
-    {&hf_ieee80211_ff_measurement_pilot_int,
-     {"Measurement Pilot Interval", "wlan.fixed.msmtpilotint",
-      FT_UINT8, BASE_HEX, 0, 0,
-      "Measurement Pilot Interval Fixed Field", HFILL }},
+    {&hf_ieee80211_tag_cfp_period,
+     {"CFP Period", "wlan.cfp.period",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Indicates the number of DTIM intervals between the start of CFPs", HFILL }},
 
-    {&hf_ieee80211_ff_country_str,
-     {"Country String", "wlan.fixed.country",
-      FT_STRING, BASE_NONE, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_cfp_max_duration,
+     {"CFP Max Duration", "wlan.cfp.max_duration",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the maximum duration (in TU) of the CFP that may be generated by this PCF", HFILL }},
 
-    {&hf_ieee80211_ff_max_tx_pwr,
-     {"Maximum Transmit Power", "wlan.fixed.maxtxpwr",
-      FT_UINT8, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_cfp_dur_remaining,
+     {"CFP Dur Remaining", "wlan.cfp.dur_remaining",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the maximum time (in TU) remaining in the present CFP", HFILL }},
 
-    {&hf_ieee80211_ff_tx_pwr_used,
-     {"Transmit Power Used", "wlan.fixed.txpwr",
-      FT_UINT8, BASE_HEX, 0, 0,
+    {&hf_ieee80211_tag_vendor_oui_type,
+     {"Vendor Specific OUI Type", "wlan.tag.vendor.oui.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_transceiver_noise_floor,
-     {"Transceiver Noise Floor", "wlan.fixed.tnoisefloor",
-      FT_UINT8, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_vendor_data,
+     {"Vendor Specific Data", "wlan.tag.vendor.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Unknown/undecoded Vendor Specific Data", HFILL }},
 
-    {&hf_ieee80211_ff_channel_width,
-     {"Supported Channel Width", "wlan.fixed.chanwidth",
-      FT_UINT8, BASE_HEX, VALS(ff_channel_width_vals), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tim_dtim_count,
+     {"DTIM count", "wlan.tim.dtim_count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Indicates how many Beacon frames (including the current frame) appear before the next DTIM", HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_ap,
-     {"QoS Information (AP)", "wlan.fixed.qosinfo.ap",
+    {&hf_ieee80211_tim_dtim_period,
+     {"DTIM period", "wlan.tim.dtim_period",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Indicates the number of beacon intervals between successive DTIMs", HFILL }},
+
+    {&hf_ieee80211_tim_bmapctl,
+     {"Bitmap control", "wlan.tim.bmapctl",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_ap_edca_param_set_counter,
-     {"EDCA Parameter Set Update Count", "wlan.fixed.qosinfo.ap.edcaupdate",
-      FT_UINT8, BASE_HEX, NULL, 0x0F,
-      "Enhanced Distributed Channel Access (EDCA) Parameter Set Update Count", HFILL }},
-
-    {&hf_ieee80211_ff_qos_info_ap_q_ack,
-     {"Q-Ack", "wlan.fixed.qosinfo.ap.qack",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_q_ack_flag), 0x10,
-      "QoS Ack", HFILL }},
+    {&hf_ieee80211_tim_bmapctl_mcast,
+     {"Multicast", "wlan.tim.bmapctl.multicast",
+      FT_BOOLEAN, 8, NULL, 0x1,
+      "Contains the Traffic Indicator bit associated with Association ID 0", HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_ap_queue_req,
-     {"Queue Request", "wlan.fixed.qosinfo.ap.queue_req",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_queue_req_flag), 0x20,
+    {&hf_ieee80211_tim_bmapctl_offset,
+     {"Bitmap Offset", "wlan.tim.bmapctl.offset",
+      FT_UINT8, BASE_HEX, NULL, 0xFE,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_ap_txop_request,
-     {"TXOP Request", "wlan.fixed.qosinfo.ap.txopreq",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_ap_txop_request_flag), 0x40,
-      "Transmit Opportunity (TXOP) Request", HFILL }},
+    {&hf_ieee80211_tim_partial_virtual_bitmap,
+     {"Partial Virtual Bitmap", "wlan.tim.partial_virtual_bitmap",
+      FT_BYTES, BASE_NONE, NULL, 0x0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_ap_reserved,
-     {"Reserved", "wlan.fixed.qosinfo.ap.reserved",
-      FT_BOOLEAN, 8, NULL, 0x80,
+    {&hf_ieee80211_tim_aid,
+     {"Association ID", "wlan.tim.aid",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta,
-     {"QoS Information (STA)", "wlan.fixed.qosinfo.sta",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "TCLAS Processing", HFILL }},
+    {&hf_ieee80211_tag_ibss_atim_window,
+     {"Atim Windows", "wlan.ibss.atim_windows",
+      FT_UINT16, BASE_HEX, NULL, 0x0,
+      "Contains the ATIM Window length in TU", HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_ac_vo,
-     {"AC_VO U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_vo",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x01,
+    {&hf_ieee80211_tag_country_info_code,
+     {"Code", "wlan.country_info.code",
+      FT_STRING, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_ac_vi,
-     {"AC_VI U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_vi",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x02,
+    {&hf_ieee80211_tag_country_info_env,
+     {"Environment", "wlan.country_info.environment",
+      FT_UINT8, BASE_HEX, VALS(environment_vals), 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_ac_bk,
-     {"AC_BK U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_bk",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x04,
+    {&hf_ieee80211_tag_country_info_pad,
+     {"Padding", "wlan.country_info.padding",
+      FT_BYTES, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_ac_be,
-     {"AC_BE U-APSD Flag", "wlan.fixed.qosinfo.sta.ac_be",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_ac_flag), 0x08,
+    {&hf_ieee80211_tag_country_info_fnm,
+     {"Country Info", "wlan.country_info.fnm",
+      FT_NONE, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_q_ack,
-     {"Q-Ack", "wlan.fixed.qosinfo.sta.qack",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_q_ack_flag), 0x10,
-      "QoS Ack", HFILL }},
-
-    {&hf_ieee80211_ff_qos_info_sta_max_sp_length,
-     {"Max SP Length", "wlan.fixed.qosinfo.sta.max_sp_length",
-      FT_UINT8, BASE_HEX, VALS(ff_qos_info_sta_max_sp_len_flags) , 0x60,
+    {&hf_ieee80211_tag_country_info_fnm_fcn,
+     {"First Channel Number", "wlan.country_info.fnm.fcn",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_info_sta_more_data_ack,
-     {"More Data Ack", "wlan.fixed.qosinfo.sta.more_data_ack",
-      FT_BOOLEAN, 8, TFS(&ff_qos_info_sta_more_data_ack_flag), 0x80,
+    {&hf_ieee80211_tag_country_info_fnm_nc,
+     {"Number of Channels", "wlan.country_info.fnm.nc",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sm_pwr_save,
-     {"Spatial Multiplexing (SM) Power Control", "wlan.fixed.sm.powercontrol",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_country_info_fnm_mtpl,
+     {"Maximum Transmit Power Level", "wlan.country_info.fnm.mtpl",
+      FT_INT8, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sm_pwr_save_enabled,
-     {"SM Power Save", "wlan.fixed.sm.powercontrol.enabled",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
-      "Spatial Multiplexing (SM) Power Save", HFILL }},
-
-    {&hf_ieee80211_ff_sm_pwr_save_sm_mode,
-     {"SM Mode", "wlan.fixed.sm.powercontrol.mode",
-      FT_BOOLEAN, 8, TFS(&ff_sm_pwr_save_sm_mode_flag), 0x02,
-      "Spatial Multiplexing (SM) Mode", HFILL }},
-
-    {&hf_ieee80211_ff_sm_pwr_save_reserved,
-     {"Reserved", "wlan.fixed.sm.powercontrol.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xFC,
+    {&hf_ieee80211_tag_country_info_rrc,
+     {"Country Info", "wlan.country_info.rrc",
+      FT_NONE, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_pco_phase_cntrl,
-     {"Phased Coexistence Operation (PCO) Phase Control", "wlan.fixed.pco.phasecntrl",
-      FT_BOOLEAN, BASE_NONE, TFS(&ff_pco_phase_cntrl_flag), 0x0,
+    {&hf_ieee80211_tag_country_info_rrc_oei,
+     {"Operating Extension Identifier", "wlan.country_info.rrc.oei",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_param_set,
-     {"Power Save Multi-Poll (PSMP) Parameter Set", "wlan.fixed.psmp.paramset",
-      FT_UINT16, BASE_HEX, 0, 0,
+    {&hf_ieee80211_tag_country_info_rrc_oc,
+     {"Operating Class", "wlan.country_info.rrc.oc",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_param_set_n_sta,
-     {"Number of STA Info Fields Present", "wlan.fixed.psmp.paramset.nsta",
-      FT_UINT16, BASE_HEX, 0, 0x000F,
+    {&hf_ieee80211_tag_country_info_rrc_cc,
+     {"Coverage Class", "wlan.country_info.rrc.cc",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_param_set_more_psmp,
-     {"More PSMP", "wlan.fixed.psmp.paramset.more",
-      FT_BOOLEAN, 16, TFS(&ff_psmp_param_set_more_psmp_flag), 0x0010,
-      "More Power Save Multi-Poll (PSMP)", HFILL }},
-
-    {&hf_ieee80211_ff_psmp_param_set_psmp_sequence_duration,
-     {"PSMP Sequence Duration [us]", "wlan.fixed.psmp.paramset.seqduration",
-      FT_UINT16, BASE_DEC, 0, 0xFFE0,
-      "Power Save Multi-Poll (PSMP) Sequence Duration", HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_parameter_prime_radix,
+     {"Prime Radix", "wlan.fh_hopping.parameter.prime_radix",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl,
-     {"MIMO Control", "wlan.fixed.mimo.control",
-      FT_BYTES, BASE_NONE, 0, 0x0,
+    {&hf_ieee80211_tag_fh_hopping_parameter_nb_channels,
+     {"Number of Channels", "wlan.fh_hopping.parameter.nb_channels",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_nc_index,
-     {"Nc Index", "wlan.fixed.mimo.control.ncindex",
-      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nc_index_flags), 0x0003,
-      "Number of Columns Less One", HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_table_flag,
+     {"Flag", "wlan.fh_hopping.table.flag",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
+      "Indicates that a Random Table is present when the value is 1", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_nr_index,
-     {"Nr Index", "wlan.fixed.mimo.control.nrindex",
-      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nr_index_flags), 0x000C,
-      "Number of Rows Less One", HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_table_number_of_sets,
+     {"Number of Sets", "wlan.fh_hopping.table.number_of_sets",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      "Indicates the total number of sets within the hopping patterns", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_channel_width,
-     {"Channel Width", "wlan.fixed.mimo.control.chanwidth",
-      FT_BOOLEAN, 16, TFS(&ff_mimo_cntrl_channel_width_flag), 0x0010,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_table_modulus,
+     {"Modulus", "wlan.fh_hopping.table.modulus",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
+      "Indicate the values to be used in the equations to create a hopping sequence from the Random Table information", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_grouping,
-     {"Grouping (Ng)", "wlan.fixed.mimo.control.grouping",
-      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_grouping_flags), 0x0060,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_table_offset,
+     {"Offset", "wlan.fh_hopping.table.offset",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
+      "Indicate the values to be used in the equations to create a hopping sequence from the Random Table information", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_coefficient_size,
-     {"Coefficient Size (Nb)", "wlan.fixed.mimo.control.cosize",
-      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_coefficient_size_flags), 0x0180,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_fh_hopping_random_table,
+     {"Random Table", "wlan.fh_hopping.table.random_table",
+      FT_UINT16, BASE_HEX, NULL, 0x0,
+      "It is a vector of single octet values that indicate the random sequence to be followed during a hopping sequence", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_codebook_info,
-     {"Codebook Information", "wlan.fixed.mimo.control.codebookinfo",
-      FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_codebook_info_flags), 0x0600,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_request,
+     {"Requested Element ID", "wlan.tag.request",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0,
+      "The list of elements that are to be included in the responding STA Probe Response frame", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_remaining_matrix_segment,
-     {"Remaining Matrix Segment", "wlan.fixed.mimo.control.matrixseg",
-      FT_UINT16, BASE_HEX, 0, 0x3800,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_up,
+     {"User Priority", "wlan.tclas.user_priority",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Contains the value of the UP of the associated MSDUs", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_reserved,
-     {"Reserved", "wlan.fixed.mimo.control.reserved",
-      FT_UINT16, BASE_HEX, 0, 0xC000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_type,
+     {"Classifier Type", "wlan.tclas.class_type",
+      FT_UINT8, BASE_DEC, VALS(classifier_type), 0,
+      "Specifies the type of classifier parameters", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_cntrl_sounding_timestamp,
-     {"Sounding Timestamp", "wlan.fixed.mimo.control.soundingtime",
-      FT_UINT32, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask,
+     {"Classifier Mask", "wlan.tclas.class_mask",
+      FT_UINT8, BASE_HEX,  NULL, 0,
+      "Specifies a bitmap where bits that are set to 1 identify a subset of the classifier parameters", HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info,
-     {"Power Save Multi-Poll (PSMP) Station Information", "wlan.fixed.psmp.stainfo",
-      FT_UINT64, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask0_src_addr,
+     {"Source Address", "wlan.tclas.class_mask.src_addr",
+      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_type,
-     {"Sta Info Type", "wlan.fixed.psmp.stainfo.type",
-      FT_UINT32, BASE_HEX, VALS(ff_psmp_sta_info_flags), PSMP_STA_INFO_FLAG_TYPE,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask0_dst_addr,
+     {"Destination Address", "wlan.tclas.class_mask.dst_addr",
+      FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_dtt_start_offset,
-     {"DTT Start Offset", "wlan.fixed.psmp.stainfo.dttstart",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_START,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask0_type,
+     {"Type", "wlan.tclas.class_mask.type",
+      FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_dtt_duration,
-     {"DTT Duration", "wlan.fixed.psmp.stainfo.dttduration",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_DURATION,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_ver,
+     {"Version", "wlan.tclas.class_mask.version",
+      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_sta_id,
-     {"Target Station ID", "wlan.fixed.psmp.stainfo.staid",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_STA_ID,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_src_ip,
+     {"Source IP Address", "wlan.tclas.class_mask.src_ip",
+      FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_utt_start_offset,
-     {"UTT Start Offset", "wlan.fixed.psmp.stainfo.uttstart",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_START,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_dst_ip,
+     {"Destination IP Address", "wlan.tclas.class_mask.dst_ip",
+      FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_utt_duration,
-     {"UTT Duration", "wlan.fixed.psmp.stainfo.uttduration",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_DURATION,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_src_port,
+     {"Source Port", "wlan.tclas.class_mask.src_port",
+      FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_reserved_small,
-     {"Reserved", "wlan.fixed.psmp.stainfo.reserved",
-      FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_IA_RESERVED,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_dst_port,
+     {"Destination Port", "wlan.tclas.class_mask.dst_port",
+      FT_UINT8, BASE_HEX, NULL, 0x10, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_reserved_large,
-     {"Reserved", "wlan.fixed.psmp.stainfo.reserved64",
-      FT_UINT64, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_ipv4_dscp,
+     {"DSCP", "wlan.tclas.class_mask.dscp",
+      FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_psmp_sta_info_psmp_multicast_id,
-     {"Power Save Multi-Poll (PSMP) Multicast ID", "wlan.fixed.psmp.stainfo.multicastid",
-      FT_UINT64, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_ipv4_proto,
+     {"Protocol", "wlan.tclas.class_mask.proto",
+      FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection,
-     {"Antenna Selection", "wlan.fixed.antsel",
-      FT_UINT8, BASE_HEX, 0, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask1_ipv6_flow,
+     {"Flow Label", "wlan.tclas.class_mask.flow_label",
+      FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_0,
-     {"Antenna 0", "wlan.fixed.antsel.ant0",
-      FT_UINT8, BASE_HEX, 0, 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_class_mask2_tci,
+     {"802.1Q CLAN TCI", "wlan.tclas.class_mask.tci",
+      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_1,
-     {"Antenna 1", "wlan.fixed.antsel.ant1",
-      FT_UINT8, BASE_HEX, 0, 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_src_mac_addr,
+     {"Source address", "wlan.tclas.src_mac_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Classifier Parameters Ethernet Type", HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_2,
-     {"Antenna 2", "wlan.fixed.antsel.ant2",
-      FT_UINT8, BASE_HEX, 0, 0x04,
+    {&hf_ieee80211_tclas_dst_mac_addr,
+     {"Destination address", "wlan.tclas.dat_mac_addr",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_3,
-     {"Antenna 3", "wlan.fixed.antsel.ant3",
-      FT_UINT8, BASE_HEX, 0, 0x08,
+    {&hf_ieee80211_tclas_ether_type,
+     {"Ethernet Type", "wlan.tclas.ether_type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_4,
-     {"Antenna 4", "wlan.fixed.antsel.ant4",
-      FT_UINT8, BASE_HEX, 0, 0x10,
+    {&hf_ieee80211_tclas_version,
+     {"IP Version", "wlan.tclas.version",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_5,
-     {"Antenna 5", "wlan.fixed.antsel.ant5",
-      FT_UINT8, BASE_HEX, 0, 0x20,
+    {&hf_ieee80211_tclas_ipv4_src,
+     {"IPv4 Src Addr", "wlan.tclas.ipv4_src",
+      FT_IPv4, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_6,
-     {"Antenna 6", "wlan.fixed.antsel.ant6",
-      FT_UINT8, BASE_HEX, 0, 0x40,
+    {&hf_ieee80211_tclas_ipv4_dst,
+     {"IPv4 Dst Addr", "wlan.tclas.ipv4_dst",
+      FT_IPv4, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ant_selection_7,
-     {"Antenna 7", "wlan.fixed.antsel.ant7",
-      FT_UINT8, BASE_HEX, 0, 0x80,
+    {&hf_ieee80211_tclas_src_port,
+     {"Source Port", "wlan.tclas.src_port",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ext_channel_switch_announcement,
-     {"Extended Channel Switch Announcement", "wlan.fixed.extchansw",
-      FT_UINT32, BASE_HEX, 0, 0,
+    {&hf_ieee80211_tclas_dst_port,
+     {"Destination Port", "wlan.tclas.dst_port",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_mode,
-     {"Channel Switch Mode", "wlan.fixed.extchansw.switchmode",
-      FT_UINT32, BASE_HEX, VALS(ieee80211_tag_ext_channel_switch_announcement_switch_mode_flags), 0x000000FF,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_dscp,
+     {"IPv4 DSCP", "wlan.tclas.dscp",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "IPv4 Differentiated Services Code Point (DSCP) Field", HFILL }},
 
-    {&hf_ieee80211_ff_ext_channel_switch_announcement_new_ope_class,
-     {"New Operating Class", "wlan.fixed.extchansw.new.opeclass",
-      FT_UINT32, BASE_HEX, NULL, 0x0000FF00,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_protocol,
+     {"Protocol", "wlan.tclas.protocol",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "IPv4 Protocol", HFILL }},
 
-    {&hf_ieee80211_ff_ext_channel_switch_announcement_new_chan_number,
-     {"New Channel Number", "wlan.fixed.extchansw.new.channumber",
-      FT_UINT32, BASE_HEX, NULL, 0x00FF0000,
+    {&hf_ieee80211_tclas_ipv6_src,
+     {"IPv6 Src Addr", "wlan.tclas.ipv6_src",
+      FT_IPv6, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_count,
-     {"Channel Switch Count", "wlan.extchanswitch.switchcount",
-      FT_UINT32, BASE_HEX, NULL, 0xFF000000,
+    {&hf_ieee80211_tclas_ipv6_dst,
+     {"IPv6 Dst Addr", "wlan.tclas.ipv6_dst",
+      FT_IPv6, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ht_info,
-     {"HT Information", "wlan.fixed.extchansw",
-      FT_UINT8, BASE_HEX, 0, 0,
-      "HT Information Fixed Field", HFILL }},
-
-    {&hf_ieee80211_ff_ht_info_information_request,
-     {"Information Request", "wlan.fixed.mimo.control.chanwidth",
-      FT_BOOLEAN, 8, TFS(&ff_ht_info_information_request_flag), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_tclas_flow,
+     {"Flow Label", "wlan.tclas.flow",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      "IPv6 Flow Label", HFILL }},
 
-    {&hf_ieee80211_ff_ht_info_40_mhz_intolerant,
-     {"40 MHz Intolerant", "wlan.fixed.mimo.control.chanwidth",
-      FT_BOOLEAN, 8, TFS(&ff_ht_info_40_mhz_intolerant_flag), 0x02,
+    {&hf_ieee80211_tclas_tag_type,
+     {"802.1Q Tag Type", "wlan.tclas.tag_type",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ht_info_sta_chan_width,
-     {"Station Channel Width", "wlan.fixed.mimo.control.chanwidth",
-      FT_BOOLEAN, 8, TFS(&ff_ht_info_sta_chan_width_flag), 0x04,
+    {&hf_ieee80211_tag_challenge_text,
+     {"Challenge Text", "wlan.tag.challenge_text",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ht_info_reserved,
-     {"Reserved", "wlan.fixed.extchansw",
-      FT_UINT8, BASE_HEX, 0, 0xF8,
-      "Reserved Field", HFILL }},
-
-    {&hf_ieee80211_ff_ht_action,
-     {"HT Action", "wlan.fixed.htact",
-      FT_UINT8, BASE_HEX, VALS(ff_ht_action_flags), 0,
-      "HT Action Code", HFILL }},
+    {&hf_ieee80211_rsn_version,
+     {"RSN Version", "wlan.rsn.version",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the version number of the RSNA protocol", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_csi_snr,
-     {"Signal to Noise Ratio (SNR)", "wlan.mimo.csimatrices.snr",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_rsn_gcs,
+     {"Group Cipher Suite", "wlan.rsn.gcs",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_gcs_base_custom), 0,
+      "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }},
 
-    {&hf_ieee80211_ff_mimo_csi_matrices,
-     {"CSI Matrices", "wlan.mimo.csimatrices",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_rsn_gcs_oui,
+     {"Group Cipher Suite OUI", "wlan.rsn.gcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mimo_csi_bf_matrices,
-     {"Beamforming Feedback Matrices", "wlan.mimo.csimatrices.bf",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_rsn_gcs_type,
+     {"Group Cipher Suite type", "wlan.rsn.gcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mimo_csi_cbf_matrices,
-     {"Compressed Beamforming Feedback Matrices", "wlan.mimo.csimatrices.cbf",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_rsn_gcs_80211_type,
+     {"Group Cipher Suite type", "wlan.rsn.gcs.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_ff_public_action,
-     {"Public Action", "wlan.fixed.publicact",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ff_pa_action_codes_ext, 0,
-      "Public Action Code", HFILL }},
 
-    {&hf_ieee80211_ff_protected_public_action,
-     {"Protected Public Action", "wlan.fixed.publicact",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ff_ppa_action_codes_ext, 0,
-      "Protected Public Action Code", HFILL }},
+    {&hf_ieee80211_rsn_pcs_count,
+     {"Pairwise Cipher Suite Count", "wlan.rsn.pcs.count",
+      FT_UINT16, BASE_DEC,  NULL, 0,
+      "Indicates the number of pairwise cipher suite selectors that are contained in the Pairwise Cipher Suite List", HFILL }},
 
-    {&hf_ieee80211_ff_capture,
-     {"Capabilities Information", "wlan.fixed.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Capability information", HFILL }},
+    {&hf_ieee80211_rsn_pcs_list,
+     {"Pairwise Cipher Suite List", "wlan.rsn.pcs.list",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "Contains a series of cipher suite selectors that indicate the pairwisecipher suites", HFILL }},
 
-    {&hf_ieee80211_ff_cf_ess,
-     {"ESS capabilities", "wlan.fixed.capabilities.ess",
-      FT_BOOLEAN, 16, TFS(&cf_ess_flags), 0x0001,
+    {&hf_ieee80211_rsn_pcs,
+     {"Pairwise Cipher Suite", "wlan.rsn.pcs",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_pcs_base_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_ibss,
-     {"IBSS status", "wlan.fixed.capabilities.ibss",
-      FT_BOOLEAN, 16, TFS(&cf_ibss_flags), 0x0002,
-      "IBSS participation", HFILL }},
+    {&hf_ieee80211_rsn_pcs_oui,
+     {"Pairwise Cipher Suite OUI", "wlan.rsn.pcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_sta_poll,
-     {"CFP participation capabilities", "wlan.fixed.capabilities.cfpoll.sta",
-      FT_UINT16, BASE_HEX, VALS(sta_cf_pollable), 0x020C,
-      "CF-Poll capabilities for a STA", HFILL }},
+    {&hf_ieee80211_rsn_pcs_type,
+     {"Pairwise Cipher Suite type", "wlan.rsn.pcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_ap_poll,
-     {"CFP participation capabilities", "wlan.fixed.capabilities.cfpoll.ap",
-      FT_UINT16, BASE_HEX, VALS(ap_cf_pollable), 0x020C,
-      "CF-Poll capabilities for an AP", HFILL }},
+    {&hf_ieee80211_rsn_pcs_80211_type,
+     {"Pairwise Cipher Suite type", "wlan.rsn.pcs.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_privacy,
-     {"Privacy", "wlan.fixed.capabilities.privacy",
-      FT_BOOLEAN, 16, TFS(&cf_privacy_flags), 0x0010,
-      "WEP support", HFILL }},
+    {&hf_ieee80211_rsn_akms_count,
+     {"Auth Key Management (AKM) Suite Count", "wlan.rsn.akms.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }},
 
-    {&hf_ieee80211_ff_cf_preamble,
-     {"Short Preamble", "wlan.fixed.capabilities.preamble",
-      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x0020,
-      NULL, HFILL }},
+    {&hf_ieee80211_rsn_akms_list,
+     {"Auth Key Management (AKM) List", "wlan.rsn.akms.list",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
 
-    {&hf_ieee80211_ff_cf_pbcc,
-     {"PBCC", "wlan.fixed.capabilities.pbcc",
-      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x0040,
-      "PBCC Modulation", HFILL }},
+    {&hf_ieee80211_rsn_akms,
+     {"Auth Key Management (AKM) Suite", "wlan.rsn.akms",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_akms_base_custom), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_agility,
-     {"Channel Agility", "wlan.fixed.capabilities.agility",
-      FT_BOOLEAN, 16, TFS(&tfs_inuse_not_inuse), 0x0080,
+    {&hf_ieee80211_rsn_akms_oui,
+     {"Auth Key Management (AKM) OUI", "wlan.rsn.akms.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_spec_man,
-     {"Spectrum Management", "wlan.fixed.capabilities.spec_man",
-      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x0100,
+    {&hf_ieee80211_rsn_akms_type,
+     {"Auth Key Management (AKM) type", "wlan.rsn.akms.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_short_slot_time,
-     {"Short Slot Time", "wlan.fixed.capabilities.short_slot_time",
-      FT_BOOLEAN, 16, TFS(&tfs_inuse_not_inuse), 0x0400,
+    {&hf_ieee80211_rsn_akms_80211_type,
+     {"Auth Key Management (AKM) type", "wlan.rsn.akms.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_keymgmt_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_apsd,
-     {"Automatic Power Save Delivery", "wlan.fixed.capabilities.apsd",
-      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x0800,
+    {&hf_ieee80211_rsn_cap,
+     {"RSN Capabilities", "wlan.rsn.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "RSN Capability information", HFILL }},
+
+    {&hf_ieee80211_rsn_cap_preauth,
+     {"RSN Pre-Auth capabilities", "wlan.rsn.capabilities.preauth",
+      FT_BOOLEAN, 16, TFS(&rsn_preauth_flags), 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_radio_measurement,
-     {"Radio Measurement", "wlan.fixed.capabilities.radio_measurement",
-      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x1000,
+    {&hf_ieee80211_rsn_cap_no_pairwise,
+     {"RSN No Pairwise capabilities", "wlan.rsn.capabilities.no_pairwise",
+      FT_BOOLEAN, 16, TFS(&rsn_no_pairwise_flags), 0x0002,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dsss_ofdm,
-     {"DSSS-OFDM", "wlan.fixed.capabilities.dsss_ofdm",
-      FT_BOOLEAN, 16, TFS(&tfs_allowed_not_allowed), 0x2000,
-      "DSSS-OFDM Modulation", HFILL }},
+    {&hf_ieee80211_rsn_cap_ptksa_replay_counter,
+     {"RSN PTKSA Replay Counter capabilities", "wlan.rsn.capabilities.ptksa_replay_counter",
+      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x000C,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_del_blk_ack,
-     {"Delayed Block Ack", "wlan.fixed.capabilities.del_blk_ack",
-      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x4000,
+    {&hf_ieee80211_rsn_cap_gtksa_replay_counter,
+     {"RSN GTKSA Replay Counter capabilities", "wlan.rsn.capabilities.gtksa_replay_counter",
+      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x0030,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_cf_imm_blk_ack,
-     {"Immediate Block Ack", "wlan.fixed.capabilities.imm_blk_ack",
-      FT_BOOLEAN, 16, TFS(&tfs_implemented_not_implemented), 0x8000,
+    {&hf_ieee80211_rsn_cap_mfpr,
+     {"Management Frame Protection Required", "wlan.rsn.capabilities.mfpr",
+      FT_BOOLEAN, 16, NULL, 0x0040,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_auth_seq,
-     {"Authentication SEQ", "wlan.fixed.auth_seq",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Authentication Sequence Number", HFILL }},
+    {&hf_ieee80211_rsn_cap_mfpc,
+     {"Management Frame Protection Capable", "wlan.rsn.capabilities.mfpc",
+      FT_BOOLEAN, 16, NULL, 0x0080,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_assoc_id,
-     {"Association ID", "wlan.fixed.aid",
-      FT_UINT16, BASE_HEX, NULL, 0x3FFF,
+    {&hf_ieee80211_rsn_cap_jmr,
+     {"Joint Multi-band RSNA", "wlan.rsn.capabilities.jmr",
+      FT_BOOLEAN, 16, NULL, 0x0100,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_listen_ival,
-     {"Listen Interval", "wlan.fixed.listen_ival",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_rsn_cap_peerkey,
+     {"PeerKey Enabled", "wlan.rsn.capabilities.peerkey",
+      FT_BOOLEAN, 16, NULL, 0x0200,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_current_ap,
-     {"Current AP", "wlan.fixed.current_ap",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "MAC address of current AP", HFILL }},
+    {&hf_ieee80211_rsn_pmkid_count,
+     {"PMKID Count", "wlan.rsn.pmkid.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the number of PMKID  selectors that are contained in the PMKID Suite List", HFILL }},
 
-    {&hf_ieee80211_ff_reason,
-     {"Reason code", "wlan.fixed.reason_code",
-      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_reason_code_ext, 0,
-      "Reason for unsolicited notification", HFILL }},
+    {&hf_ieee80211_rsn_pmkid_list,
+     {"PMKID List", "wlan.rsn.pmkid.list",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
 
-    {&hf_ieee80211_ff_status_code,
-     {"Status code", "wlan.fixed.status_code",
-      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_status_code_ext, 0,
-      "Status of requested event", HFILL }},
+    {&hf_ieee80211_rsn_pmkid,
+     {"PMKID", "wlan.pmkid.akms",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_category_code,
-     {"Category code", "wlan.fixed.category_code",
-      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &category_codes_ext, 0,
-      "Management action category", HFILL }},
+    {&hf_ieee80211_rsn_gmcs,
+     {"Group Management Cipher Suite", "wlan.rsn.gmcs",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_gmcs_base_custom), 0,
+      "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }},
 
-    {&hf_ieee80211_ff_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT16, BASE_DEC, VALS(action_codes), 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_rsn_gmcs_oui,
+     {"Group Management Cipher Suite OUI", "wlan.rsn.gmcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dialog_token,
-     {"Dialog token", "wlan.fixed.dialog_token",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Management action dialog token", HFILL }},
+    {&hf_ieee80211_rsn_gmcs_type,
+     {"Group Management Cipher Suite type", "wlan.rsn.gmcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_followup_dialog_token,
-     {"Followup Dialog token", "wlan.fixed.followup_dialog_token",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Management action followup dialog token", HFILL }},
+    {&hf_ieee80211_rsn_gmcs_80211_type,
+     {"Group Management Cipher Suite type", "wlan.rsn.gmcs.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_action_type,
-     {"Marvell Action type", "wlan.fixed.mrvl_action_type",
-      FT_UINT8, BASE_DEC, VALS(vendor_action_types_mrvl), 0,
-      "Vendor Specific Action Type (Marvell)", HFILL }},
+    {&hf_ieee80211_ht_pren_type,
+     {"802.11n (Pre) Type", "wlan.vs.pren.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_ht_pren_type_vals), 0,
+      "Vendor Specific HT Type", HFILL }},
+    {&hf_ieee80211_ht_pren_unknown,
+     {"802.11n (Pre) Unknown Data", "wlan.vs.pren.unknown_data",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_action_code,
-     {"Mesh action(Marvell)", "wlan.fixed.mrvl_mesh_action",
-      FT_UINT8, BASE_HEX, VALS(mesh_mgt_action_codes_mrvl), 0,
-      "Mesh action code(Marvell)", HFILL }},
+    {&hf_ieee80211_ht_cap,
+     {"HT Capabilities Info", "wlan.ht.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "HT Capabilities information", HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_length,
-     {"Message Length", "wlan.fixed.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ht_vs_cap,
+     {"HT Capabilities Info (VS)", "wlan.vs.ht.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Vendor Specific HT Capabilities information", HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_mode,
-     {"Message Mode", "wlan.fixed.mode",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ht_ldpc_coding,
+     {"HT LDPC coding capability", "wlan.ht.capabilities.ldpccoding",
+      FT_BOOLEAN, 16, TFS(&ht_ldpc_coding_flag), 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_ttl,
-     {"Message TTL", "wlan.fixed.ttl",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ht_chan_width,
+     {"HT Support channel width", "wlan.ht.capabilities.width",
+      FT_BOOLEAN, 16, TFS(&ht_chan_width_flag), 0x0002,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_dstcount,
-     {"Destination Count", "wlan.fixed.dstcount",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ht_sm_pwsave,
+     {"HT SM Power Save", "wlan.ht.capabilities.sm",
+      FT_UINT16, BASE_HEX, VALS(ht_sm_pwsave_flag), 0x000c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_hopcount,
-     {"Hop Count", "wlan.fixed.hopcount",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ht_green,
+     {"HT Green Field", "wlan.ht.capabilities.green",
+      FT_BOOLEAN, 16, TFS(&ht_green_flag), 0x0010,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_rreqid,
-     {"RREQ ID", "wlan.fixed.rreqid",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ht_short20,
+     {"HT Short GI for 20MHz", "wlan.ht.capabilities.short20",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0020,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_sa,
-     {"Source Address", "wlan.fixed.sa",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Source MAC address", HFILL }},
+    {&hf_ieee80211_ht_short40,
+     {"HT Short GI for 40MHz", "wlan.ht.capabilities.short40",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_ssn,
-     {"SSN", "wlan.fixed.ssn",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Source Sequence Number", HFILL }},
+    {&hf_ieee80211_ht_tx_stbc,
+     {"HT Tx STBC", "wlan.ht.capabilities.txstbc",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0080,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_metric,
-     {"Metric", "wlan.fixed.metric",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Route Metric", HFILL }},
+    {&hf_ieee80211_ht_rx_stbc,
+     {"HT Rx STBC", "wlan.ht.capabilities.rxstbc",
+      FT_UINT16, BASE_HEX, VALS(ht_rx_stbc_flag), 0x0300,
+      "HT Tx STBC", HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_flags,
-     {"RREQ Flags", "wlan.fixed.hopcount",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ht_delayed_block_ack,
+     {"HT Delayed Block ACK", "wlan.ht.capabilities.delayedblockack",
+      FT_BOOLEAN, 16, TFS(&ht_delayed_block_ack_flag), 0x0400,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_da,
-     {"Destination Address", "wlan.fixed.da",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Destination MAC address", HFILL }},
-
-    {&hf_ieee80211_ff_marvell_mesh_mgt_dsn,
-     {"DSN", "wlan.fixed.dsn",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Destination Sequence Number", HFILL }},
+    {&hf_ieee80211_ht_max_amsdu,
+     {"HT Max A-MSDU length", "wlan.ht.capabilities.amsdu",
+      FT_BOOLEAN, 16, TFS(&ht_max_amsdu_flag), 0x0800,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_marvell_mesh_mgt_lifetime,
-     {"Lifetime", "wlan.fixed.lifetime",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Route Lifetime", HFILL }},
+    {&hf_ieee80211_ht_dss_cck_40,
+     {"HT DSSS/CCK mode in 40MHz", "wlan.ht.capabilities.dsscck",
+      FT_BOOLEAN, 16, TFS(&ht_dss_cck_40_flag), 0x1000,
+      "HT DSS/CCK mode in 40MHz", HFILL }},
 
-    {&hf_ieee80211_ff_wme_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT16, BASE_HEX, VALS(wme_action_codes), 0,
-      "Management notification action code", HFILL }},
+    {&hf_ieee80211_ht_psmp,
+     {"HT PSMP Support", "wlan.ht.capabilities.psmp",
+      FT_BOOLEAN, 16, TFS(&ht_psmp_flag), 0x2000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_wme_status_code,
-     {"Status code", "wlan.fixed.status_code",
-      FT_UINT16, BASE_HEX, VALS(wme_status_codes), 0,
-      "Management notification setup response status code", HFILL }},
+    {&hf_ieee80211_ht_40_mhz_intolerant,
+     {"HT Forty MHz Intolerant", "wlan.ht.capabilities.40mhzintolerant",
+      FT_BOOLEAN, 16, TFS(&ht_40_mhz_intolerant_flag), 0x4000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_action,
-     {"Mesh Action code", "wlan.fixed.mesh_action",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &mesh_action_ext, 0,
+    {&hf_ieee80211_ht_l_sig,
+     {"HT L-SIG TXOP Protection support", "wlan.ht.capabilities.lsig",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_multihop_action,
-     {"Multihop Action code", "wlan.fixed.multihop_action",
-      FT_UINT8, BASE_HEX, VALS(multihop_action), 0,
+    {&hf_ieee80211_ext_bss_mu_mimo_capable_sta_count,
+     {"MU-MIMO Capable STA Count", "wlan.ext_bss.mu_mimo_capable_sta_count",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_flags,
-     {"Mesh Flags", "wlan.fixed.mesh_flags",
+    {&hf_ieee80211_ext_bss_ss_underutilization,
+     {"Spatial Stream Underutilization", "wlan.ext_bss.ss_underutilization",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_ttl,
-     {"Mesh TTL", "wlan.fixed.mesh_ttl",
+    {&hf_ieee80211_ext_bss_observable_sec_20mhz_utilization,
+     {"Observable Secondary 20MHz Utilization", "wlan.ext_bss.observable_sec_20mhz_utilization",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_sequence,
-     {"Sequence Number", "wlan.fixed.mesh_sequence",
-      FT_UINT32, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_ext_bss_observable_sec_40mhz_utilization,
+     {"Observable Secondary 40MHz Utilization", "wlan.ext_bss.observable_sec_40mhz_utilization",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_addr4,
-     {"Mesh Extended Address 4", "wlan.fixed.mesh_addr4",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ext_bss_observable_sec_80mhz_utilization,
+     {"Observable Secondary 80MHz Utilization", "wlan.ext_bss.observable_sec_80mhz_utilization",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_addr5,
-     {"Mesh Extended Address 5", "wlan.fixed.mesh_addr5",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_wide_bw_new_channel_width,
+     {"New Channel Width", "wlan.wide_bw.new_channel_width",
+      FT_UINT8, BASE_HEX, VALS(vht_operation_info_channel_width), 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_mesh_addr6,
-     {"Mesh Extended Address 6", "wlan.fixed.mesh_addr6",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_wide_bw_new_channel_center_freq_segment0,
+     {"New Channel Center Frequency Segment 0", "wlan.wide_bw.new_channel_center_freq_segment0",
+      FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_selfprot_action,
-     {"Self-protected Action code", "wlan.fixed.selfprot_action",
-      FT_UINT8, BASE_HEX, VALS(selfprot_action), 0,
+    {&hf_ieee80211_wide_bw_new_channel_center_freq_segment1,
+     {"New Channel Center Frequency Segment 1", "wlan.wide_bw.new_channel_center_freq_segment1",
+      FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_peering_proto,
-     {"Mesh Peering Protocol ID", "wlan.peering.proto",
-      FT_UINT16, BASE_HEX, VALS(mesh_peering_proto_ids), 0,
+    {&hf_ieee80211_operat_notification_mode,
+     {"Operating Mode Notification", "wlan.operat_notification_mode",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_peering_local_link_id,
-     {"Local Link ID", "wlan.peering.local_id",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Mesh Peering Management Local Link ID", HFILL }},
-
-    {&hf_ieee80211_mesh_peering_peer_link_id,
-     {"Peer Link ID", "wlan.peering.peer_id",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Mesh Peering Management Peer Link ID", HFILL }},
-
-    {&hf_ieee80211_ff_hwmp_flags,
-     {"HWMP Flags", "wlan.hwmp.flags",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_operat_mode_field_channel_width,
+     {"Channel Width", "wlan.operat_mode_field.channelwidth",
+      FT_UINT8, BASE_HEX, VALS(operating_mode_field_channel_width), 0x03,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_hopcount,
-     {"HWMP Hop Count", "wlan.hwmp.hopcount",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_operat_mode_field_reserved,
+     {"Reserved", "wlan.operat_mode_field.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x0C,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_ttl,
-     {"HWMP TTL", "wlan.hwmp.ttl",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_operat_mode_field_rxnss,
+     {"Rx NSS", "wlan.operat_mode_field.rxnss",
+      FT_UINT8, BASE_HEX, VALS(operat_mode_field_rxnss), 0x70,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_pdid,
-     {"HWMP Path Discovery ID", "wlan.hwmp.pdid",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_operat_mode_field_rxnsstype,
+     {"Rx NSS Type", "wlan.operat_mode_field.rxnsstype",
+      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 }},
 
-    {&hf_ieee80211_ff_hwmp_orig_sta,
-     {"Originator STA Address", "wlan.hwmp.orig_sta",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ampduparam,
+     {"A-MPDU Parameters", "wlan.ht.ampduparam",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_orig_sn,
-     {"HWMP Originator Sequence Number", "wlan.hwmp.orig_sn",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL}},
-
-    {&hf_ieee80211_ff_hwmp_orig_ext,
-     {"Originator External Address", "wlan.hwmp.orig_ext",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_ampduparam_vs,
+     {"A-MPDU Parameters (VS)", "wlan.vs.ht.ampduparam",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Vendor Specific A-MPDU Parameters", HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_lifetime,
-     {"HWMP Lifetime", "wlan.hwmp.lifetime",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ampduparam_mpdu,
+     {"Maximum Rx A-MPDU Length", "wlan.ht.ampduparam.maxlength",
+      FT_UINT8, BASE_HEX, 0, 0x03,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_metric,
-     {"HWMP Metric", "wlan.hwmp.metric",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ampduparam_mpdu_start_spacing,
+     {"MPDU Density", "wlan.ht.ampduparam.mpdudensity",
+      FT_UINT8, BASE_HEX, VALS(ampduparam_mpdu_start_spacing_flags), 0x1c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_count,
-     {"HWMP Target Count", "wlan.hwmp.targ_count",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ampduparam_reserved,
+     {"Reserved", "wlan.ht.ampduparam.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xE0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_flags,
-     {"HWMP Per-Target Flags", "wlan.hwmp.targ_flags",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_mcsset,
+     {"Rx Supported Modulation and Coding Scheme Set", "wlan.ht.mcsset",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_to_flags,
-     {"TO Flag", "wlan.hwmp.to_flag",
-      FT_BOOLEAN, 8, TFS(&hwmp_targ_to_flags), 0x01,
-      "Target Only Flag", HFILL }},
+    {&hf_ieee80211_mcsset_vs,
+     {"Rx Supported Modulation and Coding Scheme Set (VS)", "wlan.vs.ht.mcsset",
+      FT_STRING, BASE_NONE, NULL, 0,
+      "Vendor Specific Rx Supported Modulation and Coding Scheme Set", HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_usn_flags,
-     {"USN Flag", "wlan.hwmp.usn_flag",
-      FT_BOOLEAN, 8, TFS(&hwmp_targ_usn_flags), 0x04,
-      "Unknown Target HWMP Sequence Number Flag", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask,
+     {"Rx Modulation and Coding Scheme (One bit per modulation)", "wlan.ht.mcsset.rxbitmask",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "One bit per modulation", HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_sta,
-     {"Target STA Address", "wlan.hwmp.targ_sta",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_mcsset_rx_bitmask_0to7,
+     {"Rx Bitmask Bits 0-7", "wlan.ht.mcsset.rxbitmask.0to7",
+      FT_UINT32, BASE_HEX, 0, 0x000000ff,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_ext,
-     {"Target External Address", "wlan.hwmp.targ_ext",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_mcsset_rx_bitmask_8to15,
+     {"Rx Bitmask Bits 8-15", "wlan.ht.mcsset.rxbitmask.8to15",
+      FT_UINT32, BASE_HEX, 0, 0x0000ff00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_hwmp_targ_sn,
-     {"Target HWMP Sequence Number", "wlan.hwmp.targ_sn",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_mcsset_rx_bitmask_16to23,
+     {"Rx Bitmask Bits 16-23", "wlan.ht.mcsset.rxbitmask.16to23",
+      FT_UINT32, BASE_HEX, 0, 0x00ff0000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_path_sel_protocol,
-     {"Path Selection Protocol", "wlan.mesh.config.ps_protocol",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Path Selection Protocol", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask_24to31,
+     {"Rx Bitmask Bits 24-31", "wlan.ht.mcsset.rxbitmask.24to31",
+      FT_UINT32, BASE_HEX, 0, 0xff000000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_path_sel_metric,
-     {"Path Selection Metric", "wlan.mesh.config.ps_metric",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Path Selection Metric", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask_32,
+     {"Rx Bitmask Bit 32", "wlan.ht.mcsset.rxbitmask.32",
+      FT_UINT32, BASE_HEX, 0, 0x000001,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_congestion_control,
-     {"Congestion Control", "wlan.mesh.config.cong_ctl",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Congestion Control", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask_33to38,
+     {"Rx Bitmask Bits 33-38", "wlan.ht.mcsset.rxbitmask.33to38",
+      FT_UINT32, BASE_HEX, 0, 0x00007e,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_sync_method,
-     {"Synchronization Method", "wlan.mesh.config.sync_method",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Synchronization Method", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask_39to52,
+     {"Rx Bitmask Bits 39-52", "wlan.ht.mcsset.rxbitmask.39to52",
+      FT_UINT32, BASE_HEX, 0, 0x1fff80,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_auth_protocol,
-     {"Authentication Protocol", "wlan.mesh.config.auth_protocol",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Authentication Protocol", HFILL }},
+    {&hf_ieee80211_mcsset_rx_bitmask_53to76,
+     {"Rx Bitmask Bits 53-76", "wlan.ht.mcsset.rxbitmask.53to76",
+      FT_UINT32, BASE_HEX, 0, 0x1fffffe0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_formation_info,
-     {"Formation Info", "wlan.mesh.config.formation_info",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Formation Info", HFILL }},
+    {&hf_ieee80211_mcsset_highest_data_rate,
+     {"Highest Supported Data Rate", "wlan.ht.mcsset.highestdatarate",
+      FT_UINT16, BASE_HEX, 0, 0x03ff,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_form_info_num_of_peerings,
-     {"Number of Peerings", "wlan.mesh.config.formation_info.num_peers",
-      FT_UINT8, BASE_DEC, NULL, 0x7E,
+    {&hf_ieee80211_mcsset_tx_mcs_set_defined,
+     {"Tx Supported MCS Set", "wlan.ht.mcsset.txsetdefined",
+      FT_BOOLEAN, 16, TFS(&tfs_defined_not_defined), 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_capability,
-     {"Capability", "wlan.mesh.config.cap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Mesh Configuration Capability", HFILL }},
+    {&hf_ieee80211_mcsset_tx_rx_mcs_set_not_equal,
+     {"Tx and Rx MCS Set", "wlan.ht.mcsset.txrxmcsnotequal",
+      FT_BOOLEAN, 16, TFS(&mcsset_tx_rx_mcs_set_not_equal_flag), 0x0002,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_accepting,
-     {"Accepting Additional Mesh Peerings", "wlan.mesh.config.cap.accept",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
+    {&hf_ieee80211_mcsset_tx_max_spatial_streams,
+     {"Maximum Number of Tx Spatial Streams Supported", "wlan.ht.mcsset.txmaxss",
+      FT_UINT16, BASE_HEX, 0 , 0x000c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_mcca_support,
-     {"MCCA Support", "wlan.mesh.config.cap.mcca_support",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02,
+    {&hf_ieee80211_mcsset_tx_unequal_modulation,
+     {"Unequal Modulation", "wlan.ht.mcsset.txunequalmod",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0010,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_mcca_enabled,
-     {"MCCA Enabled", "wlan.mesh.config.cap.mcca_enabled",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
+    {&hf_ieee80211_htex_cap,
+     {"HT Extended Capabilities", "wlan.htex.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "HT Extended Capability information", HFILL }},
+
+    {&hf_ieee80211_htex_vs_cap,
+     {"HT Extended Capabilities (VS)", "wlan.vs.htex.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Vendor Specific HT Extended Capability information", HFILL }},
+
+    {&hf_ieee80211_htex_pco,
+     {"Transmitter supports PCO", "wlan.htex.capabilities.pco",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_forwarding,
-     {"Mesh Forwarding", "wlan.mesh.config.cap.forwarding",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x08,
+    {&hf_ieee80211_htex_transtime,
+     {"Time needed to transition between 20MHz and 40MHz", "wlan.htex.capabilities.transtime",
+      FT_UINT16, BASE_HEX, VALS(htex_transtime_flags), 0x0006,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_mbca_enabled,
-     {"MBCA Enabled", "wlan.mesh.config.cap.mbca_enabled",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
+    {&hf_ieee80211_htex_mcs,
+     {"MCS Feedback capability", "wlan.htex.capabilities.mcs",
+      FT_UINT16, BASE_HEX, VALS(htex_mcs_flags), 0x0300,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_tbtt_adjusting,
-     {"TBTT Adjustment", "wlan.mesh.config.cap.tbtt_adjusting",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
+    {&hf_ieee80211_htex_htc_support,
+     {"High Throughput", "wlan.htex.capabilities.htc",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0400,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_config_cap_power_save_level,
-     {"Power Save", "wlan.mesh.config.cap.power_save_level",
-      FT_BOOLEAN, 8, TFS(&mesh_config_cap_power_save_level_flags), 0x40,
+    {&hf_ieee80211_htex_rd_responder,
+     {"Reverse Direction Responder", "wlan.htex.capabilities.rdresponder",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_id,
-     {"Mesh ID", "wlan.mesh.id",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_txbf,
+     {"Transmit Beam Forming (TxBF) Capabilities", "wlan.txbf",
+      FT_UINT32, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rann_flags,
-     {"RANN Flags", "wlan.rann.flags",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Root Announcement Flags", HFILL }},
+    {&hf_ieee80211_txbf_vs,
+     {"Transmit Beam Forming (TxBF) Capabilities (VS)", "wlan.vs.txbf",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      "Vendor Specific Transmit Beam Forming (TxBF) Capabilities", HFILL }},
 
-    {&hf_ieee80211_rann_root_sta,
-     {"Root STA Address", "wlan.rann.root_sta", FT_ETHER, BASE_NONE, NULL, 0,
-      "Root Mesh STA Address", HFILL }},
+    {&hf_ieee80211_txbf_cap,
+     {"Transmit Beamforming", "wlan.txbf.txbf",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rann_sn,
-     {"Root STA Sequence Number", "wlan.rann.rann_sn",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Root Mesh STA Sequence Number", HFILL }},
+    {&hf_ieee80211_txbf_rcv_ssc,
+     {"Receive Staggered Sounding", "wlan.txbf.rxss",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rann_interval,
-     {"RANN Interval", "wlan.rann.interval",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Root Announcement Interval", HFILL }},
+    {&hf_ieee80211_txbf_tx_ssc,
+     {"Transmit Staggered Sounding", "wlan.txbf.txss",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_qos_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT16, BASE_HEX, VALS(qos_action_codes), 0,
-      "QoS management action code", HFILL }},
+    {&hf_ieee80211_txbf_rcv_ndp,
+     {"Receive Null Data packet (NDP)", "wlan.txbf.rxndp",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_ba_action,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_HEX, VALS(ba_action_codes), 0,
-      "Block Ack action code", HFILL }},
+    {&hf_ieee80211_txbf_tx_ndp,
+     {"Transmit Null Data packet (NDP)", "wlan.txbf.txndp",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_check_beacon,
-     {"Check Beacon", "wlan.fixed.check_beacon",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Unprotected WNM Check Beacon", HFILL }},
+    {&hf_ieee80211_txbf_impl_txbf,
+     {"Implicit TxBF capable", "wlan.txbf.impltxbf",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
+      "Implicit Transmit Beamforming (TxBF) capable", HFILL }},
 
-    {&hf_ieee80211_ff_tod,
-     {"TOD", "wlan.fixed.tod",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Previous TS of transmit antenna port", HFILL }},
+    {&hf_ieee80211_txbf_calib,
+     {"Calibration", "wlan.txbf.calibration",
+      FT_UINT32, BASE_HEX, VALS(txbf_calib_flag), 0x000000c0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_toa,
-     {"TOA", "wlan.fixed.toa",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Previous TS of receive antenna port", HFILL }},
+    {&hf_ieee80211_txbf_expl_csi,
+     {"STA can apply TxBF using CSI explicit feedback", "wlan.txbf.csi",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
+      "Station can apply TxBF using CSI explicit feedback", HFILL }},
 
-    {&hf_ieee80211_ff_max_tod_err,
-     {"MAX TOD ERROR", "wlan.fixed.max_tod_err",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Maximal Error at Previous TS of transmit antenna port", HFILL }},
+    {&hf_ieee80211_txbf_expl_uncomp_fm,
+     {"STA can apply TxBF using uncompressed beamforming feedback matrix", "wlan.txbf.fm.uncompressed.tbf",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
+      "Station can apply TxBF using uncompressed beamforming feedback matrix", HFILL }},
 
-    {&hf_ieee80211_ff_max_toa_err,
-     {"MAX TOA ERROR", "wlan.fixed.max_toa_err",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Maximal Error at Previous TS of receive antenna port", HFILL }},
+    {&hf_ieee80211_txbf_expl_comp_fm,
+     {"STA can apply TxBF using compressed beamforming feedback matrix", "wlan.txbf.fm.compressed.tbf",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
+      "Station can apply TxBF using compressed beamforming feedback matrix", HFILL }},
 
-    {&hf_ieee80211_ff_dls_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT16, BASE_HEX, VALS(dls_action_codes), 0,
-      "DLS management action code", HFILL }},
+    {&hf_ieee80211_txbf_expl_bf_csi,
+     {"Receiver can return explicit CSI feedback", "wlan.txbf.rcsi",
+      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00001800,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dst_mac_addr,
-     {"Destination address", "wlan.fixed.dst_mac_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Destination MAC address", HFILL }},
+    {&hf_ieee80211_txbf_expl_uncomp_fm_feed,
+     {"Receiver can return explicit uncompressed Beamforming Feedback Matrix", "wlan.txbf.fm.uncompressed.rbf",
+      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00006000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_src_mac_addr,
-     {"Source address", "wlan.fixed.src_mac_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Source MAC address", HFILL }},
+    {&hf_ieee80211_txbf_expl_comp_fm_feed,
+     {"STA can compress and use compressed Beamforming Feedback Matrix", "wlan.txbf.fm.compressed.bf",
+      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00018000,
+      "Station can compress and use compressed Beamforming Feedback Matrix", HFILL }},
 
-    {&hf_ieee80211_ff_req_ap_addr,
-     {"RequesterAP address", "wlan.fixed.req_ap_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_txbf_min_group,
+     {"Minimal grouping used for explicit feedback reports", "wlan.txbf.mingroup",
+      FT_UINT32, BASE_HEX, VALS(txbf_min_group_flags), 0x00060000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_res_ap_addr,
-     {"ResponderAP address", "wlan.fixed.res_ap_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_vht_cap,
+     {"VHT Capabilities Info", "wlan.vht.capabilities",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      "VHT Capabilities information", HFILL }},
 
-    {&hf_ieee80211_ff_ft_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_DEC, VALS(ft_action_codes), 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_vht_max_mpdu_length,
+     {"Maximum MPDU Length", "wlan.vht.capabilities.maxmpdulength",
+      FT_UINT32, BASE_HEX, VALS(vht_max_mpdu_length_flag), 0x00000003,
+      "In Octets unit", HFILL }},
 
-    {&hf_ieee80211_ff_sta_address,
-     {"STA Address", "wlan.fixed.sta_address",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_supported_chan_width_set,
+     {"Supported Channel Width Set", "wlan.vht.capabilities.supportedchanwidthset",
+      FT_UINT32, BASE_HEX, VALS(vht_supported_chan_width_set_flag), 0x0000000c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_target_ap_address,
-     {"Target AP Address", "wlan.fixed.target_ap_address",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Target AP MAC address", HFILL }},
+    {&hf_ieee80211_vht_rx_ldpc,
+     {"Rx LDPC", "wlan.vht.capabilities.rxldpc",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_gas_comeback_delay,
-     {"GAS Comeback Delay", "wlan.fixed.gas_comeback_delay",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_short_gi_for_80,
+     {"Short GI for 80MHz/TVHT_MODE_4C", "wlan.vht.capabilities.short80",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_gas_fragment_id,
-     {"GAS Query Response Fragment ID", "wlan.fixed.gas_fragment_id",
-      FT_UINT8, BASE_DEC, NULL, 0x7f,
+    {&hf_ieee80211_vht_short_gi_for_160,
+     {"Short GI for 160MHz and 80+80MHz", "wlan.vht.capabilities.short160",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_more_gas_fragments,
-     {"More GAS Fragments", "wlan.fixed.more_gas_fragments",
-      FT_UINT8, BASE_DEC, NULL, 0x80,
+    {&hf_ieee80211_vht_tx_stbc,
+     {"Tx STBC", "wlan.vht.capabilities.txstbc",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_query_request_length,
-     {"Query Request Length", "wlan.fixed.query_request_length",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_rx_stbc,
+     {"Rx STBC", "wlan.vht.capabilities.rxstbc",
+      FT_UINT32, BASE_HEX, VALS(vht_rx_stbc_flag), 0x00000700,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_query_request,
-     {"Query Request", "wlan.fixed.query_request",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_su_beamformer_cap,
+     {"SU Beamformer Capable", "wlan.vht.capabilities.subeamformer",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_query_response_length,
-     {"Query Response Length", "wlan.fixed.query_response_length",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_su_beamformee_cap,
+     {"SU Beamformee Capable", "wlan.vht.capabilities.subeamformee",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_query_response,
-     {"Query Response", "wlan.fixed.query_response",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_beamformer_antennas,
+     {"Beamformee STS Capability", "wlan.vht.capabilities.beamformee_sts_cap",
+      FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x0000e000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragments,
-     {"GAS Query Response fragments", "wlan.fixed.fragments",
-      FT_NONE, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_sounding_dimensions,
+     {"Number of Sounding Dimensions", "wlan.vht.capabilities.soundingdimensions",
+      FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x00070000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment,
-     {"GAS Query Response fragment", "wlan.fixed.fragment",
-      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_mu_beamformer_cap,
+     {"MU Beamformer Capable", "wlan.vht.capabilities.mubeamformer",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_overlap,
-     {"GAS Query Response fragment overlap", "wlan.fixed.fragment.overlap",
-      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_mu_beamformee_cap,
+     {"MU Beamformee Capable", "wlan.vht.capabilities.mubeamformee",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00100000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_overlap_conflict,
-     {"GAS Query Response fragment overlapping with conflicting data", "wlan.fixed.fragment.overlap.conflicts",
-      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_txop_ps,
+     {"TXOP PS", "wlan.vht.capabilities.vhttxopps",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_multiple_tails,
-     {"GAS Query Response has multiple tail fragments",  "wlan.fixed.fragment.multiple_tails",
-      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_var_htc_field,
+     {"+HTC-VHT Capable", "wlan.vht.capabilities.vhthtc",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_too_long_fragment,
-     {"GAS Query Response fragment too long", "wlan.fixed.fragment.too_long_fragment",
-      FT_BOOLEAN, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_max_ampdu,
+     {"Max A-MPDU Length Exponent", "wlan.vht.capabilities.maxampdu",
+      FT_UINT32, BASE_HEX, VALS(vht_max_ampdu_flag), 0x03800000,
+      "In Octets unit", HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_error,
-     {"GAS Query Response reassembly error", "wlan.fixed.fragment.error",
-      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_link_adaptation_cap,
+     {"VHT Link Adaptation", "wlan.vht.capabilities.linkadapt",
+      FT_UINT32, BASE_HEX, VALS(vht_link_adapt_flag), 0x0c000000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_fragment_count,
-     {"GAS Query Response fragment count", "wlan.fixed.fragment.count",
-      FT_UINT32, BASE_DEC, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_rx_pattern,
+     {"Rx Antenna Pattern Consistency", "wlan.vht.capabilities.rxpatconsist",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x10000000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_reassembled_in,
-     {"Reassembled in", "wlan.fixed.reassembled.in",
-      FT_FRAMENUM, BASE_NONE, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_tx_pattern,
+     {"Tx Antenna Pattern Consistency", "wlan.vht.capabilities.txpatconsist",
+      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x20000000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_gas_resp_reassembled_length,
-     {"Reassembled length", "wlan.fixed.reassembled.length",
-      FT_UINT32, BASE_DEC, NULL, 0x00,
-      NULL, HFILL } },
+    {&hf_ieee80211_vht_ext_nss_bw_support,
+     {"Extended NSS BW Support", "wlan.vht.capabilities.ext_nss_bw_support",
+      FT_UINT32, BASE_HEX, NULL, 0xc0000000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_info_id,
-     {"Info ID", "wlan.fixed.anqp.info_id",
-      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
-      "Access Network Query Protocol Info ID", HFILL }},
+    {&hf_ieee80211_vht_mcsset,
+     {"VHT Supported MCS Set", "wlan.vht.mcsset",
+      FT_NONE, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_info_length,
-     {"Length", "wlan.fixed.anqp.info_length",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Access Network Query Protocol Length", HFILL }},
+    {&hf_ieee80211_vht_mcsset_rx_mcs_map,
+     {"Rx MCS Map", "wlan.vht.mcsset.rxmcsmap",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_info,
-     {"Information", "wlan.fixed.anqp.info",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Access Network Query Protocol Information", HFILL }},
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_1_ss,
+     {"Rx 1 SS", "wlan.vht.mcsset.rxmcsmap.ss1",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_query_id,
-     {"ANQP Query ID", "wlan.fixed.anqp.query_id",
-      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
-      "Access Network Query Protocol Query ID", HFILL }},
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_2_ss,
+     {"Rx 2 SS", "wlan.vht.mcsset.rxmcsmap.ss2",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_capability,
-     {"ANQP Capability", "wlan.fixed.anqp.capability",
-      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0,
-      "Access Network Query Protocol Query ID", HFILL }},
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_3_ss,
+     {"Rx 3 SS", "wlan.vht.mcsset.rxmcsmap.ss3",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_capability_vlen,
-     {"Vendor-specific Capability Length", "wlan.fixed.anqp.capability_vlen",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_4_ss,
+     {"Rx 4 SS", "wlan.vht.mcsset.rxmcsmap.ss4",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_capability_vendor,
-     {"Vendor-specific Capability", "wlan.fixed.anqp.capability_vendor",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_5_ss,
+     {"Rx 5 SS", "wlan.vht.mcsset.rxmcsmap.ss5",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_venue_info_group,
-     {"Venue Group", "wlan.fixed.venue_info.group",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &venue_group_vals_ext, 0,
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_6_ss,
+     {"Rx 6 SS", "wlan.vht.mcsset.rxmcsmap.ss6",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_venue_info_type,
-     {"Venue Type", "wlan.fixed.venue_info.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_7_ss,
+     {"Rx 7 SS", "wlan.vht.mcsset.rxmcsmap.ss7",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_length,
-     {"Venue Name Duple Length", "wlan.fixed.anqp.venue.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_8_ss,
+     {"Rx 8 SS", "wlan.vht.mcsset.rxmcsmap.ss8",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_language,
-     {"Language Code", "wlan.fixed.anqp.venue.language",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "Venue Name Language Code", HFILL }},
+    {&hf_ieee80211_vht_mcsset_max_nsts_total,
+     {"MaX NSTS Total", "wlan.vht.mcsset.max_nsts_total",
+      FT_UINT16, BASE_DEC, NULL, 0xe000, NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_name,
-     {"Venue Name", "wlan.fixed.anqp.venue.name",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_rx_highest_long_gi,
+     {"Rx Highest Long GI Data Rate (in Mb/s, 0 = subfield not in use)", "wlan.vht.mcsset.rxhighestlonggirate",
+      FT_UINT16, BASE_HEX, NULL, 0x1fff,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nw_auth_type_indicator,
-     {"Network Authentication Type Indicator", "wlan.fixed.anqp.nw_auth_type.indicator",
-      FT_UINT8, BASE_DEC, VALS(nw_auth_type_vals), 0,
+    {&hf_ieee80211_vht_mcsset_tx_mcs_map,
+     {"Tx MCS Map", "wlan.vht.mcsset.txmcsmap",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nw_auth_type_url_len,
-     {"Re-direct URL Length", "wlan.fixed.anqp.nw_auth_type.url_len",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_1_ss,
+     {"Tx 1 SS", "wlan.vht.mcsset.txmcsmap.ss1",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nw_auth_type_url,
-     {"Re-direct URL", "wlan.fixed.anqp.nw_auth_type_url",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_2_ss,
+     {"Tx 2 SS", "wlan.vht.mcsset.txmcsmap.ss2",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_roaming_consortium_oi_len,
-     {"OI Length", "wlan.fixed.anqp.roaming_consortium.oi_len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Roaming Consortium OI Length", HFILL }},
-
-    {&hf_ieee80211_ff_anqp_roaming_consortium_oi,
-     {"OI", "wlan.fixed.anqp.roaming_consortium.oi",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Roaming Consortium OI", HFILL }},
-
-    {&hf_ieee80211_ff_anqp_ip_addr_avail_ipv6,
-     {"IPv6 Address", "wlan.fixed.anqp.ip_addr_availability.ipv6",
-      FT_UINT8, BASE_DEC, VALS(ip_addr_avail_ipv6_vals), 0x03,
-      "IP Address Type Availability information for IPv6", HFILL }},
-
-    {&hf_ieee80211_ff_anqp_ip_addr_avail_ipv4,
-     {"IPv4 Address", "wlan.fixed.anqp.ip_addr_availability.ipv4",
-      FT_UINT8, BASE_DEC, VALS(ip_addr_avail_ipv4_vals), 0xfc,
-      "IP Address Type Availability information for IPv4", HFILL }},
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_3_ss,
+     {"Tx 3 SS", "wlan.vht.mcsset.txmcsmap.ss3",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_count,
-     {"NAI Realm Count", "wlan.fixed.anqp.nai_realm_list.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_4_ss,
+     {"Tx 4 SS", "wlan.vht.mcsset.txmcsmap.ss4",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_field_len,
-     {"NAI Realm Data Field Length", "wlan.fixed.anqp.nai_realm_list.field_len",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_5_ss,
+     {"Tx 5 SS", "wlan.vht.mcsset.txmcsmap.ss5",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_encoding,
-     {"NAI Realm Encoding", "wlan.fixed.naqp_nai_realm_list.encoding",
-      FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals), 0x01,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_6_ss,
+     {"Tx 6 SS", "wlan.vht.mcsset.txmcsmap.ss6",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_length,
-     {"NAI Realm Length", "wlan.fixed.naqp_nai_realm_list.realm_length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_7_ss,
+     {"Tx 7 SS", "wlan.vht.mcsset.txmcsmap.ss7",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm,
-     {"NAI Realm", "wlan.fixed.naqp_nai_realm_list.realm",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_8_ss,
+     {"Tx 8 SS", "wlan.vht.mcsset.txmcsmap.ss8",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_eap_count,
-     {"EAP Method Count", "wlan.fixed.naqp_nai_realm_list.eap_method_count",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_tx_highest_long_gi,
+     {"Tx Highest Long GI Data Rate  (in Mb/s, 0 = subfield not in use)", "wlan.vht.mcsset.txhighestlonggirate",
+      FT_UINT16, BASE_HEX, NULL, 0x1fff,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_eap_len,
-     {"EAP Method subfield Length", "wlan.fixed.naqp_nai_realm_list.eap_method_len",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_mcsset_ext_nss_bw_cap,
+     {"Extended NSS BW Capable", "wlan.vht.ncsset.ext_nss_bw_cap",
+      FT_BOOLEAN, 16, TFS(&tfs_capable_not_capable), 0x2000, NULL, HFILL }},
+
+    {&hf_ieee80211_vht_mcsset_reserved,
+     {"Reserved", "wlan.vht.ncsset.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0xc000, NULL, HFILL }},
+
+    {&hf_ieee80211_vht_op,
+     {"VHT Operation Info", "wlan.vht.op",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_eap_method,
-     {"EAP Method", "wlan.fixed.naqp_nai_realm_list.eap_method",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_type_vals_ext, 0,
+    {&hf_ieee80211_vht_op_channel_width,
+     {"Channel Width", "wlan.vht.op.channelwidth",
+      FT_UINT8, BASE_HEX, VALS(vht_op_channel_width_flag), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_count,
-     {"Authentication Parameter Count", "wlan.fixed.naqp_nai_realm_list.auth_param_count",
+    {&hf_ieee80211_vht_op_channel_center0,
+     {"Channel Center Segment 0", "wlan.vht.op.channelcenter0",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_id,
-     {"Authentication Parameter ID", "wlan.fixed.naqp_nai_realm_list.auth_param_id",
-      FT_UINT8, BASE_DEC, VALS(nai_realm_auth_param_id_vals), 0,
+    {&hf_ieee80211_vht_op_channel_center1,
+     {"Channel Center Segment 1", "wlan.vht.op.channelcenter1",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_len,
-     {"Authentication Parameter Length", "wlan.fixed.naqp_nai_realm_list.auth_param_len",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_op_basic_mcs_map,
+     {"Basic MCS Map", "wlan.vht.op.basicmcsmap",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_nai_realm_auth_param_value,
-     {"Authentication Parameter Value", "wlan.fixed.naqp_nai_realm_list.auth_param_value",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_1_ss,
+     {"Basic 1 SS", "wlan.vht.op.basicmcsmap.ss1",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
       NULL, HFILL }},
 
-    {&hf_ieee80211_3gpp_gc_gud,
-     {"GUD", "wlan.fixed.anqp.3gpp_cellular_info.gud",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Generic container User Data", HFILL }},
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_2_ss,
+     {"Basic 2 SS", "wlan.vht.op.basicmcsmap.ss2",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_3gpp_gc_udhl,
-     {"UDHL", "wlan.fixed.anqp.3gpp_cellular_info.udhl",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "User Data Header Length", HFILL }},
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_3_ss,
+     {"Basic 3 SS", "wlan.vht.op.basicmcsmap.ss3",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_3gpp_gc_iei,
-     {"IEI", "wlan.fixed.anqp.3gpp_cellular_info.iei",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Information Element Identity", HFILL }},
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_4_ss,
+     {"Basic 4 SS", "wlan.vht.op.basicmcsmap.ss4",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_3gpp_gc_plmn_len,
-     {"PLMN Length", "wlan.fixed.anqp.3gpp_cellular_info.plmn_len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Length of PLMN List value contents", HFILL }},
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_5_ss,
+     {"Basic 5 SS", "wlan.vht.op.basicmcsmap.ss5",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_3gpp_gc_num_plmns,
-     {"Number of PLMNs", "wlan.fixed.anqp.3gpp_cellular_info.num_plmns",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_6_ss,
+     {"Basic 6 SS", "wlan.vht.op.basicmcsmap.ss6",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_domain_name_len,
-     {"Domain Name Length", "wlan.fixed.anqp.domain_name_list.len",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_7_ss,
+     {"Basic 7 SS", "wlan.vht.op.basicmcsmap.ss7",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_domain_name,
-     {"Domain Name", "wlan.fixed.anqp.domain_name_list.name",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_op_max_basic_mcs_for_8_ss,
+     {"Basic 8 SS", "wlan.vht.op.basicmcsmap.ss8",
+      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_url_len,
-     {"Length", "wlan.fixed.anqp.venue_url_list.len",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_info,
+     {"Tx Pwr Info", "wlan.vht.tpe.pwr_info",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_url_number,
-     {"Venue Number", "wlan.fixed.anqp.venue_url_list.venue_number",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_info_count,
+     {"Max Tx Pwr Count", "wlan.vht.tpe.pwr_info.count",
+      FT_UINT8, BASE_DEC, NULL , 0x07,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anqp_venue_url,
-     {"Venue URL", "wlan.fixed.anqp.venue_url_list.venue_url",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_info_unit,
+     {"Max Tx Pwr Unit Interpretation", "wlan.vht.tpe.pwr_info.unit",
+      FT_UINT8, BASE_DEC, VALS(vht_tpe_pwr_units) , 0x38,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_dls_timeout,
-     {"DLS timeout", "wlan.fixed.dls_timeout",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "DLS timeout value", HFILL }},
+    {&hf_ieee80211_vht_tpe_pwr_info_reserved,
+     {"Reserved", "wlan.vht.tpe.pwr_info.reserved",
+      FT_UINT8, BASE_DEC, NULL , 0xC0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_sa_query_action_code,
-     {"Action code", "wlan.fixed.action_code",
-      FT_UINT8, BASE_DEC, VALS(sa_query_action_codes), 0,
-      "Management action code", HFILL }},
+    {&hf_ieee80211_vht_tpe_pwr_constr_20,
+     {"Local Max Tx Pwr Constraint 20MHz", "wlan.vht.tpe.pwr_constr_20",
+      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ff_transaction_id,
-     {"Transaction Id", "wlan.fixed.transaction_id",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_constr_40,
+     {"Local Max Tx Pwr Constraint 40MHz", "wlan.vht.tpe.pwr_constr_40",
+      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_send_confirm,
-     {"Send-Confirm", "wlan.fixed.send_confirm",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_constr_80,
+     {"Local Max Tx Pwr Constraint 80MHz", "wlan.vht.tpe.pwr_constr_80",
+      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_anti_clogging_token,
-     {"Anti-Clogging Token", "wlan.fixed.anti_clogging_token",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_vht_tpe_pwr_constr_160,
+     {"Local Max Tx Pwr Constraint 160MHz/80+80 MHz", "wlan.vht.tpe.pwr_constr_160",
+      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_scalar,
-     {"Scalar", "wlan.fixed.scalar",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_txbf_csi_num_bf_ant,
+     {"Max antennae STA can support when CSI feedback required", "wlan.txbf.csinumant",
+      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00180000,
+      "Max antennae station can support when CSI feedback required", HFILL }},
+
+    {&hf_ieee80211_txbf_uncomp_sm_bf_ant,
+     {"Max antennae STA can support when uncompressed Beamforming feedback required", "wlan.txbf.fm.uncompressed.maxant",
+      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00600000,
+      "Max antennae station can support when uncompressed Beamforming feedback required", HFILL }},
+
+    {&hf_ieee80211_txbf_comp_sm_bf_ant,
+     {"Max antennae STA can support when compressed Beamforming feedback required", "wlan.txbf.fm.compressed.maxant",
+      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x01800000,
+      "Max antennae station can support when compressed Beamforming feedback required", HFILL }},
+
+    {&hf_ieee80211_txbf_csi_max_rows_bf,
+     {"Maximum number of rows of CSI explicit feedback", "wlan.txbf.csi.maxrows",
+      FT_UINT32, BASE_HEX, VALS(txbf_csi_max_rows_bf_flags), 0x06000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_finite_field_element,
-     {"Finite Field Element", "wlan.fixed.finite_field_element",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_txbf_chan_est,
+     {"Maximum number of space time streams for which channel dimensions can be simultaneously estimated", "wlan.txbf.channelest",
+      FT_UINT32, BASE_HEX, VALS(txbf_chan_est_flags), 0x18000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_confirm,
-     {"Confirm", "wlan.fixed.confirm",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_txbf_resrv,
+     {"Reserved", "wlan.txbf.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0xe0000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ff_finite_cyclic_group,
-     {"Group Id", "wlan.fixed.finite_cyclic_group",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_hta_cc,
+     {"HT Control Channel", "wlan.hta.control_channel",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_anqp_wfa_subtype,
-     {"WFA Subtype", "wlan.anqp.wfa.subtype",
-      FT_UINT8, BASE_DEC, VALS(wfa_subtype_vals), 0, NULL, HFILL }},
+    {&hf_ieee80211_hta_cap1,
+     {"HT Additional Capabilities", "wlan.hta.capabilities",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "HT Additional Capability information", HFILL }},
 
-    {&hf_ieee80211_dpp_subtype,
-     {"DPP Subtype", "wlan.wfa.dpp.subtype",
-      FT_UINT8, BASE_DEC, VALS(dpp_subtype_vals), 0, NULL, HFILL }},
+    {&hf_ieee80211_hta_cap2,
+     {"HT Additional Capabilities", "wlan.hta.capabilities",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "HT Additional Capability information", HFILL }},
 
-    {&hf_hs20_indication_dgaf_disabled,
-     {"DGAF Disabled", "wlan.hs20.indication.dgaf_disabled",
-      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
+    {&hf_ieee80211_hta_ext_chan_offset,
+     {"Extension Channel Offset", "wlan.hta.capabilities.ext_chan_offset",
+      FT_UINT16, BASE_HEX, VALS(hta_ext_chan_offset_flag), 0x0003,
+      NULL, HFILL }},
 
-    {&hf_hs20_indication_pps_mo_id_present,
-     {"PPS MO ID Present", "wlan.hs20.indication.pps_mo_id_present",
-      FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL }},
+    {&hf_ieee80211_hta_rec_tx_width,
+     {"Recommended Tx Channel Width", "wlan.hta.capabilities.rec_tx_width",
+      FT_BOOLEAN, 16, TFS(&hta_rec_tx_width_flag), 0x0004,
+      "Recommended Transmit Channel Width", HFILL }},
 
-    {&hf_hs20_indication_anqp_domain_id_present,
-     {"ANQP Domain ID Present", "wlan.hs20.indication.anqp_domain_id_present",
-      FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL }},
+    {&hf_ieee80211_hta_rifs_mode,
+     {"Reduced Interframe Spacing (RIFS) Mode", "wlan.hta.capabilities.rifs_mode",
+      FT_BOOLEAN, 16, TFS(&hta_rifs_mode_flag), 0x0008,
+      NULL, HFILL }},
 
-    {&hf_hs20_indication_release_number,
-     {"Release Number", "wlan.hs20.indication.release_number",
-      FT_UINT8, BASE_DEC, VALS(hs20_indication_release_number_vals), 0xF0, NULL, HFILL }},
+    {&hf_ieee80211_hta_controlled_access,
+     {"Controlled Access Only", "wlan.hta.capabilities.controlled_access",
+      FT_BOOLEAN, 16, TFS(&hta_controlled_access_flag), 0x0010,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_hta_service_interval,
+     {"Service Interval Granularity", "wlan.hta.capabilities.service_interval",
+      FT_UINT16, BASE_HEX, VALS(hta_service_interval_flag), 0x00E0,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_subtype,
-     {"Subtype", "wlan.hs20.anqp.subtype",
-      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
-      "Hotspot 2.0 ANQP Subtype", HFILL }},
+    {&hf_ieee80211_hta_operating_mode,
+     {"Operating Mode", "wlan.hta.capabilities.operating_mode",
+      FT_UINT16, BASE_HEX, VALS(hta_operating_mode_flag), 0x0003,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_reserved,
-     {"Reserved", "wlan.hs20.anqp.reserved",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_hta_non_gf_devices,
+     {"Non Greenfield (GF) devices Present", "wlan.hta.capabilities.non_gf_devices",
+      FT_BOOLEAN, 16, TFS(&hta_non_gf_devices_flag), 0x0004,
+      "on Greenfield (GF) devices Present", HFILL }},
 
-    {&hf_hs20_anqp_payload,
-     {"Payload", "wlan.hs20.anqp.payload",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Hotspot 2.0 ANQP Payload", HFILL }},
+    {&hf_ieee80211_hta_basic_stbc_mcs,
+     {"Basic STB Modulation and Coding Scheme (MCS)", "wlan.hta.capabilities.basic_stbc_mcs",
+      FT_UINT16, BASE_HEX, NULL , 0x007f,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_hs_query_list,
-     {"Queried Subtype", "wlan.hs20.anqp.hs_query_list",
-      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
-      "Queried HS 2.0 Element Subtype", HFILL }},
+    {&hf_ieee80211_hta_dual_stbc_protection,
+     {"Dual Clear To Send (CTS) Protection", "wlan.hta.capabilities.dual_stbc_protection",
+      FT_BOOLEAN, 16, TFS(&hta_dual_stbc_protection_flag), 0x0080,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_hs_capability_list,
-     {"Capability", "wlan.hs20.anqp.hs_capability_list",
-      FT_UINT8, BASE_DEC, VALS(hs20_anqp_subtype_vals), 0,
-      "Hotspot 2.0 ANQP Subtype Capability", HFILL }},
+    {&hf_ieee80211_hta_secondary_beacon,
+     {"Secondary Beacon", "wlan.hta.capabilities.secondary_beacon",
+      FT_BOOLEAN, 16, TFS(&hta_secondary_beacon_flag), 0x0100,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_ofn_length,
-     {"Length", "wlan.hs20.anqp.ofn.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Operator Friendly Name Length", HFILL }},
+    {&hf_ieee80211_hta_lsig_txop_protection,
+     {"L-SIG TXOP Protection Support", "wlan.hta.capabilities.lsig_txop_protection",
+      FT_BOOLEAN, 16, TFS(&hta_lsig_txop_protection_flag), 0x0200,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_ofn_language,
-     {"Language Code", "wlan.hs20.anqp.ofn.language",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "Operator Friendly Name Language Code", HFILL }},
+    {&hf_ieee80211_hta_pco_active,
+     {"Phased Coexistence Operation (PCO) Active", "wlan.hta.capabilities.pco_active",
+      FT_BOOLEAN, 16, TFS(&hta_pco_active_flag), 0x0400,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_ofn_name,
-     {"Operator Friendly Name", "wlan.hs20.anqp.ofn.name",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_hta_pco_phase,
+     {"Phased Coexistence Operation (PCO) Phase", "wlan.hta.capabilities.pco_phase",
+      FT_BOOLEAN, 16, TFS(&hta_pco_phase_flag), 0x0800,
       NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_link_status,
-     {"Link Status", "wlan.hs20.anqp.wan_metrics.link_status",
-      FT_UINT8, BASE_DEC, VALS(hs20_wm_link_status_vals), 0x03, NULL, HFILL }},
+    {&hf_ieee80211_antsel,
+     {"Antenna Selection (ASEL) Capabilities", "wlan.asel",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_symmetric_link,
-     {"Symmetric Link", "wlan.hs20.anqp.wan_metrics.symmetric_link",
-      FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL }},
+    {&hf_ieee80211_antsel_vs,
+     {"Antenna Selection (ASEL) Capabilities (VS)", "wlan.vs.asel",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Vendor Specific Antenna Selection (ASEL) Capabilities", HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_at_capacity,
-     {"At Capacity", "wlan.hs20.anqp.wan_metrics.at_capacity",
-      FT_UINT8, BASE_DEC, NULL, 0x08, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b0,
+     {"Antenna Selection Capable", "wlan.asel.capable",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_reserved,
-     {"Reserved", "wlan.hs20.anqp.wan_metrics.reserved",
-      FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b1,
+     {"Explicit CSI Feedback Based Tx ASEL", "wlan.asel.txcsi",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_downlink_speed,
-     {"Downlink Speed", "wlan.hs20.anqp.wan_metrics.downlink_speed",
-      FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b2,
+     {"Antenna Indices Feedback Based Tx ASEL", "wlan.asel.txif",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_uplink_speed,
-     {"Uplink Speed", "wlan.hs20.anqp.wan_metrics.uplink_speed",
-      FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b3,
+     {"Explicit CSI Feedback", "wlan.asel.csi",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_downlink_load,
-     {"Downlink Load", "wlan.hs20.anqp.wan_metrics.downlink_load",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b4,
+     {"Antenna Indices Feedback", "wlan.asel.if",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_uplink_load,
-     {"Uplink Load", "wlan.hs20.anqp.wan_metrics.uplink_load",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_antsel_b5,
+     {"Rx ASEL", "wlan.asel.rx",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_wan_metrics_lmd,
-     {"LMD", "wlan.hs20.anqp.wan_metrics.lmd",
-      FT_UINT16, BASE_DEC, NULL, 0, "Load Measurement Duration", HFILL }},
+    {&hf_ieee80211_antsel_b6,
+     {"Tx Sounding PPDUs", "wlan.asel.sppdu",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_cc_proto_ip_proto,
-     {"IP Protocol", "wlan.hs20.anqp.cc.ip_proto",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "ProtoPort Tuple - IP Protocol", HFILL }},
+    {&hf_ieee80211_antsel_b7,
+     {"Reserved", "wlan.asel.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x80,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_cc_proto_port_num,
-     {"Port Number", "wlan.hs20.anqp.cc.port_num",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "ProtoPort Tuple - Port Number", HFILL }},
+    {&hf_ieee80211_ht_info_delimiter1,
+     {"HT Information Subset (1 of 3)", "wlan.ht.info.delim1",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_cc_proto_status,
-     {"Status", "wlan.hs20.anqp.cc.status",
-      FT_UINT8, BASE_DEC, VALS(hs20_cc_status_vals), 0,
-      "ProtoPort Tuple - Status", HFILL }},
+    {&hf_ieee80211_ht_info_primary_channel,
+     {"Primary Channel", "wlan.ht.info.primarychannel",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_nai_hrq_count,
-     {"NAI Home Realm Count", "wlan.hs20.anqp.nai_hrq.count",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_ht_info_secondary_channel_offset,
+     {"Secondary channel offset", "wlan.ht.info.secchanoffset",
+      FT_UINT8, BASE_HEX, VALS(ht_info_secondary_channel_offset_flags), 0x03,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_nai_hrq_encoding_type,
-     {"NAI Home Realm Encoding Type",
-      "wlan.hs20.anqp.nai_hrq.encoding_type",
-      FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals),
-      0x01, NULL, HFILL }},
+    {&hf_ieee80211_ht_info_sta_channel_width,
+     {"Supported channel width", "wlan.ht.info.chanwidth",
+      FT_BOOLEAN, 8, TFS(&ht_info_channel_sta_width_flag), 0x04,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_nai_hrq_length,
-     {"NAI Home Realm Name Length", "wlan.hs20.anqp.nai_hrq.length",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_ht_info_rifs_mode,
+     {"Reduced Interframe Spacing (RIFS)", "wlan.ht.info.rifs",
+      FT_BOOLEAN, 8, TFS(&ht_info_rifs_mode_flag), 0x08,
+      NULL, HFILL }},
 
-    {&hf_hs20_anqp_nai_hrq_realm_name,
-     {"NAI Home Realm Name", "wlan.hs20.anqp.nai_hrq.name",
-      FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_ht_info_reserved_b4_b7,
+     {"Reserved", "wlan.ht.info.reserved_b4_b7",
+      FT_UINT8, BASE_HEX, NULL, 0xf0, NULL, HFILL }},
 
-    {&hf_hs20_anqp_oper_class_indic,
-     {"Operating Class", "wlan.hs20.anqp.oper_class_indic.oper_class",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_ieee80211_ht_info_delimiter2,
+     {"HT Information Subset (2 of 3)", "wlan.ht.info.delim2",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag,
-     {"Tag", "wlan.tag",
-      FT_NONE, BASE_NONE, 0x0, 0,
+    {&hf_ieee80211_ht_info_protection,
+     {"HT Protection", "wlan.ht.info.ht_protection",
+      FT_UINT16, BASE_HEX, VALS(ht_info_operating_protection_mode_flags), 0x0003,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_number,
-     {"Tag Number", "wlan.tag.number",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0,
-      "Element ID", HFILL }},
+    {&hf_ieee80211_ht_info_non_greenfield_sta_present,
+     {"Non-greenfield STAs present", "wlan.ht.info.greenfield",
+      FT_BOOLEAN, 16, TFS(&ht_info_non_greenfield_sta_present_flag), 0x0004,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_length,
-     {"Tag length", "wlan.tag.length",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Length of tag", HFILL }},
+    {&hf_ieee80211_ht_info_reserved_b11,
+     {"Reserved", "wlan.ht.info.reserved_b11",
+      FT_UINT16, BASE_HEX, NULL, 0x0008, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interpretation,
-     {"Tag interpretation", "wlan.tag.interpretation",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "Interpretation of tag", HFILL }},
+    {&hf_ieee80211_ht_info_obss_non_ht_stas_present,
+     {"OBSS non-HT STAs present", "wlan.ht.info.obssnonht",
+      FT_BOOLEAN, 16, TFS(&ht_info_obss_non_ht_stas_present_flag), 0x0010,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_data,
-     {"Tag Data", "wlan.tag.data",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Data Interpretation of tag", HFILL }},
+    {&hf_ieee80211_ht_info_channel_center_freq_seg_2,
+     {"Channel Center Frequency Segment 2", "wlan.ht.info.chan_center_freq_seg_2",
+      FT_UINT16, BASE_DEC, NULL, 0x1fe0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_oui,
-     {"OUI", "wlan.tag.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      "OUI of vendor specific IE", HFILL }},
+    {&hf_ieee80211_ht_info_reserved_b21_b23,
+     {"Reserved", "wlan.ht.info.reserved_b21_b23",
+      FT_UINT16, BASE_HEX, NULL, 0xe000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_oui_wfa_subtype,
-     {"WFA Subtype", "wlan.tag.oui.wfa_subtype",
-      FT_UINT8, BASE_DEC, VALS(wfa_subtype_vals), 0,
+    {&hf_ieee80211_ht_info_delimiter3,
+     {"HT Information Subset (3 of 3)", "wlan.ht.info.delim3",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ds_param_channel,
-     {"Current Channel", "wlan.ds.current_channel",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "DS Parameter Set - Current Channel", HFILL }},
+    {&hf_ieee80211_ht_info_reserved_b24_b29,
+     {"Reserved", "wlan.ht.info.reserved_b24_b29",
+      FT_UINT16, BASE_HEX, NULL, 0x003f, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cfp_count,
-     {"CFP Count", "wlan.cfp.count",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Indicates how many delivery traffic indication messages (DTIMs)", HFILL }},
+    {&hf_ieee80211_ht_info_dual_beacon,
+     {"Dual beacon", "wlan.ht.info.dualbeacon",
+      FT_BOOLEAN, 16, TFS(&ht_info_dual_beacon_flag), 0x0040,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cfp_period,
-     {"CFP Period", "wlan.cfp.period",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Indicates the number of DTIM intervals between the start of CFPs", HFILL }},
+    {&hf_ieee80211_ht_info_dual_cts_protection,
+     {"Dual Clear To Send (CTS) protection", "wlan.ht.info.dualcts",
+      FT_BOOLEAN, 16, TFS(&tfs_required_not_required), 0x0080,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cfp_max_duration,
-     {"CFP Max Duration", "wlan.cfp.max_duration",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the maximum duration (in TU) of the CFP that may be generated by this PCF", HFILL }},
+    {&hf_ieee80211_ht_info_secondary_beacon,
+     {"Beacon ID", "wlan.ht.info.secondarybeacon",
+      FT_BOOLEAN, 16, TFS(&ht_info_secondary_beacon_flag), 0x0100,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cfp_dur_remaining,
-     {"CFP Dur Remaining", "wlan.cfp.dur_remaining",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the maximum time (in TU) remaining in the present CFP", HFILL }},
+    {&hf_ieee80211_ht_info_lsig_txop_protection_full_support,
+     {"L-SIG TXOP Protection Full Support", "wlan.ht.info.lsigprotsupport",
+      FT_BOOLEAN, 16, TFS(&ht_info_lsig_txop_protection_full_support_flag), 0x0200,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_ht_info_pco_active,
+     {"Phased Coexistence Operation (PCO)", "wlan.ht.info.pco.active",
+      FT_BOOLEAN, 16, TFS(&tfs_active_inactive), 0x0400,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_vendor_oui_type,
-     {"Vendor Specific OUI Type", "wlan.tag.vendor.oui.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ht_info_pco_phase,
+     {"Phased Coexistence Operation (PCO) Phase", "wlan.ht.info.pco.phase",
+      FT_BOOLEAN, 16, TFS(&ht_info_pco_phase_flag), 0x0800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_vendor_data,
-     {"Vendor Specific Data", "wlan.tag.vendor.data",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Unknown/undecoded Vendor Specific Data", HFILL }},
+    {&hf_ieee80211_ht_info_reserved_b36_b39,
+     {"Reserved", "wlan.ht.info.reserved_b36_b39",
+      FT_UINT16, BASE_HEX, NULL, 0xf000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tim_dtim_count,
-     {"DTIM count", "wlan.tim.dtim_count",
+    {&hf_ieee80211_tag_ap_channel_report_operating_class,
+     {"Operating Class", "wlan.ap_channel_report.operating_class",
       FT_UINT8, BASE_DEC, NULL, 0,
-      "Indicates how many Beacon frames (including the current frame) appear before the next DTIM", HFILL }},
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tim_dtim_period,
-     {"DTIM period", "wlan.tim.dtim_period",
+    {&hf_ieee80211_tag_ap_channel_report_channel_list,
+     {"Channel List", "wlan.ap_channel_report.channel_list",
       FT_UINT8, BASE_DEC, NULL, 0,
-      "Indicates the number of beacon intervals between successive DTIMs", HFILL }},
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tim_bmapctl,
-     {"Bitmap control", "wlan.tim.bmapctl",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_secondary_channel_offset,
+     {"Secondary Channel Offset", "wlan.secchanoffset",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_secondary_channel_offset_flags), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tim_bmapctl_mcast,
-     {"Multicast", "wlan.tim.bmapctl.multicast",
-      FT_BOOLEAN, 8, NULL, 0x1,
-      "Contains the Traffic Indicator bit associated with Association ID 0", HFILL }},
+    {&hf_ieee80211_tag_bss_ap_avg_access_delay,
+     {"AP Average Access Delay", "wlan.bss_ap_avg_access_delay",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tim_bmapctl_offset,
-     {"Bitmap Offset", "wlan.tim.bmapctl.offset",
-      FT_UINT8, BASE_HEX, NULL, 0xFE,
+    {&hf_ieee80211_tag_antenna_id,
+     {"Antenna ID", "wlan.antenna.id",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tim_partial_virtual_bitmap,
-     {"Partial Virtual Bitmap", "wlan.tim.partial_virtual_bitmap",
-      FT_BYTES, BASE_NONE, NULL, 0x0,
+    {&hf_ieee80211_tag_rsni,
+     {"RSNI", "wlan.rsni",
+      FT_UINT8, BASE_CUSTOM, CF_FUNC(rsni_base_custom), 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tim_aid,
-     {"Association ID", "wlan.tim.aid",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask,
+     {"Available Admission Capacity Bitmask", "wlan.bss_avb_adm_cap.bitmask",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up0,
+     {"UP0 (bit0)", "wlan.bss_avb_adm_cap.bitmask.up0",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up1,
+     {"UP1 (bit1)", "wlan.bss_avb_adm_cap.bitmask.up1",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP1,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up2,
+     {"UP2 (bit2)", "wlan.bss_avb_adm_cap.bitmask.up2",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP2,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up3,
+     {"UP3 (bit3)", "wlan.bss_avb_adm_cap.bitmask.up3",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP3,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up4,
+     {"UP4 (bit4)", "wlan.bss_avb_adm_cap.bitmask.up4",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP4,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up5,
+     {"UP5 (bit5)", "wlan.bss_avb_adm_cap.bitmask.up5",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP5,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up6,
+     {"UP0 (bit6)", "wlan.bss_avb_adm_cap.bitmask.up6",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP6,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up7,
+     {"UP7 (bit7)", "wlan.bss_avb_adm_cap.bitmask.up7",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP7,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac0,
+     {"AC0 (bit8)", "wlan.bss_avb_adm_cap.bitmask.ac0",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac1,
+     {"AC1 (bit9)", "wlan.bss_avb_adm_cap.bitmask.AC1",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC1,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac2,
+     {"AC2 (bit10)", "wlan.bss_avb_adm_cap.bitmask.ac2",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC2,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac3,
+     {"AC3 (bit11)", "wlan.bss_avb_adm_cap.bitmask.ac3",
+      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC3,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_rsv,
+     {"Reserved", "wlan.bss_avb_adm_cap.bitmask.rsv",
+      FT_UINT16, BASE_HEX, NULL, BSS_BITMASK_RSV,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up0,
+     {"UP0", "wlan.bss_avb_adm_cap.up0",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up1,
+     {"UP1", "wlan.bss_avb_adm_cap.up1",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up2,
+     {"UP2", "wlan.bss_avb_adm_cap.up2",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up3,
+     {"UP3", "wlan.bss_avb_adm_cap.up3",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up4,
+     {"UP4", "wlan.bss_avb_adm_cap.up4",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up5,
+     {"UP5", "wlan.bss_avb_adm_cap.up5",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up6,
+     {"UP6", "wlan.bss_avb_adm_cap.up6",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_up7,
+     {"UP7", "wlan.bss_avb_adm_cap.up7",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_ac0,
+     {"AC0", "wlan.bss_avb_adm_cap.ac0",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_ac1,
+     {"AC1", "wlan.bss_avb_adm_cap.ac1",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_ac2,
+     {"AC2", "wlan.bss_avb_adm_cap.ac2",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avb_adm_cap_ac3,
+     {"AC3", "wlan.bss_avb_adm_cap.ac3",
+      FT_UINT16, BASE_DEC, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ibss_atim_window,
-     {"Atim Windows", "wlan.ibss.atim_windows",
-      FT_UINT16, BASE_HEX, NULL, 0x0,
-      "Contains the ATIM Window length in TU", HFILL }},
+    {&hf_ieee80211_tag_bss_avg_ac_access_delay_be,
+     {"AC Average Access Delay for Best Effort", "wlan.bss_avg_ac_access_delay.be",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avg_ac_access_delay_bk,
+     {"AC Average Access Delay for Best Background", "wlan.bss_avg_ac_access_delay.bk",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avg_ac_access_delay_vi,
+     {"AC Average Access Delay for Video", "wlan.bss_avg_ac_access_delay_vi",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_bss_avg_ac_access_delay_vo,
+     {"AC Average Access Delay for Voice", "wlan.bss_avg_ac_access_delay_vo",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_country_info_code,
-     {"Code", "wlan.country_info.code",
-      FT_STRING, BASE_NONE, NULL, 0x0,
+
+    /* 802.11-2012 Table 8-119-RM Enabled Capabilities definition */
+    {&hf_ieee80211_tag_rm_enabled_capabilities,
+     {"RM Capabilities", "wlan.rmcap",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Signals support for radio measurements in a device", HFILL }},
+
+    /* RM Enabled Capability octet 1 */
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b0,
+     {"Link Measurement", "wlan.rmcap.b0",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b1,
+     {"Neighbor Report", "wlan.rmcap.b1",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b2,
+     {"Parallel Measurements", "wlan.rmcap.b2",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b3,
+     {"Repeated Measurements", "wlan.rmcap.b3",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b4,
+     {"Beacon Passive Measurement", "wlan.rmcap.b4",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b5,
+     {"Beacon Active Measurement", "wlan.rmcap.b5",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b6,
+     {"Beacon Table Measurement", "wlan.rmcap.b6",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b7,
+     {"Beacon Measurement Reporting Conditions", "wlan.rmcap.b7",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_country_info_env,
-     {"Environment", "wlan.country_info.environment",
-      FT_UINT8, BASE_HEX, VALS(environment_vals), 0x0,
+    /* RM Enabled Capability octet 2 */
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b8,
+     {"Frame Measurement", "wlan.rmcap.b8",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b9,
+     {"Channel Load Measurement", "wlan.rmcap.b9",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b10,
+     {"Noise Histogram Measurement", "wlan.rmcap.b10",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b11,
+     {"Statistics Measurement", "wlan.rmcap.b11",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b12,
+     {"LCI Measurement", "wlan.rmcap.b12",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b13,
+     {"LCI Azimuth capability", "wlan.rmcap.b13",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b14,
+     {"Transmit Stream/Category Measurement", "wlan.rmcap.b14",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+      NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b15,
+     {"Triggered Transmit Stream/Category Measurement", "wlan.rmcap.b15",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_country_info_pad,
-     {"Padding", "wlan.country_info.padding",
-      FT_BYTES, BASE_NONE, NULL, 0x0,
+    /* RM Enabled Capability octet 3 */
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b16,
+     {"AP Channel Report capability", "wlan.rmcap.b16",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_fnm,
-     {"Country Info", "wlan.country_info.fnm",
-      FT_NONE, BASE_NONE, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b17,
+     {"RM MIB capability", "wlan.rmcap.b17",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_fnm_fcn,
-     {"First Channel Number", "wlan.country_info.fnm.fcn",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b18to20,
+     {"Operating Channel Max Measurement Duration", "wlan.rmcap.b18to20",
+      FT_UINT8, BASE_DEC, NULL, 0x1C,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_fnm_nc,
-     {"Number of Channels", "wlan.country_info.fnm.nc",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b21to23,
+     {"Nonoperating Channel Max Measurement Duration", "wlan.rmcap.b21to23",
+      FT_UINT8, BASE_DEC, NULL, 0xE0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_country_info_fnm_mtpl,
-     {"Maximum Transmit Power Level (in dBm)", "wlan.country_info.fnm.mtpl",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    /* RM Enabled Capability octet 4 */
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b24to26,
+     {"Measurement Pilotcapability", "wlan.rmcap.b24to26",
+      FT_UINT8, BASE_DEC, NULL, 0x07,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_rrc,
-     {"Country Info", "wlan.country_info.rrc",
-      FT_NONE, BASE_NONE, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b27,
+     {"Measurement Pilot Transmission Information", "wlan.rmcap.b27",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_rrc_oei,
-     {"Operating Extension Identifier", "wlan.country_info.rrc.oei",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b28,
+     {"Neighbor Report TSF Offset", "wlan.rmcap.b28",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_rrc_oc,
-     {"Operating Class", "wlan.country_info.rrc.oc",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b29,
+     {"RCPI Measurement capability", "wlan.rmcap.b29",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_country_info_rrc_cc,
-     {"Coverage Class", "wlan.country_info.rrc.cc",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b30,
+     {"RSNI Measurement capability", "wlan.rmcap.b30",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_parameter_prime_radix,
-     {"Prime Radix", "wlan.fh_hopping.parameter.prime_radix",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b31,
+     {"BSS Average Access Delay capability", "wlan.rmcap.b31",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_fh_hopping_parameter_nb_channels,
-     {"Number of Channels", "wlan.fh_hopping.parameter.nb_channels",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    /* RM Enabled Capability octet 5 */
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b32,
+     {"BSS Available Admission Capacity capability", "wlan.rmcap.b32",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_table_flag,
-     {"Flag", "wlan.fh_hopping.table.flag",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
-      "Indicates that a Random Table is present when the value is 1", HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_table_number_of_sets,
-     {"Number of Sets", "wlan.fh_hopping.table.number_of_sets",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
-      "Indicates the total number of sets within the hopping patterns", HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_table_modulus,
-     {"Modulus", "wlan.fh_hopping.table.modulus",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
-      "Indicate the values to be used in the equations to create a hopping sequence from the Random Table information", HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_table_offset,
-     {"Offset", "wlan.fh_hopping.table.offset",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
-      "Indicate the values to be used in the equations to create a hopping sequence from the Random Table information", HFILL }},
-
-    {&hf_ieee80211_tag_fh_hopping_random_table,
-     {"Random Table", "wlan.fh_hopping.table.random_table",
-      FT_UINT16, BASE_HEX, NULL, 0x0,
-      "It is a vector of single octet values that indicate the random sequence to be followed during a hopping sequence", HFILL }},
-
-    {&hf_ieee80211_tag_request,
-     {"Requested Element ID", "wlan.tag.request",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0,
-      "The list of elements that are to be included in the responding STA Probe Response frame", HFILL }},
-
-    {&hf_ieee80211_tclas_up,
-     {"User Priority", "wlan.tclas.user_priority",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Contains the value of the UP of the associated MSDUs", HFILL }},
-
-    {&hf_ieee80211_tclas_class_type,
-     {"Classifier Type", "wlan.tclas.class_type",
-      FT_UINT8, BASE_DEC, VALS(classifier_type), 0,
-      "Specifies the type of classifier parameters", HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask,
-     {"Classifier Mask", "wlan.tclas.class_mask",
-      FT_UINT8, BASE_HEX,  NULL, 0,
-      "Specifies a bitmap where bits that are set to 1 identify a subset of the classifier parameters", HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask0_src_addr,
-     {"Source Address", "wlan.tclas.class_mask.src_addr",
-      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask0_dst_addr,
-     {"Destination Address", "wlan.tclas.class_mask.dst_addr",
-      FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask0_type,
-     {"Type", "wlan.tclas.class_mask.type",
-      FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_ver,
-     {"Version", "wlan.tclas.class_mask.version",
-      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_src_ip,
-     {"Source IP Address", "wlan.tclas.class_mask.src_ip",
-      FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_dst_ip,
-     {"Destination IP Address", "wlan.tclas.class_mask.dst_ip",
-      FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_src_port,
-     {"Source Port", "wlan.tclas.class_mask.src_port",
-      FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_dst_port,
-     {"Destination Port", "wlan.tclas.class_mask.dst_port",
-      FT_UINT8, BASE_HEX, NULL, 0x10, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_ipv4_dscp,
-     {"DSCP", "wlan.tclas.class_mask.dscp",
-      FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_ipv4_proto,
-     {"Protocol", "wlan.tclas.class_mask.proto",
-      FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask1_ipv6_flow,
-     {"Flow Label", "wlan.tclas.class_mask.flow_label",
-      FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_class_mask2_tci,
-     {"802.1Q CLAN TCI", "wlan.tclas.class_mask.tci",
-      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_src_mac_addr,
-     {"Source address", "wlan.tclas.src_mac_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Classifier Parameters Ethernet Type", HFILL }},
-
-    {&hf_ieee80211_tclas_dst_mac_addr,
-     {"Destination address", "wlan.tclas.dat_mac_addr",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_rm_enabled_capabilities_b33,
+     {"Antenna capability", "wlan.rmcap.b33",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
       NULL, HFILL }},
+    {&hf_ieee80211_tag_rm_enabled_capabilities_o5,
+     {"Reserved", "wlan.rmcap.o5",
+      FT_UINT8, BASE_HEX, NULL, 0xFC,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_tclas_ether_type,
-     {"Ethernet Type", "wlan.tclas.ether_type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    /* 20/40 BSS Coexistence */
+    {&hf_ieee80211_tag_20_40_bc,
+     {"20/40 BSS Coexistence Flags", "wlan.20_40_bc",
+      FT_UINT8, BASE_HEX, NULL, 0x0,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_version,
-     {"IP Version", "wlan.tclas.version",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_20_40_bc_information_request,
+     {"Information Request", "wlan.20_40_bc.information_request",
+      FT_BOOLEAN, 8, NULL, 0x01,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_ipv4_src,
-     {"IPv4 Src Addr", "wlan.tclas.ipv4_src",
-      FT_IPv4, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_20_40_bc_forty_mhz_intolerant,
+     {"Forty MHz Intolerant", "wlan.20_40_bc.forty_mhz_intolerant",
+      FT_BOOLEAN, 8, NULL, 0x02,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_ipv4_dst,
-     {"IPv4 Dst Addr", "wlan.tclas.ipv4_dst",
-      FT_IPv4, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_20_40_bc_20_mhz_bss_witdh_request,
+     {"20 MHz BSS Witdh Request", "wlan.20_40_bc.20_mhz_bss_witdh_request",
+      FT_BOOLEAN, 8, NULL, 0x04,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_src_port,
-     {"Source Port", "wlan.tclas.src_port",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_request,
+     {"OBSS Scanning Exemption Request", "wlan.20_40_bc.obss_scanning_exemption_request",
+      FT_BOOLEAN, 8, NULL, 0x08,
       NULL, HFILL }},
-
-    {&hf_ieee80211_tclas_dst_port,
-     {"Destination Port", "wlan.tclas.dst_port",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_grant,
+     {"OBSS Scanning Exemption Grant", "wlan.20_40_bc.obss_scanning_exemption_grant",
+      FT_BOOLEAN, 8, NULL, 0x10,
       NULL, HFILL }},
+    {&hf_ieee80211_tag_20_40_bc_reserved,
+     {"Reserved", "wlan.20_40_bc.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xE0,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_tclas_dscp,
-     {"IPv4 DSCP", "wlan.tclas.dscp",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "IPv4 Differentiated Services Code Point (DSCP) Field", HFILL }},
-
-    {&hf_ieee80211_tclas_protocol,
-     {"Protocol", "wlan.tclas.protocol",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "IPv4 Protocol", HFILL }},
 
-    {&hf_ieee80211_tclas_ipv6_src,
-     {"IPv6 Src Addr", "wlan.tclas.ipv6_src",
-      FT_IPv6, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_power_constraint_local,
+     {"Local Power Constraint", "wlan.powercon.local",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Value that allows the mitigation requirements to be satisfied in the current channel", HFILL }},
 
-    {&hf_ieee80211_tclas_ipv6_dst,
-     {"IPv6 Dst Addr", "wlan.tclas.ipv6_dst",
-      FT_IPv6, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_power_capability_min,
+     {"Minimum Transmit Power", "wlan.powercap.min",
+      FT_INT8, BASE_DEC, NULL, 0,
+      "The nominal minimum transmit power with which the STA is capable of transmitting in the current channel", HFILL }},
 
-    {&hf_ieee80211_tclas_flow,
-     {"Flow Label", "wlan.tclas.flow",
-      FT_UINT24, BASE_HEX, NULL, 0,
-      "IPv6 Flow Label", HFILL }},
+    {&hf_ieee80211_tag_power_capability_max,
+     {"Maximum Transmit Power", "wlan.powercap.max",
+      FT_INT8, BASE_DEC, NULL, 0,
+      "The nominal maximum transmit power with which the STA is capable of transmitting in the current channel", HFILL }},
 
-    {&hf_ieee80211_tclas_tag_type,
-     {"802.1Q Tag Type", "wlan.tclas.tag_type",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_tpc_report_trsmt_pow,
+     {"Transmit Power", "wlan.tcprep.trsmt_pow",
+      FT_INT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_challenge_text,
-     {"Challenge Text", "wlan.tag.challenge_text",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_tpc_report_link_mrg,
+     {"Link Margin", "wlan.tcprep.link_mrg",
+      FT_INT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_version,
-     {"RSN Version", "wlan.rsn.version",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the version number of the RSNA protocol", HFILL }},
-
-    {&hf_ieee80211_rsn_gcs,
-     {"Group Cipher Suite", "wlan.rsn.gcs",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_gcs_base_custom), 0,
-      "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }},
-
-    {&hf_ieee80211_rsn_gcs_oui,
-     {"Group Cipher Suite OUI", "wlan.rsn.gcs.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
+    {&hf_ieee80211_tag_supported_channels,
+     {"Supported Channels Set", "wlan.supchan",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_gcs_type,
-     {"Group Cipher Suite type", "wlan.rsn.gcs.type",
+    {&hf_ieee80211_tag_supported_channels_first,
+     {"First Supported Channel", "wlan.supchan.first",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_gcs_80211_type,
-     {"Group Cipher Suite type", "wlan.rsn.gcs.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
+    {&hf_ieee80211_tag_supported_channels_range,
+     {"Supported Channel Range", "wlan.supchan.range",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_pcs_count,
-     {"Pairwise Cipher Suite Count", "wlan.rsn.pcs.count",
-      FT_UINT16, BASE_DEC,  NULL, 0,
-      "Indicates the number of pairwise cipher suite selectors that are contained in the Pairwise Cipher Suite List", HFILL }},
-
-    {&hf_ieee80211_rsn_pcs_list,
-     {"Pairwise Cipher Suite List", "wlan.rsn.pcs.list",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "Contains a series of cipher suite selectors that indicate the pairwisecipher suites", HFILL }},
+    {&hf_ieee80211_csa_channel_switch_mode,
+     {"Channel Switch Mode", "wlan.csa.channel_switch_mode",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Indicates any restrictions on transmission until a channel switch", HFILL }},
 
-    {&hf_ieee80211_rsn_pcs,
-     {"Pairwise Cipher Suite", "wlan.rsn.pcs",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_pcs_base_custom), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_csa_new_channel_number,
+     {"New Channel Number", "wlan.csa.new_channel_number",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Set to the number of the channel to which the STA is moving", HFILL }},
 
-    {&hf_ieee80211_rsn_pcs_oui,
-     {"Pairwise Cipher Suite OUI", "wlan.rsn.pcs.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_csa_channel_switch_count,
+     {"Channel Switch Count", "wlan.csa.channel_switch.count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Set to the number of TBTTs until the STA sending the Channel Switch Announcement element switches to the new channel or shall be set to 0", HFILL }},
 
-    {&hf_ieee80211_rsn_pcs_type,
-     {"Pairwise Cipher Suite type", "wlan.rsn.pcs.type",
+    {&hf_ieee80211_mesh_channel_switch_ttl,
+     {"Mesh Channel Switch TTL", "wlan.csa.mesh_channel_switch.ttl",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_pcs_80211_type,
-     {"Pairwise Cipher Suite type", "wlan.rsn.pcs.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
+    {&hf_ieee80211_mesh_channel_switch_flag,
+     {"Mesh Channel Switch Flag", "wlan.csa.mesh_channel_switch.flag",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms_count,
-     {"Auth Key Management (AKM) Suite Count", "wlan.rsn.akms.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }},
+    {&hf_ieee80211_mesh_chswitch_flag_txrestrict,
+     {"CSA Tx Restrict", "wlan.csa.mesh_channel_switch.flag.txrestrict",
+      FT_BOOLEAN, 16, TFS(&csa_txrestrict_flags), 0x0001,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms_list,
-     {"Auth Key Management (AKM) List", "wlan.rsn.akms.list",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
+    {&hf_ieee80211_mesh_chswitch_flag_initiator,
+     {"CSA Initiator", "wlan.csa.mesh_channel_switch.flag.initiator",
+      FT_BOOLEAN, 16, TFS(&csa_initiator_flags), 0x0002,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms,
-     {"Auth Key Management (AKM) Suite", "wlan.rsn.akms",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_akms_base_custom), 0,
+    {&hf_ieee80211_mesh_channel_switch_reason_code,
+     {"Mesh Channel Switch Reason Code", "wlan.csa.mesh_channel_switch.reason_code",
+      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_reason_code_ext, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms_oui,
-     {"Auth Key Management (AKM) OUI", "wlan.rsn.akms.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
+    {&hf_ieee80211_mesh_channel_switch_precedence_value,
+     {"Mesh Channel Switch Precedence Value", "wlan.csa.mesh_channel_switch.pre_value",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms_type,
-     {"Auth Key Management (AKM) type", "wlan.rsn.akms.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_mesh_awake_window,
+     {"Mesh Awake Window", "wlan.mesh.mesh_awake_window",
+      FT_UINT16, BASE_CUSTOM, CF_FUNC(mesh_active_window_base_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_akms_80211_type,
-     {"Auth Key Management (AKM) type", "wlan.rsn.akms.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_keymgmt_vals), 0,
+    {&hf_ieee80211_tag_measure_request_token,
+     {"Measurement Token", "wlan.measure.req.token",
+      FT_UINT8, BASE_HEX, NULL, 0xff,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap,
-     {"RSN Capabilities", "wlan.rsn.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "RSN Capability information", HFILL }},
+    {&hf_ieee80211_tag_measure_request_mode,
+     {"Measurement Request Mode", "wlan.measure.req.mode",
+      FT_UINT8, BASE_HEX, NULL, 0xff,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_preauth,
-     {"RSN Pre-Auth capabilities", "wlan.rsn.capabilities.preauth",
-      FT_BOOLEAN, 16, TFS(&rsn_preauth_flags), 0x0001,
+    {&hf_ieee80211_tag_measure_request_mode_parallel,
+     {"Parallel", "wlan.measure.req.reqmode.parallel",
+      FT_BOOLEAN, 8, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_no_pairwise,
-     {"RSN No Pairwise capabilities", "wlan.rsn.capabilities.no_pairwise",
-      FT_BOOLEAN, 16, TFS(&rsn_no_pairwise_flags), 0x0002,
+    {&hf_ieee80211_tag_measure_request_mode_enable,
+     {"Measurement Request Mode Field", "wlan.measure.req.reqmode.enable",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_ptksa_replay_counter,
-     {"RSN PTKSA Replay Counter capabilities", "wlan.rsn.capabilities.ptksa_replay_counter",
-      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x000C,
+    {&hf_ieee80211_tag_measure_request_mode_request,
+     {"Measurement Reports", "wlan.measure.req.reqmode.request",
+      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_gtksa_replay_counter,
-     {"RSN GTKSA Replay Counter capabilities", "wlan.rsn.capabilities.gtksa_replay_counter",
-      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x0030,
+    {&hf_ieee80211_tag_measure_request_mode_report,
+     {"Autonomous Measurement Reports", "wlan.measure.req.reqmode.report",
+      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_mfpr,
-     {"Management Frame Protection Required", "wlan.rsn.capabilities.mfpr",
-      FT_BOOLEAN, 16, NULL, 0x0040,
+    {&hf_ieee80211_tag_measure_request_mode_duration_mandatory,
+     {"Duration Mandatory", "wlan.measure.req.reqmode.duration_mandatory",
+      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_mfpc,
-     {"Management Frame Protection Capable", "wlan.rsn.capabilities.mfpc",
-      FT_BOOLEAN, 16, NULL, 0x0080,
+    {&hf_ieee80211_tag_measure_request_mode_reserved,
+     {"Reserved", "wlan.measure.req.reqmode.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xE0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_jmr,
-     {"Joint Multi-band RSNA", "wlan.rsn.capabilities.jmr",
-      FT_BOOLEAN, 16, NULL, 0x0100,
+    {&hf_ieee80211_tag_measure_request_type,
+     {"Measurement Request Type", "wlan.measure.req.reqtype",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_type_flags_ext, 0x00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_cap_peerkey,
-     {"PeerKey Enabled", "wlan.rsn.capabilities.peerkey",
-      FT_BOOLEAN, 16, NULL, 0x0200,
+    {&hf_ieee80211_tag_measure_request_channel_number,
+     {"Measurement Channel Number", "wlan.measure.req.channelnumber",
+      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_pmkid_count,
-     {"PMKID Count", "wlan.rsn.pmkid.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the number of PMKID  selectors that are contained in the PMKID Suite List", HFILL }},
+    {&hf_ieee80211_tag_measure_request_start_time,
+     {"Measurement Start Time", "wlan.measure.req.starttime",
+      FT_UINT64, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_pmkid_list,
-     {"PMKID List", "wlan.rsn.pmkid.list",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
+    {&hf_ieee80211_tag_measure_request_duration,
+     {"Measurement Duration", "wlan.measure.req.channelnumber",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "in TU (1 TU = 1024 us)", HFILL }},
 
-    {&hf_ieee80211_rsn_pmkid,
-     {"PMKID", "wlan.pmkid.akms",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_operating_class,
+     {"Operating Class", "wlan.measure.req.operatingclass",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_gmcs,
-     {"Group Management Cipher Suite", "wlan.rsn.gmcs",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(rsn_gmcs_base_custom), 0,
-      "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }},
+    {&hf_ieee80211_tag_measure_request_randomization_interval,
+     {"Randomization Interval", "wlan.measure.req.randint",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "in TU (1 TU = 1024 us)", HFILL }},
 
-    {&hf_ieee80211_rsn_gmcs_oui,
-     {"Group Management Cipher Suite OUI", "wlan.rsn.gmcs.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_measurement_mode,
+     {"Measurement Mode", "wlan.measure.req.measurementmode",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_measurement_mode_flags), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_gmcs_type,
-     {"Group Management Cipher Suite type", "wlan.rsn.gmcs.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_bssid,
+     {"BSSID", "wlan.measure.req.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_gmcs_80211_type,
-     {"Group Management Cipher Suite type", "wlan.rsn.gmcs.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0,
+    {&hf_ieee80211_tag_measure_request_subelement_length,
+     {"Length", "wlan.measure.req.sub.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_pren_type,
-     {"802.11n (Pre) Type", "wlan.vs.pren.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_ht_pren_type_vals), 0,
-      "Vendor Specific HT Type", HFILL }},
-    {&hf_ieee80211_ht_pren_unknown,
-     {"802.11n (Pre) Unknown Data", "wlan.vs.pren.unknown_data",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_beacon_sub_id,
+     {"SubElement ID", "wlan.measure.req.beacon.sub.id",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_beacon_sub_id_flags), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_cap,
-     {"HT Capabilities Info", "wlan.ht.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "HT Capabilities information", HFILL }},
-
-    {&hf_ieee80211_ht_vs_cap,
-     {"HT Capabilities Info (VS)", "wlan.vs.ht.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Vendor Specific HT Capabilities information", HFILL }},
+    {&hf_ieee80211_tag_measure_request_beacon_sub_ssid,
+     {"SSID", "wlan.measure.req.beacon.sub.ssid",
+      FT_STRING, BASE_NONE, 0, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ht_ldpc_coding,
-     {"HT LDPC coding capability", "wlan.ht.capabilities.ldpccoding",
-      FT_BOOLEAN, 16, TFS(&ht_ldpc_coding_flag), 0x0001,
+    {&hf_ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition,
+     {"Reporting Condition", "wlan.measure.req.beacon.sub.bri.repcond",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition_flags), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_chan_width,
-     {"HT Support channel width", "wlan.ht.capabilities.width",
-      FT_BOOLEAN, 16, TFS(&ht_chan_width_flag), 0x0002,
+    {&hf_ieee80211_tag_measure_request_beacon_sub_bri_threshold_offset,
+     {"Threshold/Offset", "wlan.measure.req.beacon.sub.bri.threshold_offset",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_sm_pwsave,
-     {"HT SM Power Save", "wlan.ht.capabilities.sm",
-      FT_UINT16, BASE_HEX, VALS(ht_sm_pwsave_flag), 0x000c,
+    {&hf_ieee80211_tag_measure_request_beacon_sub_reporting_detail,
+     {"Reporting Detail", "wlan.measure.req.beacon.sub.bri.reporting_detail",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_reporting_detail_flags), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_green,
-     {"HT Green Field", "wlan.ht.capabilities.green",
-      FT_BOOLEAN, 16, TFS(&ht_green_flag), 0x0010,
+    {&hf_ieee80211_tag_measure_request_beacon_sub_request,
+     {"Request", "wlan.measure.req.beacon.sub.request",
+      FT_UINT8, BASE_DEC, 0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_short20,
-     {"HT Short GI for 20MHz", "wlan.ht.capabilities.short20",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0020,
+    {&hf_ieee80211_tag_measure_request_beacon_unknown,
+     {"Unknown Data", "wlan.measure.req.beacon.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "(not interpreted)", HFILL }},
+
+    {&hf_ieee80211_tag_measure_request_channel_load_sub_id,
+     {"SubElement ID", "wlan.measure.req.channel_load.sub.id",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_channel_load_sub_id_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_short40,
-     {"HT Short GI for 40MHz", "wlan.ht.capabilities.short40",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040,
+    {&hf_ieee80211_tag_measure_request_channel_load_sub_reporting_condition,
+     {"Reporting Condition", "wlan.measure.req.channel_load.sub.repcond",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_channel_load_sub_reporting_condition_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_tx_stbc,
-     {"HT Tx STBC", "wlan.ht.capabilities.txstbc",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0080,
+    {&hf_ieee80211_tag_measure_request_channel_load_sub_reporting_ref,
+     {"Reference Value", "wlan.measure.req.channel_load.sub.ref",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_rx_stbc,
-     {"HT Rx STBC", "wlan.ht.capabilities.rxstbc",
-      FT_UINT16, BASE_HEX, VALS(ht_rx_stbc_flag), 0x0300,
-      "HT Tx STBC", HFILL }},
 
-    {&hf_ieee80211_ht_delayed_block_ack,
-     {"HT Delayed Block ACK", "wlan.ht.capabilities.delayedblockack",
-      FT_BOOLEAN, 16, TFS(&ht_delayed_block_ack_flag), 0x0400,
+    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_id,
+     {"SubElement ID", "wlan.measure.req.noise_histogram.sub.id",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_noise_histogram_sub_id_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_max_amsdu,
-     {"HT Max A-MSDU length", "wlan.ht.capabilities.amsdu",
-      FT_BOOLEAN, 16, TFS(&ht_max_amsdu_flag), 0x0800,
+    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_reporting_condition,
+     {"Reporting Condition", "wlan.measure.reqnoise_histogram.sub.repcond",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_noise_histogram_sub_reporting_condition_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_dss_cck_40,
-     {"HT DSSS/CCK mode in 40MHz", "wlan.ht.capabilities.dsscck",
-      FT_BOOLEAN, 16, TFS(&ht_dss_cck_40_flag), 0x1000,
-      "HT DSS/CCK mode in 40MHz", HFILL }},
-
-    {&hf_ieee80211_ht_psmp,
-     {"HT PSMP Support", "wlan.ht.capabilities.psmp",
-      FT_BOOLEAN, 16, TFS(&ht_psmp_flag), 0x2000,
+    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_reporting_anpi_ref,
+     {"ANPI Reference Value", "wlan.measure.req.noise_histogram.sub.anpiref",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_40_mhz_intolerant,
-     {"HT Forty MHz Intolerant", "wlan.ht.capabilities.40mhzintolerant",
-      FT_BOOLEAN, 16, TFS(&ht_40_mhz_intolerant_flag), 0x4000,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_ht_l_sig,
-     {"HT L-SIG TXOP Protection support", "wlan.ht.capabilities.lsig",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000,
+    {&hf_ieee80211_tag_measure_request_frame_request_type,
+     {"Frame Request Type", "wlan.measure.req.frame_request_type",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ext_bss_mu_mimo_capable_sta_count,
-     {"MU-MIMO Capable STA Count", "wlan.ext_bss.mu_mimo_capable_sta_count",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_mac_address,
+     {"MAC Address", "wlan.measure.req.mac_address",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ext_bss_ss_underutilization,
-     {"Spatial Stream Underutilization", "wlan.ext_bss.ss_underutilization",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_peer_mac_address,
+     {"Peer MAC Address", "wlan.measure.req.peer_mac_address",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ext_bss_observable_sec_20mhz_utilization,
-     {"Observable Secondary 20MHz Utilization", "wlan.ext_bss.observable_sec_20mhz_utilization",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_measure_request_group_id,
+     {"Group ID", "wlan.measure.req.groupid",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_group_id_flags_ext, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ext_bss_observable_sec_40mhz_utilization,
-     {"Observable Secondary 40MHz Utilization", "wlan.ext_bss.observable_sec_40mhz_utilization",
+    {&hf_ieee80211_tag_measure_request_unknown,
+     {"Unknown Data", "wlan.measure.req.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "(not interpreted)", HFILL }},
+
+    {&hf_ieee80211_tag_measure_report_measurement_token,
+     {"Measurement Token", "wlan.measure.req.token",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ext_bss_observable_sec_80mhz_utilization,
-     {"Observable Secondary 80MHz Utilization", "wlan.ext_bss.observable_sec_80mhz_utilization",
+    {&hf_ieee80211_tag_measure_report_mode,
+     {"Measurement Report Mode", "wlan.measure.req.mode",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wide_bw_new_channel_width,
-     {"New Channel Width", "wlan.wide_bw.new_channel_width",
-      FT_UINT8, BASE_HEX, VALS(vht_operation_info_channel_width), 0x0,
+    {&hf_ieee80211_tag_measure_report_mode_late,
+     {"Measurement Report Mode Field", "wlan.measure.rep.repmode.late",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wide_bw_new_channel_center_freq_segment0,
-     {"New Channel Center Frequency Segment 0", "wlan.wide_bw.new_channel_center_freq_segment0",
-      FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_measure_report_mode_incapable,
+     {"Measurement Reports", "wlan.measure.rep.repmode.incapable",
+      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wide_bw_new_channel_center_freq_segment1,
-     {"New Channel Center Frequency Segment 1", "wlan.wide_bw.new_channel_center_freq_segment1",
-      FT_UINT8, BASE_HEX_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_measure_report_mode_refused,
+     {"Autonomous Measurement Reports", "wlan.measure.rep.repmode.refused",
+      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_operat_notification_mode,
-     {"Operating Mode Notification", "wlan.operat_notification_mode",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
+    {&hf_ieee80211_tag_measure_report_mode_reserved,
+     {"Reserved", "wlan.measure.rep.repmode.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xf8,
       NULL, HFILL }},
 
-    {&hf_ieee80211_operat_mode_field_channel_width,
-     {"Channel Width", "wlan.operat_mode_field.channelwidth",
-      FT_UINT8, BASE_HEX, VALS(operating_mode_field_channel_width), 0x03,
+    {&hf_ieee80211_tag_measure_report_type,
+     {"Measurement Report Type", "wlan.measure.rep.reptype",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_report_type_flags_ext, 0x00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_operat_mode_field_reserved,
-     {"Reserved", "wlan.operat_mode_field.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0x0C,
+    {&hf_ieee80211_tag_measure_report_channel_number,
+     {"Measurement Channel Number", "wlan.measure.rep.channelnumber",
+      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_operat_mode_field_rxnss,
-     {"Rx NSS", "wlan.operat_mode_field.rxnss",
-      FT_UINT8, BASE_HEX, VALS(operat_mode_field_rxnss), 0x70,
+    {&hf_ieee80211_tag_measure_report_start_time,
+     {"Measurement Start Time", "wlan.measure.rep.starttime",
+      FT_UINT64, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_operat_mode_field_rxnsstype,
-     {"Rx NSS Type", "wlan.operat_mode_field.rxnsstype",
-      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 }},
+    {&hf_ieee80211_tag_measure_report_duration,
+     {"Measurement Duration", "wlan.measure.rep.channelnumber",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_ampduparam,
-     {"A-MPDU Parameters", "wlan.ht.ampduparam",
+    {&hf_ieee80211_tag_measure_cca_busy_fraction,
+     {"CCA Busy Fraction", "wlan.measure.rep.ccabusy",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ampduparam_vs,
-     {"A-MPDU Parameters (VS)", "wlan.vs.ht.ampduparam",
+    {&hf_ieee80211_tag_measure_basic_map_field,
+     {"Map Field", "wlan.measure.rep.mapfield",
       FT_UINT8, BASE_HEX, NULL, 0,
-      "Vendor Specific A-MPDU Parameters", HFILL }},
-
-    {&hf_ieee80211_ampduparam_mpdu,
-     {"Maximum Rx A-MPDU Length", "wlan.ht.ampduparam.maxlength",
-      FT_UINT8, BASE_HEX, 0, 0x03,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ampduparam_mpdu_start_spacing,
-     {"MPDU Density", "wlan.ht.ampduparam.mpdudensity",
-      FT_UINT8, BASE_HEX, VALS(ampduparam_mpdu_start_spacing_flags), 0x1c,
+    {&hf_ieee80211_tag_measure_map_field_bss,
+     {"BSS", "wlan.measure.rep.repmode.mapfield.bss",
+      FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_map_field_bss_flag), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ampduparam_reserved,
-     {"Reserved", "wlan.ht.ampduparam.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xE0,
+    {&hf_ieee80211_tag_measure_map_field_odfm,
+     {"Orthogonal Frequency Division Multiplexing (ODFM) Preamble", "wlan.measure.rep.repmode.mapfield.bss",
+      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset,
-     {"Rx Supported Modulation and Coding Scheme Set", "wlan.ht.mcsset",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_measure_map_field_unident_signal,
+     {"Unidentified Signal", "wlan.measure.rep.repmode.mapfield.unidentsig",
+      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_vs,
-     {"Rx Supported Modulation and Coding Scheme Set (VS)", "wlan.vs.ht.mcsset",
-      FT_STRING, BASE_NONE, NULL, 0,
-      "Vendor Specific Rx Supported Modulation and Coding Scheme Set", HFILL }},
-
-    {&hf_ieee80211_mcsset_rx_bitmask,
-     {"Rx Modulation and Coding Scheme (One bit per modulation)", "wlan.ht.mcsset.rxbitmask",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "One bit per modulation", HFILL }},
-
-    {&hf_ieee80211_mcsset_rx_bitmask_0to7,
-     {"Rx Bitmask Bits 0-7", "wlan.ht.mcsset.rxbitmask.0to7",
-      FT_UINT32, BASE_HEX, 0, 0x000000ff,
+    {&hf_ieee80211_tag_measure_map_field_radar,
+     {"Radar", "wlan.measure.rep.repmode.mapfield.radar",
+      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_8to15,
-     {"Rx Bitmask Bits 8-15", "wlan.ht.mcsset.rxbitmask.8to15",
-      FT_UINT32, BASE_HEX, 0, 0x0000ff00,
+    {&hf_ieee80211_tag_measure_map_field_unmeasured,
+     {"Unmeasured", "wlan.measure.rep.repmode.mapfield.unmeasured",
+      FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_16to23,
-     {"Rx Bitmask Bits 16-23", "wlan.ht.mcsset.rxbitmask.16to23",
-      FT_UINT32, BASE_HEX, 0, 0x00ff0000,
+    {&hf_ieee80211_tag_measure_map_field_reserved,
+     {"Reserved", "wlan.measure.rep.repmode.mapfield.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xe0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_24to31,
-     {"Rx Bitmask Bits 24-31", "wlan.ht.mcsset.rxbitmask.24to31",
-      FT_UINT32, BASE_HEX, 0, 0xff000000,
+    {&hf_ieee80211_tag_measure_rpi_histogram_report,
+     {"Receive Power Indicator (RPI) Histogram Report", "wlan.measure.rep.rpi.histogram_report",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_32,
-     {"Rx Bitmask Bit 32", "wlan.ht.mcsset.rxbitmask.32",
-      FT_UINT32, BASE_HEX, 0, 0x000001,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_0,
+     {"RPI 0 Density", "wlan.measure.rep.rpi.rpi0density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 0 Density", HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_33to38,
-     {"Rx Bitmask Bits 33-38", "wlan.ht.mcsset.rxbitmask.33to38",
-      FT_UINT32, BASE_HEX, 0, 0x00007e,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_1,
+     {"RPI 1 Density", "wlan.measure.rep.rpi.rpi1density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 1 Density", HFILL }},
+
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_2,
+     {"RPI 2 Density", "wlan.measure.rep.rpi.rpi2density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 2 Density", HFILL }},
+
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_3,
+     {"RPI 3 Density", "wlan.measure.rep.rpi.rpi3density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 3 Density", HFILL }},
+
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_4,
+     {"RPI 4 Density", "wlan.measure.rep.rpi.rpi4density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 4 Density", HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_39to52,
-     {"Rx Bitmask Bits 39-52", "wlan.ht.mcsset.rxbitmask.39to52",
-      FT_UINT32, BASE_HEX, 0, 0x1fff80,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_5,
+     {"RPI 5 Density", "wlan.measure.rep.rpi.rpi5density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 5 Density", HFILL }},
 
-    {&hf_ieee80211_mcsset_rx_bitmask_53to76,
-     {"Rx Bitmask Bits 53-76", "wlan.ht.mcsset.rxbitmask.53to76",
-      FT_UINT32, BASE_HEX, 0, 0x1fffffe0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_6,
+     {"RPI 6 Density", "wlan.measure.rep.rpi.rpi6density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 6 Density", HFILL }},
 
-    {&hf_ieee80211_mcsset_highest_data_rate,
-     {"Highest Supported Data Rate", "wlan.ht.mcsset.highestdatarate",
-      FT_UINT16, BASE_HEX, 0, 0x03ff,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_rpi_histogram_report_7,
+     {"RPI 7 Density", "wlan.measure.rep.rpi.rpi7density",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "Receive Power Indicator (RPI) 7 Density", HFILL }},
 
-    {&hf_ieee80211_mcsset_tx_mcs_set_defined,
-     {"Tx Supported MCS Set", "wlan.ht.mcsset.txsetdefined",
-      FT_BOOLEAN, 16, TFS(&tfs_defined_not_defined), 0x0001,
+    {&hf_ieee80211_tag_measure_report_operating_class,
+     {"Operating Class", "wlan.measure.rep.operatingclass",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_tx_rx_mcs_set_not_equal,
-     {"Tx and Rx MCS Set", "wlan.ht.mcsset.txrxmcsnotequal",
-      FT_BOOLEAN, 16, TFS(&mcsset_tx_rx_mcs_set_not_equal_flag), 0x0002,
+    {&hf_ieee80211_tag_measure_report_channel_load,
+     {"Channel Load", "wlan.measure.rep.chanload",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_tx_max_spatial_streams,
-     {"Maximum Number of Tx Spatial Streams Supported", "wlan.ht.mcsset.txmaxss",
-      FT_UINT16, BASE_HEX, 0 , 0x000c,
+    {&hf_ieee80211_tag_measure_report_frame_info,
+     {"Reported Frame Information", "wlan.measure.rep.frameinfo",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mcsset_tx_unequal_modulation,
-     {"Unequal Modulation", "wlan.ht.mcsset.txunequalmod",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0010,
+    {&hf_ieee80211_tag_measure_report_frame_info_phy_type,
+     {"Condensed PHY", "wlan.measure.rep.frameinfo.phytype",
+      FT_UINT8, BASE_HEX, NULL, 0x7F,
       NULL, HFILL }},
 
-    {&hf_ieee80211_htex_cap,
-     {"HT Extended Capabilities", "wlan.htex.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "HT Extended Capability information", HFILL }},
+    {&hf_ieee80211_tag_measure_report_frame_info_frame_type,
+     {"Reported Frame Type", "wlan.measure.rep.frameinfo.frametype",
+      FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_report_frame_info_frame_type_flag), 0x80,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_htex_vs_cap,
-     {"HT Extended Capabilities (VS)", "wlan.vs.htex.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Vendor Specific HT Extended Capability information", HFILL }},
+    {&hf_ieee80211_tag_measure_report_rcpi,
+     {"Received Channel Power Indicator (RCPI)", "wlan.measure.rep.rcpi",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "in dBm", HFILL }},
 
-    {&hf_ieee80211_htex_pco,
-     {"Transmitter supports PCO", "wlan.htex.capabilities.pco",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0001,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_report_rsni,
+     {"Received Signal to Noise Indicator (RSNI)", "wlan.measure.rep.rsni",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      "in dB", HFILL }},
 
-    {&hf_ieee80211_htex_transtime,
-     {"Time needed to transition between 20MHz and 40MHz", "wlan.htex.capabilities.transtime",
-      FT_UINT16, BASE_HEX, VALS(htex_transtime_flags), 0x0006,
+    {&hf_ieee80211_tag_measure_report_bssid,
+     {"BSSID Being Reported", "wlan.measure.rep.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_htex_mcs,
-     {"MCS Feedback capability", "wlan.htex.capabilities.mcs",
-      FT_UINT16, BASE_HEX, VALS(htex_mcs_flags), 0x0300,
+    {&hf_ieee80211_tag_measure_report_ant_id,
+     {"Antenna ID", "wlan.measure.rep.antid",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_htex_htc_support,
-     {"High Throughput", "wlan.htex.capabilities.htc",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0400,
+    {&hf_ieee80211_tag_measure_report_anpi,
+     {"ANPI", "wlan.measure.rep.anpi",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_htex_rd_responder,
-     {"Reverse Direction Responder", "wlan.htex.capabilities.rdresponder",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0800,
+    {&hf_ieee80211_tag_measure_report_ipi_density_0,
+     {"IPI Density 0", "wlan.measure.rep.ipi_density0",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf,
-     {"Transmit Beam Forming (TxBF) Capabilities", "wlan.txbf",
-      FT_UINT32, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_measure_report_ipi_density_1,
+     {"IPI Density 1", "wlan.measure.rep.ipi_density1",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_vs,
-     {"Transmit Beam Forming (TxBF) Capabilities (VS)", "wlan.vs.txbf",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      "Vendor Specific Transmit Beam Forming (TxBF) Capabilities", HFILL }},
-
-    {&hf_ieee80211_txbf_cap,
-     {"Transmit Beamforming", "wlan.txbf.txbf",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001,
+    {&hf_ieee80211_tag_measure_report_ipi_density_2,
+     {"IPI Density 2", "wlan.measure.rep.ipi_density2",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_rcv_ssc,
-     {"Receive Staggered Sounding", "wlan.txbf.rxss",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002,
+    {&hf_ieee80211_tag_measure_report_ipi_density_3,
+     {"IPI Density 3", "wlan.measure.rep.ipi_density3",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_tx_ssc,
-     {"Transmit Staggered Sounding", "wlan.txbf.txss",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004,
+    {&hf_ieee80211_tag_measure_report_ipi_density_4,
+     {"IPI Density 4", "wlan.measure.rep.ipi_density4",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_rcv_ndp,
-     {"Receive Null Data packet (NDP)", "wlan.txbf.rxndp",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008,
+    {&hf_ieee80211_tag_measure_report_ipi_density_5,
+     {"IPI Density 5", "wlan.measure.rep.ipi_density5",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_tx_ndp,
-     {"Transmit Null Data packet (NDP)", "wlan.txbf.txndp",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
+    {&hf_ieee80211_tag_measure_report_ipi_density_6,
+     {"IPI Density 6", "wlan.measure.rep.ipi_density6",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_impl_txbf,
-     {"Implicit TxBF capable", "wlan.txbf.impltxbf",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
-      "Implicit Transmit Beamforming (TxBF) capable", HFILL }},
-
-    {&hf_ieee80211_txbf_calib,
-     {"Calibration", "wlan.txbf.calibration",
-      FT_UINT32, BASE_HEX, VALS(txbf_calib_flag), 0x000000c0,
+    {&hf_ieee80211_tag_measure_report_ipi_density_7,
+     {"IPI Density 7", "wlan.measure.rep.ipi_density7",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_expl_csi,
-     {"STA can apply TxBF using CSI explicit feedback", "wlan.txbf.csi",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100,
-      "Station can apply TxBF using CSI explicit feedback", HFILL }},
-
-    {&hf_ieee80211_txbf_expl_uncomp_fm,
-     {"STA can apply TxBF using uncompressed beamforming feedback matrix", "wlan.txbf.fm.uncompressed.tbf",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200,
-      "Station can apply TxBF using uncompressed beamforming feedback matrix", HFILL }},
-
-    {&hf_ieee80211_txbf_expl_comp_fm,
-     {"STA can apply TxBF using compressed beamforming feedback matrix", "wlan.txbf.fm.compressed.tbf",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400,
-      "Station can apply TxBF using compressed beamforming feedback matrix", HFILL }},
-
-    {&hf_ieee80211_txbf_expl_bf_csi,
-     {"Receiver can return explicit CSI feedback", "wlan.txbf.rcsi",
-      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00001800,
+    {&hf_ieee80211_tag_measure_report_ipi_density_8,
+     {"IPI Density 8", "wlan.measure.rep.ipi_density8",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_expl_uncomp_fm_feed,
-     {"Receiver can return explicit uncompressed Beamforming Feedback Matrix", "wlan.txbf.fm.uncompressed.rbf",
-      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00006000,
+    {&hf_ieee80211_tag_measure_report_ipi_density_9,
+     {"IPI Density 9", "wlan.measure.rep.ipi_density9",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_expl_comp_fm_feed,
-     {"STA can compress and use compressed Beamforming Feedback Matrix", "wlan.txbf.fm.compressed.bf",
-      FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00018000,
-      "Station can compress and use compressed Beamforming Feedback Matrix", HFILL }},
-
-    {&hf_ieee80211_txbf_min_group,
-     {"Minimal grouping used for explicit feedback reports", "wlan.txbf.mingroup",
-      FT_UINT32, BASE_HEX, VALS(txbf_min_group_flags), 0x00060000,
+    {&hf_ieee80211_tag_measure_report_ipi_density_10,
+     {"IPI Density 10", "wlan.measure.rep.ipi_density10",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_cap,
-     {"VHT Capabilities Info", "wlan.vht.capabilities",
+    {&hf_ieee80211_tag_measure_report_parent_tsf,
+     {"Parent Timing Synchronization Function (TSF)", "wlan.measure.rep.parenttsf",
       FT_UINT32, BASE_HEX, NULL, 0,
-      "VHT Capabilities information", HFILL }},
-
-    {&hf_ieee80211_vht_max_mpdu_length,
-     {"Maximum MPDU Length", "wlan.vht.capabilities.maxmpdulength",
-      FT_UINT32, BASE_HEX, VALS(vht_max_mpdu_length_flag), 0x00000003,
-      "In Octets unit", HFILL }},
-
-    {&hf_ieee80211_vht_supported_chan_width_set,
-     {"Supported Channel Width Set", "wlan.vht.capabilities.supportedchanwidthset",
-      FT_UINT32, BASE_HEX, VALS(vht_supported_chan_width_set_flag), 0x0000000c,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_rx_ldpc,
-     {"Rx LDPC", "wlan.vht.capabilities.rxldpc",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010,
+    {&hf_ieee80211_tag_measure_report_subelement_length,
+     {"Length", "wlan.measure.req.sub.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_short_gi_for_80,
-     {"Short GI for 80MHz/TVHT_MODE_4C", "wlan.vht.capabilities.short80",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020,
+    {&hf_ieee80211_tag_measure_report_beacon_sub_id,
+     {"SubElement ID", "wlan.measure.req.beacon.sub.id",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_report_beacon_sub_id_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_short_gi_for_160,
-     {"Short GI for 160MHz and 80+80MHz", "wlan.vht.capabilities.short160",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_measure_report_unknown,
+     {"Unknown Data", "wlan.measure.rep.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "(not interpreted)", HFILL }},
 
-    {&hf_ieee80211_vht_tx_stbc,
-     {"Tx STBC", "wlan.vht.capabilities.txstbc",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_quiet_count,
+     {"Count", "wlan.quiet.count",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Set to the number of TBTTs until the beacon interval during which the next quiet interval shall start", HFILL }},
 
-    {&hf_ieee80211_vht_rx_stbc,
-     {"Rx STBC", "wlan.vht.capabilities.rxstbc",
-      FT_UINT32, BASE_HEX, VALS(vht_rx_stbc_flag), 0x00000700,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_quiet_period,
+     {"Period", "wlan.quiet.period",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Set to the number of beacon intervals between the start of regularly scheduled quiet intervals", HFILL }},
 
-    {&hf_ieee80211_vht_su_beamformer_cap,
-     {"SU Beamformer Capable", "wlan.vht.capabilities.subeamformer",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000800,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_quiet_duration,
+     {"Duration", "wlan.quiet.duration",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Set to the duration of the quiet interval", HFILL }},
 
-    {&hf_ieee80211_vht_su_beamformee_cap,
-     {"SU Beamformee Capable", "wlan.vht.capabilities.subeamformee",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00001000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_quiet_offset,
+     {"Offset", "wlan.quiet.offset",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Set to the offset of the start of the quiet interval from the TBTT", HFILL }},
+
+    {&hf_ieee80211_tag_dfs_owner,
+     {"Owner", "wlan.dfs.owner",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Set to the individual IEEE MAC address of the STA that is the currently known DFS Owner in the IBSS", HFILL  }},
 
-    {&hf_ieee80211_vht_beamformer_antennas,
-     {"Beamformee STS Capability", "wlan.vht.capabilities.beamformee_sts_cap",
-      FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x0000e000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_dfs_recovery_interval,
+     {"Recovery Interval", "wlan.dfs.recovery_interval",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "Indicates the time interval that shall be used for DFS owner recovery", HFILL  }},
 
-    {&hf_ieee80211_vht_sounding_dimensions,
-     {"Number of Sounding Dimensions", "wlan.vht.capabilities.soundingdimensions",
-      FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x00070000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_dfs_channel_map,
+     {"Channel Map", "wlan.dfs.channel_map",
+      FT_NONE, BASE_NONE, NULL, 0,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_mu_beamformer_cap,
-     {"MU Beamformer Capable", "wlan.vht.capabilities.mubeamformer",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00080000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_dfs_channel_number,
+     {"Channel Number", "wlan.dfs.channel_number",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_mu_beamformee_cap,
-     {"MU Beamformee Capable", "wlan.vht.capabilities.mubeamformee",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00100000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_dfs_map,
+     {"Map", "wlan.dfs.map",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_txop_ps,
-     {"TXOP PS", "wlan.vht.capabilities.vhttxopps",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00200000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_erp_info,
+     {"ERP Information", "wlan.erp_info",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_var_htc_field,
-     {"+HTC-VHT Capable", "wlan.vht.capabilities.vhthtc",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00400000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_erp_info_erp_present,
+     {"Non ERP Present", "wlan.erp_info.erp_present",
+      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x01,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_max_ampdu,
-     {"Max A-MPDU Length Exponent", "wlan.vht.capabilities.maxampdu",
-      FT_UINT32, BASE_HEX, VALS(vht_max_ampdu_flag), 0x03800000,
-      "In Octets unit", HFILL }},
+    {&hf_ieee80211_tag_erp_info_use_protection,
+     {"Use Protection", "wlan.erp_info.use_protection",
+      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x02,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_link_adaptation_cap,
-     {"VHT Link Adaptation", "wlan.vht.capabilities.linkadapt",
-      FT_UINT32, BASE_HEX, VALS(vht_link_adapt_flag), 0x0c000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_erp_info_barker_preamble_mode,
+     {"Barker Preamble Mode", "wlan.erp_info.barker_preamble_mode",
+      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x04,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_rx_pattern,
-     {"Rx Antenna Pattern Consistency", "wlan.vht.capabilities.rxpatconsist",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x10000000,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_erp_info_reserved,
+     {"Reserved", "wlan.erp_info.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xF8,
+      NULL, HFILL  }},
 
-    {&hf_ieee80211_vht_tx_pattern,
-     {"Tx Antenna Pattern Consistency", "wlan.vht.capabilities.txpatconsist",
-      FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x20000000,
+    /* IEEE Std 802.11 2016 */
+    /* Table 9-135-Extended Capabilities field */
+    {&hf_ieee80211_tag_extended_capabilities,
+     {"Extended Capabilities", "wlan.extcap",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_ext_nss_bw_support,
-     {"Extended NSS BW Support", "wlan.vht.capabilities.ext_nss_bw_support",
-      FT_UINT32, BASE_HEX, NULL, 0xc0000000,
-      NULL, HFILL }},
+    /* Extended Capability octet 1 */
+    {&hf_ieee80211_tag_extended_capabilities_b0,
+     {"20/40 BSS Coexistence Management Support", "wlan.extcap.b0",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+      "HT Information Exchange Support", HFILL }},
 
-    {&hf_ieee80211_vht_mcsset,
-     {"VHT Supported MCS Set", "wlan.vht.mcsset",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b1,
+     {"Reserved (was On-demand beacon)", "wlan.extcap.b1",
+      FT_UINT8, BASE_HEX, NULL, 0x02,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_mcs_map,
-     {"Rx MCS Map", "wlan.vht.mcsset.rxmcsmap",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b2,
+     {"Extended Channel Switching", "wlan.extcap.b2",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_1_ss,
-     {"Rx 1 SS", "wlan.vht.mcsset.rxmcsmap.ss1",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b3,
+     {"Reserved (was WAVE indication)", "wlan.extcap.b3",
+      FT_UINT8, BASE_HEX, NULL, 0x08,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_2_ss,
-     {"Rx 2 SS", "wlan.vht.mcsset.rxmcsmap.ss2",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
+    {&hf_ieee80211_tag_extended_capabilities_b4,
+     {"PSMP Capability", "wlan.extcap.b4",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_3_ss,
-     {"Rx 3 SS", "wlan.vht.mcsset.rxmcsmap.ss3",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b5,
+     {"Reserved", "wlan.extcap.b5",
+      FT_UINT8, BASE_HEX, NULL, 0x20,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_4_ss,
-     {"Rx 4 SS", "wlan.vht.mcsset.rxmcsmap.ss4",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
+    {&hf_ieee80211_tag_extended_capabilities_b6,
+     {"S-PSMP Support", "wlan.extcap.b6",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_5_ss,
-     {"Rx 5 SS", "wlan.vht.mcsset.rxmcsmap.ss5",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
+    {&hf_ieee80211_tag_extended_capabilities_b7,
+     {"Event", "wlan.extcap.b7",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_6_ss,
-     {"Rx 6 SS", "wlan.vht.mcsset.rxmcsmap.ss6",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_7_ss,
-     {"Rx 7 SS", "wlan.vht.mcsset.rxmcsmap.ss7",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
+    /* Extended Capability octet 2 */
+    {&hf_ieee80211_tag_extended_capabilities_b8,
+     {"Diagnostics", "wlan.extcap.b8",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_8_ss,
-     {"Rx 8 SS", "wlan.vht.mcsset.rxmcsmap.ss8",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
+    {&hf_ieee80211_tag_extended_capabilities_b9,
+     {"Multicast Diagnostics", "wlan.extcap.b9",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_rx_highest_long_gi,
-     {"Rx Highest Long GI Data Rate (in Mb/s, 0 = subfield not in use)", "wlan.vht.mcsset.rxhighestlonggirate",
-      FT_UINT16, BASE_HEX, NULL, 0x1fff,
+    {&hf_ieee80211_tag_extended_capabilities_b10,
+     {"Location Tracking", "wlan.extcap.b10",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_mcs_map,
-     {"Tx MCS Map", "wlan.vht.mcsset.txmcsmap",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b11,
+     {"FMS", "wlan.extcap.b11",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_1_ss,
-     {"Tx 1 SS", "wlan.vht.mcsset.txmcsmap.ss1",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
+    {&hf_ieee80211_tag_extended_capabilities_b12,
+     {"Proxy ARP Service", "wlan.extcap.b12",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_2_ss,
-     {"Tx 2 SS", "wlan.vht.mcsset.txmcsmap.ss2",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
+    {&hf_ieee80211_tag_extended_capabilities_b13,
+     {"Collocated Interference Reporting", "wlan.extcap.b13",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_3_ss,
-     {"Tx 3 SS", "wlan.vht.mcsset.txmcsmap.ss3",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
+    {&hf_ieee80211_tag_extended_capabilities_b14,
+     {"Civic Location", "wlan.extcap.b14",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_4_ss,
-     {"Tx 4 SS", "wlan.vht.mcsset.txmcsmap.ss4",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
+    {&hf_ieee80211_tag_extended_capabilities_b15,
+     {"Geospatial Location", "wlan.extcap.b15",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_5_ss,
-     {"Tx 5 SS", "wlan.vht.mcsset.txmcsmap.ss5",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_6_ss,
-     {"Tx 6 SS", "wlan.vht.mcsset.txmcsmap.ss6",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
+    /* Extended Capability octet 3 */
+    {&hf_ieee80211_tag_extended_capabilities_b16,
+     {"TFS", "wlan.extcap.b16",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_7_ss,
-     {"Tx 7 SS", "wlan.vht.mcsset.txmcsmap.ss7",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
+    {&hf_ieee80211_tag_extended_capabilities_b17,
+     {"WNM Sleep Mode", "wlan.extcap.b17",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_8_ss,
-     {"Tx 8 SS", "wlan.vht.mcsset.txmcsmap.ss8",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
+    {&hf_ieee80211_tag_extended_capabilities_b18,
+     {"TIM Broadcast", "wlan.extcap.b18",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_mcsset_tx_highest_long_gi,
-     {"Tx Highest Long GI Data Rate  (in Mb/s, 0 = subfield not in use)", "wlan.vht.mcsset.txhighestlonggirate",
-      FT_UINT16, BASE_HEX, NULL, 0x1fff,
+    {&hf_ieee80211_tag_extended_capabilities_b19,
+     {"BSS Transition", "wlan.extcap.b19",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op,
-     {"VHT Operation Info", "wlan.vht.op",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b20,
+     {"QoS Traffic Capability", "wlan.extcap.b20",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_channel_width,
-     {"Channel Width", "wlan.vht.op.channelwidth",
-      FT_UINT8, BASE_HEX, VALS(vht_op_channel_width_flag), 0,
+    {&hf_ieee80211_tag_extended_capabilities_b21,
+     {"AC Station Count", "wlan.extcap.b21",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_channel_center0,
-     {"Channel Center Segment 0", "wlan.vht.op.channelcenter0",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b22,
+     {"Multiple BSSID", "wlan.extcap.b22",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_channel_center1,
-     {"Channel Center Segment 1", "wlan.vht.op.channelcenter1",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b23,
+     {"Timing Measurement", "wlan.extcap.b23",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_basic_mcs_map,
-     {"Basic MCS Map", "wlan.vht.op.basicmcsmap",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_1_ss,
-     {"Basic 1 SS", "wlan.vht.op.basicmcsmap.ss1",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003,
+    /* Extended Capability octet 4 */
+    {&hf_ieee80211_tag_extended_capabilities_b24,
+     {"Channel Usage", "wlan.extcap.b24",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_2_ss,
-     {"Basic 2 SS", "wlan.vht.op.basicmcsmap.ss2",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c,
+    {&hf_ieee80211_tag_extended_capabilities_b25,
+     {"SSID List", "wlan.extcap.b25",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_3_ss,
-     {"Basic 3 SS", "wlan.vht.op.basicmcsmap.ss3",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030,
+    {&hf_ieee80211_tag_extended_capabilities_b26,
+     {"DMS", "wlan.extcap.b26",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_4_ss,
-     {"Basic 4 SS", "wlan.vht.op.basicmcsmap.ss4",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0,
+    {&hf_ieee80211_tag_extended_capabilities_b27,
+     {"UTC TSF Offset", "wlan.extcap.b27",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_5_ss,
-     {"Basic 5 SS", "wlan.vht.op.basicmcsmap.ss5",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300,
+    {&hf_ieee80211_tag_extended_capabilities_b28,
+     {"TPU Buffer STA Support", "wlan.extcap.b28",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_6_ss,
-     {"Basic 6 SS", "wlan.vht.op.basicmcsmap.ss6",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00,
+    {&hf_ieee80211_tag_extended_capabilities_b29,
+     {"TDLS Peer PSM Support", "wlan.extcap.b29",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_7_ss,
-     {"Basic 7 SS", "wlan.vht.op.basicmcsmap.ss7",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000,
+    {&hf_ieee80211_tag_extended_capabilities_b30,
+     {"TDLS channel switching", "wlan.extcap.b30",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_op_max_basic_mcs_for_8_ss,
-     {"Basic 8 SS", "wlan.vht.op.basicmcsmap.ss8",
-      FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000,
+    {&hf_ieee80211_tag_extended_capabilities_b31,
+     {"Interworking", "wlan.extcap.b31",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_info,
-     {"Tx Pwr Info", "wlan.vht.tpe.pwr_info",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_info_count,
-     {"Max Tx Pwr Count", "wlan.vht.tpe.pwr_info.count",
-      FT_UINT8, BASE_DEC, NULL , 0x07,
+    /* Extended Capability octet 5 */
+    {&hf_ieee80211_tag_extended_capabilities_b32,
+     {"QoS Map", "wlan.extcap.b32",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_info_unit,
-     {"Max Tx Pwr Unit Interpretation", "wlan.vht.tpe.pwr_info.unit",
-      FT_UINT8, BASE_DEC, VALS(vht_tpe_pwr_units) , 0x38,
+    {&hf_ieee80211_tag_extended_capabilities_b33,
+     {"EBR", "wlan.extcap.b33",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_info_reserved,
-     {"Reserved", "wlan.vht.tpe.pwr_info.reserved",
-      FT_UINT8, BASE_DEC, NULL , 0xC0,
+    {&hf_ieee80211_tag_extended_capabilities_b34,
+     {"SSPN Interface", "wlan.extcap.b34",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_constr_20,
-     {"Local Max Tx Pwr Constraint 20MHz", "wlan.vht.tpe.pwr_constr_20",
-      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b35,
+     {"Reserved", "wlan.extcap.b35",
+      FT_UINT8, BASE_HEX, NULL, 0x08,
+      "Must be zero", HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_constr_40,
-     {"Local Max Tx Pwr Constraint 40MHz", "wlan.vht.tpe.pwr_constr_40",
-      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
+    {&hf_ieee80211_tag_extended_capabilities_b36,
+     {"MSGCF Capability", "wlan.extcap.b36",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_constr_80,
-     {"Local Max Tx Pwr Constraint 80MHz", "wlan.vht.tpe.pwr_constr_80",
-      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
+    {&hf_ieee80211_tag_extended_capabilities_b37,
+     {"TDLS Support", "wlan.extcap.b37",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vht_tpe_pwr_constr_160,
-     {"Local Max Tx Pwr Constraint 160MHz/80+80 MHz", "wlan.vht.tpe.pwr_constr_160",
-      FT_INT8, BASE_CUSTOM, CF_FUNC(vht_tpe_custom), 0,
+    {&hf_ieee80211_tag_extended_capabilities_b38,
+     {"TDLS Prohibited", "wlan.extcap.b38",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_csi_num_bf_ant,
-     {"Max antennae STA can support when CSI feedback required", "wlan.txbf.csinumant",
-      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00180000,
-      "Max antennae station can support when CSI feedback required", HFILL }},
-
-    {&hf_ieee80211_txbf_uncomp_sm_bf_ant,
-     {"Max antennae STA can support when uncompressed Beamforming feedback required", "wlan.txbf.fm.uncompressed.maxant",
-      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00600000,
-      "Max antennae station can support when uncompressed Beamforming feedback required", HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b39,
+     {"TDLS Channel Switching Prohibited", "wlan.extcap.b39",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_comp_sm_bf_ant,
-     {"Max antennae STA can support when compressed Beamforming feedback required", "wlan.txbf.fm.compressed.maxant",
-      FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x01800000,
-      "Max antennae station can support when compressed Beamforming feedback required", HFILL }},
+    /* Extended Capability octet 6 */
+    {&hf_ieee80211_tag_extended_capabilities_b40,
+     {"Reject Unadmitted Frame", "wlan.extcap.b40",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_csi_max_rows_bf,
-     {"Maximum number of rows of CSI explicit feedback", "wlan.txbf.csi.maxrows",
-      FT_UINT32, BASE_HEX, VALS(txbf_csi_max_rows_bf_flags), 0x06000000,
+    {&hf_ieee80211_tag_extended_capabilities_serv_int_granularity,
+     {"Service Interval Granularity",
+      "wlan.extcap.serv_int_granularity",
+      FT_UINT8, BASE_DEC, VALS(service_interval_granularity_vals), 0x0e,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_chan_est,
-     {"Maximum number of space time streams for which channel dimensions can be simultaneously estimated", "wlan.txbf.channelest",
-      FT_UINT32, BASE_HEX, VALS(txbf_chan_est_flags), 0x18000000,
+    {&hf_ieee80211_tag_extended_capabilities_b44,
+     {"Identifier Location", "wlan.extcap.b44",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_txbf_resrv,
-     {"Reserved", "wlan.txbf.reserved",
-      FT_UINT32, BASE_HEX, NULL, 0xe0000000,
+    {&hf_ieee80211_tag_extended_capabilities_b45,
+     {"U-APSD Coexistence", "wlan.extcap.b45",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_cc,
-     {"HT Control Channel", "wlan.hta.control_channel",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b46,
+     {"WNM Notification", "wlan.extcap.b46",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_cap1,
-     {"HT Additional Capabilities", "wlan.hta.capabilities",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "HT Additional Capability information", HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b47,
+     {"QAB Capability", "wlan.extcap.b47",
+      FT_UINT8, BASE_HEX, NULL, 0x80,
+      "AP supports QAB", HFILL }},
 
-    {&hf_ieee80211_hta_cap2,
-     {"HT Additional Capabilities", "wlan.hta.capabilities",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "HT Additional Capability information", HFILL }},
+    /* Extended Capability octet 7 */
+    {&hf_ieee80211_tag_extended_capabilities_b48,
+     {"UTF-8 SSID", "wlan.extcap.b48",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+      "The SSID in this BSS is interpreted using UTF-8 encoding", HFILL }},
 
-    {&hf_ieee80211_hta_ext_chan_offset,
-     {"Extension Channel Offset", "wlan.hta.capabilities.ext_chan_offset",
-      FT_UINT16, BASE_HEX, VALS(hta_ext_chan_offset_flag), 0x0003,
+    {&hf_ieee80211_tag_extended_capabilities_b49,
+     {"QMFActivated", "wlan.extcap.b49",
+      FT_BOOLEAN, 8, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_rec_tx_width,
-     {"Recommended Tx Channel Width", "wlan.hta.capabilities.rec_tx_width",
-      FT_BOOLEAN, 16, TFS(&hta_rec_tx_width_flag), 0x0004,
-      "Recommended Transmit Channel Width", HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b50,
+     {"QMFReconfigurationActivated", "wlan.extcap.b50",
+      FT_BOOLEAN, 8, NULL, 0x04,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_hta_rifs_mode,
-     {"Reduced Interframe Spacing (RIFS) Mode", "wlan.hta.capabilities.rifs_mode",
-      FT_BOOLEAN, 16, TFS(&hta_rifs_mode_flag), 0x0008,
+    {&hf_ieee80211_tag_extended_capabilities_b51,
+     {"Robust AV Streaming", "wlan.extcap.b51",
+      FT_BOOLEAN, 8, NULL, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_controlled_access,
-     {"Controlled Access Only", "wlan.hta.capabilities.controlled_access",
-      FT_BOOLEAN, 16, TFS(&hta_controlled_access_flag), 0x0010,
+    {&hf_ieee80211_tag_extended_capabilities_b52,
+     {"Advanced GCR", "wlan.extcap.b52",
+      FT_BOOLEAN, 8, NULL, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_service_interval,
-     {"Service Interval Granularity", "wlan.hta.capabilities.service_interval",
-      FT_UINT16, BASE_HEX, VALS(hta_service_interval_flag), 0x00E0,
+    {&hf_ieee80211_tag_extended_capabilities_b53,
+     {"Mesh GCR", "wlan.extcap.b53",
+      FT_BOOLEAN, 8, NULL, 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_operating_mode,
-     {"Operating Mode", "wlan.hta.capabilities.operating_mode",
-      FT_UINT16, BASE_HEX, VALS(hta_operating_mode_flag), 0x0003,
+    {&hf_ieee80211_tag_extended_capabilities_b54,
+     {"SCS", "wlan.extcap.b54",
+      FT_BOOLEAN, 8, NULL, 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_non_gf_devices,
-     {"Non Greenfield (GF) devices Present", "wlan.hta.capabilities.non_gf_devices",
-      FT_BOOLEAN, 16, TFS(&hta_non_gf_devices_flag), 0x0004,
-      "on Greenfield (GF) devices Present", HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b55,
+     {"QLoad Report", "wlan.extcap.b55",
+      FT_BOOLEAN, 8, NULL, 0x80,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_hta_basic_stbc_mcs,
-     {"Basic STB Modulation and Coding Scheme (MCS)", "wlan.hta.capabilities.basic_stbc_mcs",
-      FT_UINT16, BASE_HEX, NULL , 0x007f,
+    /* Extended Capability octet 8 */
+    {&hf_ieee80211_tag_extended_capabilities_b56,
+     {"Alternate EDCA", "wlan.extcap.b56",
+      FT_BOOLEAN, 8, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_dual_stbc_protection,
-     {"Dual Clear To Send (CTS) Protection", "wlan.hta.capabilities.dual_stbc_protection",
-      FT_BOOLEAN, 16, TFS(&hta_dual_stbc_protection_flag), 0x0080,
+    {&hf_ieee80211_tag_extended_capabilities_b57,
+     {"Unprotected TXOP Negotiation", "wlan.extcap.b57",
+      FT_BOOLEAN, 8, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_secondary_beacon,
-     {"Secondary Beacon", "wlan.hta.capabilities.secondary_beacon",
-      FT_BOOLEAN, 16, TFS(&hta_secondary_beacon_flag), 0x0100,
+    {&hf_ieee80211_tag_extended_capabilities_b58,
+     {"Protected TXOP Negotiation", "wlan.extcap.b58",
+      FT_BOOLEAN, 8, NULL, 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_lsig_txop_protection,
-     {"L-SIG TXOP Protection Support", "wlan.hta.capabilities.lsig_txop_protection",
-      FT_BOOLEAN, 16, TFS(&hta_lsig_txop_protection_flag), 0x0200,
+    {&hf_ieee80211_tag_extended_capabilities_b59,
+     {"Reserved", "wlan.extcap.b59",
+      FT_UINT8, BASE_HEX, NULL, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_pco_active,
-     {"Phased Coexistence Operation (PCO) Active", "wlan.hta.capabilities.pco_active",
-      FT_BOOLEAN, 16, TFS(&hta_pco_active_flag), 0x0400,
+    {&hf_ieee80211_tag_extended_capabilities_b60,
+     {"Protected QLoad Report", "wlan.extcap.b61",
+      FT_BOOLEAN, 8, NULL, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_hta_pco_phase,
-     {"Phased Coexistence Operation (PCO) Phase", "wlan.hta.capabilities.pco_phase",
-      FT_BOOLEAN, 16, TFS(&hta_pco_phase_flag), 0x0800,
+    {&hf_ieee80211_tag_extended_capabilities_b61,
+     {"TDLS Wider Bandwidth", "wlan.extcap.b61",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel,
-     {"Antenna Selection (ASEL) Capabilities", "wlan.asel",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b62,
+     {"Operating Mode Notification", "wlan.extcap.b62",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_vs,
-     {"Antenna Selection (ASEL) Capabilities (VS)", "wlan.vs.asel",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Vendor Specific Antenna Selection (ASEL) Capabilities", HFILL }},
+    {&hf_ieee80211_tag_extended_capabilities_b63,
+     {"Max Number Of MSDUs In A-MSDU", "wlan.extcap.b63",
+      FT_UINT8, BASE_DEC, NULL, 0x80,
+      "Part 1 (bit63)", HFILL }},
 
-    {&hf_ieee80211_antsel_b0,
-     {"Antenna Selection Capable", "wlan.asel.capable",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+    /* Extended Capability octets 8 & 9 */
+    {&hf_ieee80211_tag_extended_capabilities_2,
+     {"Extended Capabilities", "wlan.extcap",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b1,
-     {"Explicit CSI Feedback Based Tx ASEL", "wlan.asel.txcsi",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+    {&hf_ieee80211_tag_extended_capabilities_b56_2,
+     {"Alternate EDCA", "wlan.extcap.b56",
+      FT_BOOLEAN, 16, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b2,
-     {"Antenna Indices Feedback Based Tx ASEL", "wlan.asel.txif",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+    {&hf_ieee80211_tag_extended_capabilities_b57_2,
+     {"Unprotected TXOP Negotiation", "wlan.extcap.b57",
+      FT_BOOLEAN, 16, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b3,
-     {"Explicit CSI Feedback", "wlan.asel.csi",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
+    {&hf_ieee80211_tag_extended_capabilities_b58_2,
+     {"Protected TXOP Negotiation", "wlan.extcap.b58",
+      FT_BOOLEAN, 16, NULL, 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b4,
-     {"Antenna Indices Feedback", "wlan.asel.if",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
+    {&hf_ieee80211_tag_extended_capabilities_b59_2,
+     {"Reserved", "wlan.extcap.b59",
+      FT_UINT16, BASE_HEX, NULL, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b5,
-     {"Rx ASEL", "wlan.asel.rx",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
+    {&hf_ieee80211_tag_extended_capabilities_b60_2,
+     {"Protected QLoad Report", "wlan.extcap.b61",
+      FT_BOOLEAN, 16, NULL, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b6,
-     {"Tx Sounding PPDUs", "wlan.asel.sppdu",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+    {&hf_ieee80211_tag_extended_capabilities_b61_2,
+     {"TDLS Wider Bandwidth", "wlan.extcap.b61",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_antsel_b7,
-     {"Reserved", "wlan.asel.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0x80,
+    {&hf_ieee80211_tag_extended_capabilities_b62_2,
+     {"Operating Mode Notification", "wlan.extcap.b62",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_delimiter1,
-     {"HT Information Subset (1 of 3)", "wlan.ht.info.delim1",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_max_num_msdus,
+     {"Max Number Of MSDUs In A-MSDU", "wlan.extcap.b63",
+      FT_UINT16, BASE_DEC, VALS(vht_max_mpdu_in_amsdu), 0x0180,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_primary_channel,
-     {"Primary Channel", "wlan.ht.info.primarychannel",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b65_2,
+     {"Channel Schedule Management", "wlan.extcap.b65",
+      FT_BOOLEAN, 16, NULL, 0x0200,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_secondary_channel_offset,
-     {"Secondary channel offset", "wlan.ht.info.secchanoffset",
-      FT_UINT8, BASE_HEX, VALS(ht_info_secondary_channel_offset_flags), 0x03,
+    {&hf_ieee80211_tag_extended_capabilities_b66_2,
+     {"Geodatabase Inband Enabling Signal", "wlan.extcap.b66",
+      FT_BOOLEAN, 16, NULL, 0x0400,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_channel_width,
-     {"Supported channel width", "wlan.ht.info.chanwidth",
-      FT_BOOLEAN, 8, TFS(&ht_info_channel_width_flag), 0x04,
+    {&hf_ieee80211_tag_extended_capabilities_b67_2,
+     {"Network Channel Control", "wlan.extcap.b67",
+      FT_BOOLEAN, 16, NULL, 0x0800,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_rifs_mode,
-     {"Reduced Interframe Spacing (RIFS)", "wlan.ht.info.rifs",
-      FT_BOOLEAN, 8, TFS(&ht_info_rifs_mode_flag), 0x08,
+    {&hf_ieee80211_tag_extended_capabilities_b68_2,
+     {"White Space Map", "wlan.extcap.b68",
+      FT_BOOLEAN, 16, NULL, 0x1000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_psmp_stas_only,
-     {"Power Save Multi-Poll (PSMP) stations only", "wlan.ht.info.psmponly",
-      FT_BOOLEAN, 8, TFS(&ht_info_psmp_stas_only_flag), 0x10,
+    {&hf_ieee80211_tag_extended_capabilities_b69_2,
+     {"Channel Availability Query", "wlan.extcap.b69",
+      FT_BOOLEAN, 16, NULL, 0x2000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_service_interval_granularity,
-     {"Shortest service interval", "wlan.ht.info",
-      FT_UINT8, BASE_HEX, VALS(ht_info_service_interval_granularity_flags), 0xe0,
+    {&hf_ieee80211_tag_extended_capabilities_b70_2,
+     {"Fine Timing Measurement Responder", "wlan.extcap.b70",
+      FT_BOOLEAN, 16, NULL, 0x4000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_delimiter2,
-     {"HT Information Subset (2 of 3)", "wlan.ht.info.delim2",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b71_2,
+     {"Fine Timing Measurement Initiator", "wlan.extcap.b71",
+      FT_BOOLEAN, 16, NULL, 0x8000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_operating_mode,
-     {"Operating mode of BSS", "wlan.ht.info.operatingmode",
-      FT_UINT16, BASE_HEX, VALS(ht_info_operating_mode_flags), 0x0003,
+    /* Extended Capability Octet 10 */
+    {&hf_ieee80211_tag_extended_capabilities_b72,
+     {"Reserved", "wlan.extcap.b72",
+      FT_UINT8, BASE_HEX, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_non_greenfield_sta_present,
-     {"Non-greenfield STAs present", "wlan.ht.info.greenfield",
-      FT_BOOLEAN, 16, TFS(&ht_info_non_greenfield_sta_present_flag), 0x0004,
+    {&hf_ieee80211_tag_extended_capabilities_b73,
+     {"Extended Spectrum Management Capable", "wlan.extcap.b73",
+      FT_BOOLEAN, 8, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_transmit_burst_limit,
-     {"Transmit burst limit", "wlan.ht.info.burstlim",
-      FT_BOOLEAN, 16, TFS(&ht_info_transmit_burst_limit_flag), 0x0008,
+    {&hf_ieee80211_tag_extended_capabilities_b74,
+     {"Future Channel Capable", "wlan.extcap.b74",
+      FT_BOOLEAN, 8, NULL, 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_obss_non_ht_stas_present,
-     {"OBSS non-HT STAs present", "wlan.ht.info.obssnonht",
-      FT_BOOLEAN, 16, TFS(&ht_info_obss_non_ht_stas_present_flag), 0x0010,
+    {&hf_ieee80211_tag_extended_capabilities_b75,
+     {"Reserved", "wlan.extcap.b75",
+      FT_UINT8, BASE_HEX, NULL, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_reserved_1,
-     {"Reserved", "wlan.ht.info.reserved1",
-      FT_UINT16, BASE_HEX, NULL, 0xffe0,
+    {&hf_ieee80211_tag_extended_capabilities_b76,
+     {"Reserved", "wlan.extcap.b76",
+      FT_UINT8, BASE_HEX, NULL, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_delimiter3,
-     {"HT Information Subset (3 of 3)", "wlan.ht.info.delim3",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_extended_capabilities_b77,
+     {"TWT Requester Support", "wlan.extcap.b77",
+      FT_BOOLEAN, 16, NULL, 0x20,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_reserved_2,
-     {"Reserved", "wlan.ht.info.reserved2",
-      FT_UINT16, BASE_HEX, NULL, 0x003f,
+    {&hf_ieee80211_tag_extended_capabilities_b78,
+     {"TWT Responder Support", "wlan.extcap.b78",
+      FT_BOOLEAN, 16, NULL, 0x40,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_dual_beacon,
-     {"Dual beacon", "wlan.ht.info.dualbeacon",
-      FT_BOOLEAN, 16, TFS(&ht_info_dual_beacon_flag), 0x0040,
+    {&hf_ieee80211_tag_extended_capabilities_b79,
+     {"OBSS Narrow Bandwidth RU in UL OFDMA Tolerance Support", "wlan.extcap.b79",
+      FT_BOOLEAN, 16, NULL, 0x80,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_dual_cts_protection,
-     {"Dual Clear To Send (CTS) protection", "wlan.ht.info.dualcts",
-      FT_BOOLEAN, 16, TFS(&ht_info_dual_cts_protection_flag), 0x0080,
-      NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_secondary_beacon,
-     {"Beacon ID", "wlan.ht.info.secondarybeacon",
-      FT_BOOLEAN, 16, TFS(&ht_info_secondary_beacon_flag), 0x0100,
+    {&hf_ieee80211_tag_cisco_ccx1_unknown,
+     {"Unknown", "wlan.cisco.ccx1.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_lsig_txop_protection_full_support,
-     {"L-SIG TXOP Protection Full Support", "wlan.ht.info.lsigprotsupport",
-      FT_BOOLEAN, 16, TFS(&ht_info_lsig_txop_protection_full_support_flag), 0x0200,
+    {&hf_ieee80211_tag_cisco_ccx1_name,
+     {"Name", "wlan.cisco.ccx1.name",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_pco_active,
-     {"Phased Coexistence Operation (PCO)", "wlan.ht.info.pco.active",
-      FT_BOOLEAN, 16, TFS(&tfs_active_inactive), 0x0400,
+    {&hf_ieee80211_tag_cisco_ccx1_clients,
+     {"Clients", "wlan.cisco.ccx1.clients",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_pco_phase,
-     {"Phased Coexistence Operation (PCO) Phase", "wlan.ht.info.pco.phase",
-      FT_BOOLEAN, 16, TFS(&ht_info_pco_phase_flag), 0x0800,
+    {&hf_ieee80211_tag_cisco_ccx1_unknown2,
+     {"Unknown2", "wlan.cisco.ccx1.unknown2",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ht_info_reserved_3,
-     {"Reserved", "wlan.ht.info.reserved3",
-      FT_UINT16, BASE_HEX, NULL, 0xf000,
+    {&hf_ieee80211_tag_neighbor_report_bssid,
+     {"BSSID", "wlan.nreport.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ap_channel_report_operating_class,
-     {"Operating Class", "wlan.ap_channel_report.operating_class",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info,
+     {"BSSID Information", "wlan.nreport.bssid.info",
+      FT_UINT32, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ap_channel_report_channel_list,
-     {"Channel List", "wlan.ap_channel_report.channel_list",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_reachability,
+     {"AP Reachability", "wlan.nreport.bssid.info.reachability",
+      FT_UINT32, BASE_HEX, VALS(ieee80211_neighbor_report_bssid_info_reachability_vals), 0x00000003,
+      "Indicates whether the AP identified by this BSSID is reachable by the STA that requested the neighbor report", HFILL }},
 
-    {&hf_ieee80211_tag_secondary_channel_offset,
-     {"Secondary Channel Offset", "wlan.secchanoffset",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_secondary_channel_offset_flags), 0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_security,
+     {"Security", "wlan.nreport.bssid.info.security",
+      FT_BOOLEAN, 32, NULL, 0x00000004,
+      "Indicates that the AP identified by this BSSID supports the same security provisioning as used by the STA in its current association", HFILL }},
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_key_scope,
+     {"Key Scope", "wlan.nreport.bssid.info.keyscope",
+      FT_BOOLEAN, 32, NULL, 0x00000008,
+      "indicates the AP indicated by this BSSID has the same authenticator as the AP sending the report", HFILL }},
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability,
+     {"Capability", "wlan.nreport.bssid.info.capability",
+      FT_UINT32, BASE_HEX, NULL, 0x000003F0,
+      "Contains selected capability information for the AP indicated by this BSSID", HFILL }},
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_spec_mng,
+     {"Spectrum Management", "wlan.nreport.bssid.info.capability.specmngt",
+      FT_BOOLEAN, 32, NULL, 0x00000010,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_bss_ap_avg_access_delay,
-     {"AP Average Access Delay", "wlan.bss_ap_avg_access_delay",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_qos,
+     {"QoS", "wlan.nreport.bssid.info.capability.qos",
+      FT_BOOLEAN, 32, NULL, 0x00000020,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_antenna_id,
-     {"Antenna ID", "wlan.antenna.id",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_apsd,
+     {"APSD", "wlan.nreport.bssid.info.capability.apsd",
+      FT_BOOLEAN, 32, NULL, 0x00000040,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_rsni,
-     {"RSNI", "wlan.rsni",
-      FT_UINT8, BASE_CUSTOM, CF_FUNC(rsni_base_custom), 0x0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_radio_msnt,
+     {"Radio Measurement", "wlan.nreport.bssid.info.capability.radiomsnt",
+      FT_BOOLEAN, 32, NULL, 0x00000080,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask,
-     {"Available Admission Capacity Bitmask", "wlan.bss_avb_adm_cap.bitmask",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_dback,
+     {"Delayed Block Ack", "wlan.nreport.bssid.info.capability.dback",
+      FT_BOOLEAN, 32, NULL, 0x000000100,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up0,
-     {"UP0 (bit0)", "wlan.bss_avb_adm_cap.bitmask.up0",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP0,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_iback,
+     {"Immediate Block Ack", "wlan.nreport.bssid.info.capability.iback",
+      FT_BOOLEAN, 32, NULL, 0x00000200,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up1,
-     {"UP1 (bit1)", "wlan.bss_avb_adm_cap.bitmask.up1",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP1,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_mobility_domain,
+     {"Mobility Domain", "wlan.nreport.bssid.info.mobilitydomain",
+      FT_BOOLEAN, 32, NULL, 0x00000400,
+      "", HFILL }},
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_high_throughput,
+     {"High Throughput Control (+HTC)", "wlan.nreport.bssid.info.hthoughput",
+      FT_BOOLEAN, 32, NULL, 0x00000800,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up2,
-     {"UP2 (bit2)", "wlan.bss_avb_adm_cap.bitmask.up2",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP2,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_very_high_throughput,
+     {"Very High Throughput (+VHT)", "wlan.nreport.bssid.info.vht",
+      FT_BOOLEAN, 32, NULL, 0x00001000,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up3,
-     {"UP3 (bit3)", "wlan.bss_avb_adm_cap.bitmask.up3",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP3,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_ftm,
+     {"Fine Timing Measurement (FTM)", "wlan.nreport.bssid.info.ftm",
+      FT_BOOLEAN, 32, NULL, 0x00002000,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up4,
-     {"UP4 (bit4)", "wlan.bss_avb_adm_cap.bitmask.up4",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP4,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_high_efficiency,
+     {"High Efficiency (HE AP)", "wlan.nreport.bssid.info.he",
+      FT_BOOLEAN, 32, NULL, 0x00004000,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up5,
-     {"UP5 (bit5)", "wlan.bss_avb_adm_cap.bitmask.up5",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP5,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_er_bss,
+     {"Extended Range BSS", "wlan.nreport.bssid.info.er_bss",
+      FT_BOOLEAN, 32, NULL, 0x00008000,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up6,
-     {"UP0 (bit6)", "wlan.bss_avb_adm_cap.bitmask.up6",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP6,
+
+    {&hf_ieee80211_tag_neighbor_report_bssid_info_reserved,
+     {"Reserved", "wlan.nreport.bssid.info.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0xFFFF0000,
+      "Must be zero", HFILL }},
+
+    {&hf_ieee80211_tag_neighbor_report_ope_class,
+     {"Operating Class", "wlan.nreport.opeclass",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_up7,
-     {"UP7 (bit7)", "wlan.bss_avb_adm_cap.bitmask.up7",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_UP7,
+
+    {&hf_ieee80211_tag_neighbor_report_channel_number,
+     {"Channel Number", "wlan.nreport.channumber",
+      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac0,
-     {"AC0 (bit8)", "wlan.bss_avb_adm_cap.bitmask.ac0",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC0,
+
+    {&hf_ieee80211_tag_neighbor_report_phy_type,
+     {"PHY Type", "wlan.nreport.phytype",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac1,
-     {"AC1 (bit9)", "wlan.bss_avb_adm_cap.bitmask.AC1",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC1,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_id,
+     {"Subelement ID", "wlan.nreport.subelement_id",
+      FT_UINT8, BASE_HEX, VALS(ieee80211_neighbor_report_subelement_id_vals), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac2,
-     {"AC2 (bit10)", "wlan.bss_avb_adm_cap.bitmask.ac2",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC2,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_length,
+     {"Length", "wlan.nreport.subelement_length",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_ac3,
-     {"AC3 (bit11)", "wlan.bss_avb_adm_cap.bitmask.ac3",
-      FT_BOOLEAN, 16, TFS(&tfs_set_notset), BSS_BITMASK_AC3,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_data,
+     {"Subelement Data", "wlan.nreport.subelement_data",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_bitmask_rsv,
-     {"Reserved", "wlan.bss_avb_adm_cap.bitmask.rsv",
-      FT_UINT16, BASE_HEX, NULL, BSS_BITMASK_RSV,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_bss_trn_can_pref,
+     {"Preference", "wlan.nreport.subelement.bss_trn_can_pref",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up0,
-     {"UP0", "wlan.bss_avb_adm_cap.up0",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_bss_ter_tsf,
+     {"BSS Termination TSF", "wlan.nreport.subelement.bss_ter_tsf",
+      FT_UINT64, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up1,
-     {"UP1", "wlan.bss_avb_adm_cap.up1",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_tag_neighbor_report_subelement_bss_dur,
+     {"Duration", "wlan.nreport.subelement.bss_dur",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up2,
-     {"UP2", "wlan.bss_avb_adm_cap.up2",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_tag_supported_ope_classes_current,
+     {"Current Operating Class", "wlan.supopeclass.current",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up3,
-     {"UP3", "wlan.bss_avb_adm_cap.up3",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_tag_supported_ope_classes_alternate,
+     {"Alternate Operating Classes", "wlan.supopeclass.alt",
+      FT_NONE, BASE_NONE, 0x0, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up4,
-     {"UP4", "wlan.bss_avb_adm_cap.up4",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_type,
+     {"Type", "wlan.wfa.ie.type",
+      FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_type_vals), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up5,
-     {"UP5", "wlan.bss_avb_adm_cap.up5",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_version,
+     {"WPA Version", "wlan.wfa.ie.wpa.version",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up6,
-     {"UP6", "wlan.bss_avb_adm_cap.up6",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_mcs,
+     {"Multicast Cipher Suite", "wlan.wfa.ie.wpa.mcs",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_mcs_base_custom), 0,
+      "Contains the cipher suite selector used by the BSS to protect broadcast/multicasttraffic", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wpa_mcs_oui,
+     {"Multicast Cipher Suite OUI", "wlan.wfa.ie.wpa.mcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_up7,
-     {"UP7", "wlan.bss_avb_adm_cap.up7",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_mcs_type,
+     {"Multicast Cipher Suite type", "wlan.wfa.ie.wpa.mcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_ac0,
-     {"AC0", "wlan.bss_avb_adm_cap.ac0",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_mcs_wfa_type,
+     {"Multicast Cipher Suite type", "wlan.wfa.ie.wpa.mcs.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_ac1,
-     {"AC1", "wlan.bss_avb_adm_cap.ac1",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_ucs_count,
+     {"Unicast Cipher Suite Count", "wlan.wfa.ie.wpa.ucs.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the number of pairwise cipher suite selectors that are contained in the Unicast Cipher Suite List", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wpa_ucs_list,
+     {"Unicast Cipher Suite List", "wlan.wfa.ie.wpa.ucs.list",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "Contains a series of cipher suite selectors that indicate the Unicast cipher suites", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wpa_ucs,
+     {"Unicast Cipher Suite", "wlan.wfa.ie.wpa.ucs",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_ucs_base_custom), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_ac2,
-     {"AC2", "wlan.bss_avb_adm_cap.ac2",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_ucs_oui,
+     {"Unicast Cipher Suite OUI", "wlan.wfa.ie.wpau.cs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avb_adm_cap_ac3,
-     {"AC3", "wlan.bss_avb_adm_cap.ac3",
-      FT_UINT16, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_ucs_type,
+     {"Unicast Cipher Suite type", "wlan.wfa.ie.wpa.ucs.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_bss_avg_ac_access_delay_be,
-     {"AC Average Access Delay for Best Effort", "wlan.bss_avg_ac_access_delay.be",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+    {&hf_ieee80211_wfa_ie_wpa_ucs_wfa_type,
+     {"Unicast Cipher Suite type", "wlan.wfa.ie.wpa.ucs.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avg_ac_access_delay_bk,
-     {"AC Average Access Delay for Best Background", "wlan.bss_avg_ac_access_delay.bk",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_akms_count,
+     {"Auth Key Management (AKM) Suite Count", "wlan.wfa.ie.wpa.akms.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wpa_akms_list,
+     {"Auth Key Management (AKM) List", "wlan.wfa.ie.wpa.akms.list",
+      FT_NONE, BASE_NONE, NULL, 0,
+      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wpa_akms,
+     {"Auth Key Management (AKM) Suite", "wlan.wfa.ie.wpa.akms",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_akms_base_custom), 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avg_ac_access_delay_vi,
-     {"AC Average Access Delay for Video", "wlan.bss_avg_ac_access_delay_vi",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_akms_oui,
+     {"Auth Key Management (AKM) OUI", "wlan.wfa.ie.wpa.akms.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_bss_avg_ac_access_delay_vo,
-     {"AC Average Access Delay for Voice", "wlan.bss_avg_ac_access_delay_vo",
-      FT_UINT8, BASE_DEC, NULL, 0x0,
+
+    {&hf_ieee80211_wfa_ie_wpa_akms_type,
+     {"Auth Key Management (AKM) type", "wlan.wfa.ie.wpa.akms.type",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
+    {&hf_ieee80211_wfa_ie_wpa_akms_wfa_type,
+     {"Auth Key Management (AKM) type", "wlan.wfa.ie.wpa.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_keymgmt_vals), 0,
+      NULL, HFILL }},
 
-    /* 802.11-2012 Table 8-119-RM Enabled Capabilities definition */
-    {&hf_ieee80211_tag_rm_enabled_capabilities,
-     {"RM Capabilities", "wlan.rmcap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Signals support for radio measurements in a device", HFILL }},
+    {&hf_ieee80211_wfa_ie_wme_subtype,
+     {"WME Subtype", "wlan.wfa.ie.wme.subtype",
+      FT_UINT8, BASE_DEC, VALS(ieee802111_wfa_ie_wme_type), 0,
+      NULL, HFILL }},
 
-    /* RM Enabled Capability octet 1 */
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b0,
-     {"Link Measurement", "wlan.rmcap.b0",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+    {&hf_ieee80211_wfa_ie_wme_version,
+     {"WME Version", "wlan.wfa.ie.wme.version",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b1,
-     {"Neighbor Report", "wlan.rmcap.b1",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info,
+     {"WME QoS Info", "wlan.wfa.ie.wme.qos_info",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b2,
-     {"Parallel Measurements", "wlan.rmcap.b2",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_max_sp_length,
+     {"Max SP Length", "wlan.wfa.ie.wme.qos_info.sta.max_sp_length",
+      FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_wme_qos_info_sta_max_sp_length_vals), 0x60,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b3,
-     {"Repeated Measurements", "wlan.rmcap.b3",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_be,
+     {"AC_BE", "wlan.wfa.ie.wme.qos_info.sta.ac_be",
+      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x08,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b4,
-     {"Beacon Passive Measurement", "wlan.rmcap.b4",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_bk,
+     {"AC_BK", "wlan.wfa.ie.wme.qos_info.sta.ac_bk",
+      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x04,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b5,
-     {"Beacon Active Measurement", "wlan.rmcap.b5",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vi,
+     {"AC_VI", "wlan.wfa.ie.wme.qos_info.sta.ac_vi",
+      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x02,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b6,
-     {"Beacon Table Measurement", "wlan.rmcap.b6",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vo,
+     {"AC_VO", "wlan.wfa.ie.wme.qos_info.sta.ac_vo",
+      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x01,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b7,
-     {"Beacon Measurement Reporting Conditions", "wlan.rmcap.b7",
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_reserved,
+     {"Reserved", "wlan.wfa.ie.wme.qos_info.sta.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x90,
+      "Must Be Zero", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_u_apsd,
+     {"U-APSD", "wlan.wfa.ie.wme.qos_info.ap.u_apsd",
       FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
+      "Indicates the WMM AP is currently supporting unscheduled automatic power save delivery", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_parameter_set_count,
+     {"Parameter Set Count", "wlan.wfa.ie.wme.qos_info.ap.parameter_set_count",
+      FT_UINT8, BASE_HEX, NULL, 0x0F,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_reserved,
+     {"Reserved", "wlan.wfa.ie.wme.qos_info.ap.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x70,
+      "Must Be Zero", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_reserved,
+     {"Reserved", "wlan.wfa.ie.wme.reserved",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "Must Be Zero", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_ac_parameters,
+     {"Ac Parameters", "wlan.wfa.ie.wme.acp",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    /* RM Enabled Capability octet 2 */
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b8,
-     {"Frame Measurement", "wlan.rmcap.b8",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
-      NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b9,
-     {"Channel Load Measurement", "wlan.rmcap.b9",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
-      NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b10,
-     {"Noise Histogram Measurement", "wlan.rmcap.b10",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04,
-      NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b11,
-     {"Statistics Measurement", "wlan.rmcap.b11",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
-      NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b12,
-     {"LCI Measurement", "wlan.rmcap.b12",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
+    {&hf_ieee80211_wfa_ie_wme_acp_aci_aifsn,
+     {"ACI / AIFSN Field", "wlan.wfa.ie.wme.acp.aci_aifsn",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b13,
-     {"LCI Azimuth capability", "wlan.rmcap.b13",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_aci,
+     {"ACI", "wlan.wfa.ie.wme.acp.aci",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wme_acs_vals), 0x60,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b14,
-     {"Transmit Stream/Category Measurement", "wlan.rmcap.b14",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_acm,
+     {"Admission Control Mandatory", "wlan.wfa.ie.wme.acp.acm",
+      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b15,
-     {"Triggered Transmit Stream/Category Measurement", "wlan.rmcap.b15",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_aifsn,
+     {"AIFSN", "wlan.wfa.ie.wme.acp.aifsn",
+      FT_UINT8, BASE_DEC, NULL, 0x0F,
       NULL, HFILL }},
 
-    /* RM Enabled Capability octet 3 */
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b16,
-     {"AP Channel Report capability", "wlan.rmcap.b16",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+    {&hf_ieee80211_wfa_ie_wme_acp_reserved,
+     {"Reserved", "wlan.wfa.ie.wme.acp.reserved",
+      FT_UINT8, BASE_DEC, NULL, 0x80,
+      "Must be Zero", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_acp_ecw,
+     {"ECW", "wlan.wfa.ie.wme.acp.ecw",
+      FT_UINT8, BASE_HEX, NULL, 0x00,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b17,
-     {"RM MIB capability", "wlan.rmcap.b17",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_ecw_max,
+     {"ECW Max", "wlan.wfa.ie.wme.acp.ecw.max",
+      FT_UINT8, BASE_DEC, NULL, 0xF0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b18to20,
-     {"Operating Channel Max Measurement Duration", "wlan.rmcap.b18to20",
-      FT_UINT8, BASE_DEC, NULL, 0x1C,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_ecw_min,
+     {"ECW Min", "wlan.wfa.ie.wme.acp.ecw.min",
+      FT_UINT8, BASE_DEC, NULL, 0x0F,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b21to23,
-     {"Nonoperating Channel Max Measurement Duration", "wlan.rmcap.b21to23",
-      FT_UINT8, BASE_DEC, NULL, 0xE0,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_cw_max,
+     {"CW Max", "wlan.wfa.ie.wme.acp.cw.max",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    /* RM Enabled Capability octet 4 */
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b24to26,
-     {"Measurement Pilotcapability", "wlan.rmcap.b24to26",
-      FT_UINT8, BASE_DEC, NULL, 0x07,
+    {&hf_ieee80211_wfa_ie_wme_acp_cw_min,
+     {"CW Min", "wlan.wfa.ie.wme.acp.cw.min",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b27,
-     {"Measurement Pilot Transmission Information", "wlan.rmcap.b27",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08,
+
+    {&hf_ieee80211_wfa_ie_wme_acp_txop_limit,
+     {"TXOP Limit", "wlan.wfa.ie.wme.acp.txop_limit",
+      FT_UINT16, BASE_DEC, NULL, 0x00,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b28,
-     {"Neighbor Report TSF Offset", "wlan.rmcap.b28",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo,
+     {"TS Info", "wlan.wfa.ie.wme.tspec.ts_info",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      "Traffic Stream (TS) Info", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_tid,
+     {"TID", "wlan.wfa.ie.wme.tspec.ts_info.tid",
+      FT_UINT24, BASE_DEC, NULL, 0x00001E,
+      "Traffic Stream Info ID (TID)", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_direction,
+     {"Direction", "wlan.wfa.ie.wme.tspec.ts_info.dir",
+      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_direction_vals), 0x000060,
+      "Traffic Stream (TS) Info Direction", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_psb,
+     {"PSB", "wlan.wfa.ie.wme.tspec.ts_info.psb",
+      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_psb_vals), 0x000400,
+      "Traffic Stream (TS) Info Power Save Behavior (PSB)", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_up,
+     {"UP", "wlan.wfa.ie.wme.tspec.ts_info.up",
+      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_up_vals), 0x003800,
+      "Traffic Stream (TS) Info User Priority (UP)", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_reserved,
+     {"Reserved", "wlan.wfa.ie.wme.tspec.ts_info.reserved",
+      FT_UINT24, BASE_HEX, NULL, 0xFFC381,
+      "Must be Zero", HFILL }},
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_nor_msdu,
+     {"Normal MSDU Size", "wlan.wfa.ie.wme.tspec.nor_msdu",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b29,
-     {"RCPI Measurement capability", "wlan.rmcap.b29",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_max_msdu,
+     {"Maximum MSDU Size", "wlan.wfa.ie.wme.tspec.max_msdu",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b30,
-     {"RSNI Measurement capability", "wlan.rmcap.b30",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_min_srv,
+     {"Minimum Service Interval", "wlan.wfa.ie.wme.tspec.min_srv",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b31,
-     {"BSS Average Access Delay capability", "wlan.rmcap.b31",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_max_srv,
+     {"Maximum Service Interval", "wlan.wfa.ie.wme.tspec.max_srv",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    /* RM Enabled Capability octet 5 */
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b32,
-     {"BSS Available Admission Capacity capability", "wlan.rmcap.b32",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+    {&hf_ieee80211_wfa_ie_wme_tspec_inact_int,
+     {"Inactivity Interval", "wlan.wfa.ie.wme.tspec.inact_int",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_b33,
-     {"Antenna capability", "wlan.rmcap.b33",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_susp_int,
+     {"Suspension Interval", "wlan.wfa.ie.wme.tspec.susp_int",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_rm_enabled_capabilities_o5,
-     {"Reserved", "wlan.rmcap.o5",
-      FT_UINT8, BASE_HEX, NULL, 0xFC,
-      "Must be zero", HFILL }},
 
-    /* 20/40 BSS Coexistence */
-    {&hf_ieee80211_tag_20_40_bc,
-     {"20/40 BSS Coexistence Flags", "wlan.20_40_bc",
-      FT_UINT8, BASE_HEX, NULL, 0x0,
+    {&hf_ieee80211_wfa_ie_wme_tspec_srv_start,
+     {"Service Start Time", "wlan.wfa.ie.wme.tspec.srv_start",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_information_request,
-     {"Information Request", "wlan.20_40_bc.information_request",
-      FT_BOOLEAN, 8, NULL, 0x01,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_min_data,
+     {"Minimum Data Rate", "wlan.wfa.ie.wme.tspec.min_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_forty_mhz_intolerant,
-     {"Forty MHz Intolerant", "wlan.20_40_bc.forty_mhz_intolerant",
-      FT_BOOLEAN, 8, NULL, 0x02,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_mean_data,
+     {"Mean Data Rate", "wlan.wfa.ie.wme.tspec.mean_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_20_mhz_bss_witdh_request,
-     {"20 MHz BSS Witdh Request", "wlan.20_40_bc.20_mhz_bss_witdh_request",
-      FT_BOOLEAN, 8, NULL, 0x04,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_peak_data,
+     {"Peak Data Rate", "wlan.wfa.ie.wme.tspec.peak_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_request,
-     {"OBSS Scanning Exemption Request", "wlan.20_40_bc.obss_scanning_exemption_request",
-      FT_BOOLEAN, 8, NULL, 0x08,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_burst_size,
+     {"Burst Size", "wlan.wfa.ie.wme.tspec.burst_size",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_grant,
-     {"OBSS Scanning Exemption Grant", "wlan.20_40_bc.obss_scanning_exemption_grant",
-      FT_BOOLEAN, 8, NULL, 0x10,
+
+    {&hf_ieee80211_wfa_ie_wme_tspec_delay_bound,
+     {"Delay Bound", "wlan.wfa.ie.wme.tspec.delay_bound",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
-    {&hf_ieee80211_tag_20_40_bc_reserved,
-     {"Reserved", "wlan.20_40_bc.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xE0,
-      "Must be zero", HFILL }},
 
+    {&hf_ieee80211_wfa_ie_wme_tspec_min_phy,
+     {"Minimum PHY Rate", "wlan.wfa.ie.wme.tspec.min_phy",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_power_constraint_local,
-     {"Local Power Constraint", "wlan.powercon.local",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Value that allows the mitigation requirements to be satisfied in the current channel", HFILL }},
+    {&hf_ieee80211_wfa_ie_wme_tspec_surplus,
+     {"Surplus Bandwidth Allowance", "wlan.wfa.ie.wme.tspec.surplus",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_power_capability_min,
-     {"Minimum Transmit Power", "wlan.powercap.min",
-      FT_UINT8, BASE_DEC_HEX, NULL, 0,
-      "The nominal minimum transmit power with which the STA is capable of transmitting in the current channel", HFILL }},
+    {&hf_ieee80211_wfa_ie_wme_tspec_medium,
+     {"Medium Time", "wlan.wfa.ie.wme.tspec.medium",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_power_capability_max,
-     {"Maximum Transmit Power", "wlan.powercap.max",
-      FT_UINT8, BASE_DEC_HEX, NULL, 0,
-      "The nominal maximum transmit power with which the STA is capable of transmitting in the current channel", HFILL }},
+    {&hf_ieee80211_rsn_ie_pmkid,
+     {"RSN PMKID", "wlan.rsn.ie.pmkid",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tpc_report_trsmt_pow,
-     {"Transmit Power", "wlan.tcprep.trsmt_pow",
-      FT_INT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_rsn_ie_unknown,
+     {"RSN Unknown", "wlan.rsn.ie.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tpc_report_link_mrg,
-     {"Link Margin", "wlan.tcprep.link_mrg",
-      FT_INT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_marvell_ie_type,
+     {"Type", "wlan.marvell.ie.type",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supported_channels,
-     {"Supported Channels Set", "wlan.supchan",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_marvell_ie_mesh_subtype,
+     {"Subtype", "wlan.marvell.ie.subtype",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supported_channels_first,
-     {"First Supported Channel", "wlan.supchan.first",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_marvell_ie_mesh_version,
+     {"Version", "wlan.marvell.ie.version",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supported_channels_range,
-     {"Supported Channel Range", "wlan.supchan.range",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_marvell_ie_mesh_active_proto_id,
+     {"Path Selection Protocol", "wlan.marvell.ie.proto_id",
+      FT_UINT8, BASE_HEX, VALS(mesh_path_selection_codes), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_csa_channel_switch_mode,
-     {"Channel Switch Mode", "wlan.csa.channel_switch_mode",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Indicates any restrictions on transmission until a channel switch", HFILL }},
+    {&hf_ieee80211_marvell_ie_mesh_active_metric_id,
+     {"Path Selection Metric", "wlan.marvell.ie.metric_id",
+      FT_UINT8, BASE_HEX, VALS(mesh_metric_codes), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_csa_new_channel_number,
-     {"New Channel Number", "wlan.csa.new_channel_number",
+    {&hf_ieee80211_marvell_ie_mesh_cap,
+     {"Mesh Capabilities", "wlan.marvell.ie.cap",
       FT_UINT8, BASE_HEX, NULL, 0,
-      "Set to the number of the channel to which the STA is moving", HFILL }},
+      NULL, HFILL }},
 
-    {&hf_ieee80211_csa_channel_switch_count,
-     {"Channel Switch Count", "wlan.csa.channel_switch.count",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Set to the number of TBTTs until the STA sending the Channel Switch Announcement element switches to the new channel or shall be set to 0", HFILL }},
+    {&hf_ieee80211_marvell_ie_data,
+     { "Marvell IE data", "wlan.marvell.data",
+       FT_BYTES, BASE_NONE, NULL, 0x0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_channel_switch_ttl,
-     {"Mesh Channel Switch TTL", "wlan.csa.mesh_channel_switch.ttl",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_atheros_ie_type,
+     {"Type", "wlan.atheros.ie.type",
+      FT_UINT8, BASE_HEX, VALS(atheros_ie_type_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_channel_switch_flag,
-     {"Mesh Channel Switch Flag", "wlan.csa.mesh_channel_switch.flag",
+    {&hf_ieee80211_atheros_ie_subtype,
+     {"Subtype", "wlan.atheros.ie.subtype",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_chswitch_flag_txrestrict,
-     {"CSA Tx Restrict", "wlan.csa.mesh_channel_switch.flag.txrestrict",
-      FT_BOOLEAN, 16, TFS(&csa_txrestrict_flags), 0x0001,
+    {&hf_ieee80211_atheros_ie_version,
+     {"Version", "wlan.atheros.ie.version",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_chswitch_flag_initiator,
-     {"CSA Initiator", "wlan.csa.mesh_channel_switch.flag.initiator",
-      FT_BOOLEAN, 16, TFS(&csa_initiator_flags), 0x0002,
+    {&hf_ieee80211_atheros_ie_cap_f_turbop,
+     {"Turbo Prime", "wlan.ie.atheros.capabilities.turbop",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_TURBOP,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_channel_switch_reason_code,
-     {"Mesh Channel Switch Reason Code", "wlan.csa.mesh_channel_switch.reason_code",
-      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_reason_code_ext, 0,
+    {&hf_ieee80211_atheros_ie_cap_f_comp,
+     {"Compression", "wlan.ie.atheros.capabilities.comp",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_COMP,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_channel_switch_precedence_value,
-     {"Mesh Channel Switch Precedence Value", "wlan.csa.mesh_channel_switch.pre_value",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_atheros_ie_cap_f_ff,
+     {"Fast Frames", "wlan.ie.atheros.capabilities.ff",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_FF,
       NULL, HFILL }},
 
-    {&hf_ieee80211_mesh_awake_window,
-     {"Mesh Awake Window", "wlan.mesh.mesh_awake_window",
-      FT_UINT16, BASE_CUSTOM, CF_FUNC(mesh_active_window_base_custom), 0,
+    {&hf_ieee80211_atheros_ie_cap_f_xr,
+     {"eXtended Range", "wlan.ie.atheros.capabilities.xr",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_XR,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_token,
-     {"Measurement Token", "wlan.measure.req.token",
-      FT_UINT8, BASE_HEX, NULL, 0xff,
+    {&hf_ieee80211_atheros_ie_cap_f_ar,
+     {"Advanced Radar", "wlan.ie.atheros.capabilities.ar",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_AR,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode,
-     {"Measurement Request Mode", "wlan.measure.req.mode",
-      FT_UINT8, BASE_HEX, NULL, 0xff,
+    {&hf_ieee80211_atheros_ie_cap_f_burst,
+     {"Burst", "wlan.ie.atheros.capabilities.burst",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BURST,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_parallel,
-     {"Parallel", "wlan.measure.req.reqmode.parallel",
-      FT_BOOLEAN, 8, NULL, 0x01,
+    {&hf_ieee80211_atheros_ie_cap_f_wme,
+     {"CWMin tuning", "wlan.ie.atheros.capabilities.wme",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_WME,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_enable,
-     {"Measurement Request Mode Field", "wlan.measure.req.reqmode.enable",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02,
+    {&hf_ieee80211_atheros_ie_cap_f_boost,
+     {"Boost", "wlan.ie.atheros.capabilities.boost",
+      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BOOST,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_request,
-     {"Measurement Reports", "wlan.measure.req.reqmode.request",
-      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x04,
+    {&hf_ieee80211_atheros_ie_advcap_cap,
+     {"Capabilities", "wlan.atheros.ie.advcap.cap",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_report,
-     {"Autonomous Measurement Reports", "wlan.measure.req.reqmode.report",
-      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x08,
+    {&hf_ieee80211_atheros_ie_advcap_defkey,
+     {"Default key index", "wlan.atheros.ie.advcap.defkey",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_duration_mandatory,
-     {"Duration Mandatory", "wlan.measure.req.reqmode.duration_mandatory",
-      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x10,
+    {&hf_ieee80211_atheros_ie_xr_info,
+     {"Info", "wlan.atheros.ie.xr.info",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mode_reserved,
-     {"Reserved", "wlan.measure.req.reqmode.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xE0,
+    {&hf_ieee80211_atheros_ie_xr_base_bssid,
+     {"Base BSS Id", "wlan.atheros.ie.xr.base_bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_type,
-     {"Measurement Request Type", "wlan.measure.req.reqtype",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_type_flags_ext, 0x00,
+    {&hf_ieee80211_atheros_ie_xr_xr_bssid,
+     {"XR BSS Id", "wlan.atheros.ie.xr.xr_bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_channel_number,
-     {"Measurement Channel Number", "wlan.measure.req.channelnumber",
-      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
+    {&hf_ieee80211_atheros_ie_xr_xr_beacon,
+     {"XR Beacon Interval", "wlan.atheros.ie.xr.xr_beacon",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(beacon_interval_base_custom), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_start_time,
-     {"Measurement Start Time", "wlan.measure.req.starttime",
-      FT_UINT64, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_atheros_ie_xr_base_cap,
+     {"Base capabilities", "wlan.atheros.ie.xr.base_cap",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_duration,
-     {"Measurement Duration", "wlan.measure.req.channelnumber",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "in TU (1 TU = 1024 us)", HFILL }},
+    {&hf_ieee80211_atheros_ie_xr_xr_cap,
+     {"XR capabilities", "wlan.atheros.ie.xr.xr_cap",
+      FT_UINT8, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_operating_class,
-     {"Operating Class", "wlan.measure.req.operatingclass",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_atheros_ie_data,
+     {"Atheros IE data", "wlan.atheros.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_randomization_interval,
-     {"Randomization Interval", "wlan.measure.req.randint",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "in TU (1 TU = 1024 us)", HFILL }},
+    {&hf_ieee80211_aironet_ie_type,
+     {"Aironet IE type", "wlan.aironet.type",
+      FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_measurement_mode,
-     {"Measurement Mode", "wlan.measure.req.measurementmode",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_measurement_mode_flags), 0,
+    {&hf_ieee80211_aironet_ie_dtpc,
+     {"Aironet IE CCX DTCP", "wlan.aironet.dtpc",
+      FT_INT8, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_bssid,
-     {"BSSID", "wlan.measure.req.bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_aironet_ie_dtpc_unknown,
+     {"Aironet IE CCX DTCP Unknown", "wlan.aironet.dtpc_unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_subelement_length,
-     {"Length", "wlan.measure.req.sub.length",
+    {&hf_ieee80211_aironet_ie_version,
+     {"Aironet IE CCX version", "wlan.aironet.version",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_id,
-     {"SubElement ID", "wlan.measure.req.beacon.sub.id",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_beacon_sub_id_flags), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_aironet_ie_data,
+     { "Aironet IE data", "wlan.aironet.data",
+       FT_BYTES, BASE_NONE, NULL, 0x0,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_ssid,
-     {"SSID", "wlan.measure.req.beacon.sub.ssid",
-      FT_STRING, BASE_NONE, 0, 0,
+    {&hf_ieee80211_qbss_version,
+     {"QBSS Version", "wlan.qbss.version",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition,
-     {"Reporting Condition", "wlan.measure.req.beacon.sub.bri.repcond",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition_flags), 0,
+    {&hf_ieee80211_qbss_scount,
+     {"Station Count", "wlan.qbss.scount",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_bri_threshold_offset,
-     {"Threshold/Offset", "wlan.measure.req.beacon.sub.bri.threshold_offset",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_qbss_cu,
+     {"Channel Utilization", "wlan.qbss.cu",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_reporting_detail,
-     {"Reporting Detail", "wlan.measure.req.beacon.sub.bri.reporting_detail",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_reporting_detail_flags), 0,
+    {&hf_ieee80211_qbss_adc,
+     {"Available Admission Capacity", "wlan.qbss.adc",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_sub_request,
-     {"Request", "wlan.measure.req.beacon.sub.request",
-      FT_UINT8, BASE_DEC, 0, 0,
+    {&hf_ieee80211_qbss2_cu,
+     {"Channel Utilization", "wlan.qbss2.cu",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_beacon_unknown,
-     {"Unknown Data", "wlan.measure.req.beacon.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "(not interpreted)", HFILL }},
+    {&hf_ieee80211_qbss2_gl,
+     {"G.711 CU Quantum", "wlan.qbss2.glimit",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_channel_load_sub_id,
-     {"SubElement ID", "wlan.measure.req.channel_load.sub.id",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_channel_load_sub_id_vals), 0,
+    {&hf_ieee80211_qbss2_cal,
+     {"Call Admission Limit", "wlan.qbss2.cal",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_channel_load_sub_reporting_condition,
-     {"Reporting Condition", "wlan.measure.req.channel_load.sub.repcond",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_channel_load_sub_reporting_condition_vals), 0,
+    {&hf_ieee80211_qbss2_scount,
+     {"Station Count", "wlan.qbss2.scount",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_channel_load_sub_reporting_ref,
-     {"Reference Value", "wlan.measure.req.channel_load.sub.ref",
+    {&hf_ieee80211_aironet_ie_qos_reserved,
+     {"Aironet IE QoS reserved", "wlan.aironet.qos.reserved",
       FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
+    {&hf_ieee80211_aironet_ie_qos_paramset,
+     {"Aironet IE QoS paramset", "wlan.aironet.qos.paramset",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_id,
-     {"SubElement ID", "wlan.measure.req.noise_histogram.sub.id",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_noise_histogram_sub_id_vals), 0,
+    {&hf_ieee80211_aironet_ie_qos_val,
+     {"Aironet IE QoS valueset", "wlan.aironet.qos.val",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_reporting_condition,
-     {"Reporting Condition", "wlan.measure.reqnoise_histogram.sub.repcond",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_noise_histogram_sub_reporting_condition_vals), 0,
+    {&hf_ieee80211_aironet_ie_clientmfp,
+     {"Aironet IE Client MFP", "wlan.aironet.clientmfp",
+      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_noise_histogram_sub_reporting_anpi_ref,
-     {"ANPI Reference Value", "wlan.measure.req.noise_histogram.sub.anpiref",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    /* Vendor Specific : Nintendo */
+    {&hf_ieee80211_vs_nintendo_type,
+     {"Type", "wlan.vs.nintendo.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_nintendo_type_vals), 0,
       NULL, HFILL }},
 
-
-    {&hf_ieee80211_tag_measure_request_frame_request_type,
-     {"Frame Request Type", "wlan.measure.req.frame_request_type",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_vs_nintendo_length,
+     {"Length", "wlan.vs.nintendo.length",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_mac_address,
-     {"MAC Address", "wlan.measure.req.mac_address",
+    {&hf_ieee80211_vs_nintendo_servicelist,
+     {"Servicelist", "wlan.vs.nintendo.servicelist",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_peer_mac_address,
-     {"Peer MAC Address", "wlan.measure.req.peer_mac_address",
+    {&hf_ieee80211_vs_nintendo_service,
+     {"Service", "wlan.vs.nintendo.service",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_group_id,
-     {"Group ID", "wlan.measure.req.groupid",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_group_id_flags_ext, 0,
+    {&hf_ieee80211_vs_nintendo_consoleid,
+     {"Console ID", "wlan.vs.nintendo.consoleid",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_request_unknown,
-     {"Unknown Data", "wlan.measure.req.unknown",
+    {&hf_ieee80211_vs_nintendo_unknown,
+     {"Unknown", "wlan.vs.nintendo.unknown",
       FT_BYTES, BASE_NONE, NULL, 0,
-      "(not interpreted)", HFILL }},
-
-    {&hf_ieee80211_tag_measure_report_measurement_token,
-     {"Measurement Token", "wlan.measure.req.token",
-      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_mode,
-     {"Measurement Report Mode", "wlan.measure.req.mode",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    /* Vendor Specific : Aruba Networks */
+    {&hf_ieee80211_vs_aruba_subtype,
+     {"Subtype", "wlan.vs.aruba.subtype",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_aruba_subtype_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_mode_late,
-     {"Measurement Report Mode Field", "wlan.measure.rep.repmode.late",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+    {&hf_ieee80211_vs_aruba_apname,
+     {"AP Name", "wlan.vs.aruba.ap_name",
+      FT_STRINGZ, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_mode_incapable,
-     {"Measurement Reports", "wlan.measure.rep.repmode.incapable",
-      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x02,
+    {&hf_ieee80211_vs_aruba_data,
+     {"Data", "wlan.vs.aruba.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_mode_refused,
-     {"Autonomous Measurement Reports", "wlan.measure.rep.repmode.refused",
-      FT_BOOLEAN, 8, TFS(&tfs_accepted_not_accepted), 0x04,
+    {&hf_ieee80211_vs_mikrotik_unknown,
+     {"Unknown", "wlan.vs.mikrotik.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_mode_reserved,
-     {"Reserved", "wlan.measure.rep.repmode.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xf8,
+    {&hf_ieee80211_vs_mikrotik_subitem,
+     {"Sub IE", "wlan.vs.mikrotik.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_type,
-     {"Measurement Report Type", "wlan.measure.rep.reptype",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_report_type_flags_ext, 0x00,
+    {&hf_ieee80211_vs_mikrotik_subtype,
+     {"Subtype", "wlan.vs.mikrotik.subtype",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_channel_number,
-     {"Measurement Channel Number", "wlan.measure.rep.channelnumber",
-      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
+    {&hf_ieee80211_vs_mikrotik_sublength,
+     {"Sublength", "wlan.vs.mikrotik.sublength",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_start_time,
-     {"Measurement Start Time", "wlan.measure.rep.starttime",
-      FT_UINT64, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_vs_mikrotik_subdata,
+     {"Subdata", "wlan.vs.mikrotik.subdata",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_duration,
-     {"Measurement Duration", "wlan.measure.rep.channelnumber",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    /* Vendor Specific : Meru (Fortinet) */
+    {&hf_ieee80211_vs_meru_subitem,
+     {"Sub IE", "wlan.vs.meru.unknown",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_cca_busy_fraction,
-     {"CCA Busy Fraction", "wlan.measure.rep.ccabusy",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_vs_meru_subtype,
+     {"Subtype", "wlan.vs.meru.subtype",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_basic_map_field,
-     {"Map Field", "wlan.measure.rep.mapfield",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_vs_meru_sublength,
+     {"Sublength", "wlan.vs.meru.sublength",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_bss,
-     {"BSS", "wlan.measure.rep.repmode.mapfield.bss",
-      FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_map_field_bss_flag), 0x01,
+    {&hf_ieee80211_vs_meru_subdata,
+     {"Subdata", "wlan.vs.meru.subdata",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_odfm,
-     {"Orthogonal Frequency Division Multiplexing (ODFM) Preamble", "wlan.measure.rep.repmode.mapfield.bss",
-      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x02,
+    /* Vendor Specific : Extreme (Zebra) */
+    {&hf_ieee80211_vs_extreme_subtype,
+     {"Subtype", "wlan.vs.extreme.subtype",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_extreme_subtype_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_unident_signal,
-     {"Unidentified Signal", "wlan.measure.rep.repmode.mapfield.unidentsig",
-      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x04,
+    {&hf_ieee80211_vs_extreme_subdata,
+     {"Subdata", "wlan.vs.extreme.subdata",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_radar,
-     {"Radar", "wlan.measure.rep.repmode.mapfield.radar",
-      FT_BOOLEAN, 8, TFS(&tfs_detected_not_detected), 0x08,
+    {&hf_ieee80211_vs_extreme_unknown,
+     {"Unknown", "wlan.vs.extreme.unknown",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_unmeasured,
-     {"Unmeasured", "wlan.measure.rep.repmode.mapfield.unmeasured",
-      FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x10,
+    {&hf_ieee80211_vs_extreme_ap_length,
+     {"AP Length", "wlan.vs.extreme.ap_length",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_map_field_reserved,
-     {"Reserved", "wlan.measure.rep.repmode.mapfield.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xe0,
+    {&hf_ieee80211_vs_extreme_ap_name,
+     {"AP Name", "wlan.vs.extreme.ap_name",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report,
-     {"Receive Power Indicator (RPI) Histogram Report", "wlan.measure.rep.rpi.histogram_report",
+    /* Vendor Specific : Aerohive */
+    {&hf_ieee80211_vs_aerohive_unknown,
+     {"Unknown", "wlan.vs.aerohive.unknown",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_0,
-     {"RPI 0 Density", "wlan.measure.rep.rpi.rpi0density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 0 Density", HFILL }},
+    {&hf_ieee80211_vs_aerohive_hostname_length,
+     {"Host Name Length", "wlan.vs.aerohive.hostname_length",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_1,
-     {"RPI 1 Density", "wlan.measure.rep.rpi.rpi1density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 1 Density", HFILL }},
+    {&hf_ieee80211_vs_aerohive_hostname,
+     {"Host Name", "wlan.vs.aerohive.hostname",
+      FT_STRING, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_2,
-     {"RPI 2 Density", "wlan.measure.rep.rpi.rpi2density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 2 Density", HFILL }},
+    {&hf_ieee80211_vs_aerohive_data,
+     {"Data", "wlan.vs.aerohive.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_3,
-     {"RPI 3 Density", "wlan.measure.rep.rpi.rpi3density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 3 Density", HFILL }},
+    {&hf_ieee80211_tsinfo,
+     {"Traffic Stream (TS) Info", "wlan.ts_info",
+      FT_UINT24, BASE_HEX, NULL, 0,
+      "Traffic Stream (TS) Info field", HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_4,
-     {"RPI 4 Density", "wlan.measure.rep.rpi.rpi4density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 4 Density", HFILL }},
+    {&hf_ieee80211_tsinfo_type,
+     {"Traffic Type", "wlan.ts_info.type",
+      FT_UINT24, BASE_DEC, VALS(tsinfo_type), 0x000001,
+      "Traffic Stream (TS) Info Traffic Type", HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_5,
-     {"RPI 5 Density", "wlan.measure.rep.rpi.rpi5density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 5 Density", HFILL }},
+    {&hf_ieee80211_tsinfo_tsid,
+     {"Traffic Stream ID (TSID)", "wlan.ts_info.tsid",
+      FT_UINT24, BASE_DEC, NULL, 0x00001E,
+      "Traffic Stream ID (TSID) Info TSID", HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_6,
-     {"RPI 6 Density", "wlan.measure.rep.rpi.rpi6density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 6 Density", HFILL }},
+    {&hf_ieee80211_tsinfo_dir,
+     {"Direction", "wlan.ts_info.dir",
+      FT_UINT24, BASE_DEC, VALS(tsinfo_direction), 0x000060,
+      "Traffic Stream (TS) Info Direction", HFILL }},
 
-    {&hf_ieee80211_tag_measure_rpi_histogram_report_7,
-     {"RPI 7 Density", "wlan.measure.rep.rpi.rpi7density",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "Receive Power Indicator (RPI) 7 Density", HFILL }},
+    {&hf_ieee80211_tsinfo_access,
+     {"Access Policy", "wlan.ts_info.dir",
+      FT_UINT24, BASE_DEC, VALS(tsinfo_access), 0x000180,
+      "Traffic Stream (TS) Info Access Policy", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_operating_class,
-     {"Operating Class", "wlan.measure.rep.operatingclass",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tsinfo_agg,
+     {"Aggregation", "wlan.ts_info.agg",
+      FT_UINT24, BASE_DEC, NULL, 0x000200,
+      "Traffic Stream (TS) Info Access Policy", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_channel_load,
-     {"Channel Load", "wlan.measure.rep.chanload",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tsinfo_apsd,
+     {"Automatic Power-Save Delivery (APSD)", "wlan.ts_info.apsd",
+      FT_UINT24, BASE_DEC, NULL, 0x000400,
+      "Traffic Stream (TS) Info Automatic Power-Save Delivery (APSD)", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_frame_info,
-     {"Reported Frame Information", "wlan.measure.rep.frameinfo",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tsinfo_up,
+     {"User Priority", "wlan.ts_info.up",
+      FT_UINT24, BASE_DEC, VALS(qos_up), 0x003800,
+      "Traffic Stream (TS) Info User Priority", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_frame_info_phy_type,
-     {"Condensed PHY", "wlan.measure.rep.frameinfo.phytype",
-      FT_UINT8, BASE_HEX, NULL, 0x7F,
-      NULL, HFILL }},
+    {&hf_ieee80211_tsinfo_ack,
+     {"Ack Policy", "wlan.ts_info.ack",
+      FT_UINT24, BASE_DEC, VALS(ack_policy), 0x00C000,
+      "Traffic Stream (TS) Info Ack Policy", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_frame_info_frame_type,
-     {"Reported Frame Type", "wlan.measure.rep.frameinfo.frametype",
-      FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_report_frame_info_frame_type_flag), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_tsinfo_sched,
+     {"Schedule", "wlan.ts_info.sched",
+      FT_UINT24, BASE_DEC, NULL, 0x010000,
+      "Traffic Stream (TS) Info Schedule", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_rcpi,
-     {"Received Channel Power Indicator (RCPI)", "wlan.measure.rep.rcpi",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "in dBm", HFILL }},
+    {&hf_ieee80211_tsinfo_rsv,
+     {"Reserved", "wlan.ts_info.rsv",
+      FT_UINT24, BASE_HEX, NULL, 0xFE0000,
+      "Must be Zero", HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_rsni,
-     {"Received Signal to Noise Indicator (RSNI)", "wlan.measure.rep.rsni",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      "in dB", HFILL }},
+    {&hf_ieee80211_tspec_nor_msdu,
+     {"Normal MSDU Size", "wlan.tspec.nor_msdu",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_bssid,
-     {"BSSID Being Reported", "wlan.measure.rep.bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tspec_max_msdu,
+     {"Maximum MSDU Size", "wlan.tspec.max_msdu",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ant_id,
-     {"Antenna ID", "wlan.measure.rep.antid",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_min_srv,
+     {"Minimum Service Interval", "wlan.tspec.min_srv",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_anpi,
-     {"ANPI", "wlan.measure.rep.anpi",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_max_srv,
+     {"Maximum Service Interval", "wlan.tspec.max_srv",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_0,
-     {"IPI Density 0", "wlan.measure.rep.ipi_density0",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_inact_int,
+     {"Inactivity Interval", "wlan.tspec.inact_int",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_1,
-     {"IPI Density 1", "wlan.measure.rep.ipi_density1",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_susp_int,
+     {"Suspension Interval", "wlan.tspec.susp_int",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_2,
-     {"IPI Density 2", "wlan.measure.rep.ipi_density2",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_srv_start,
+     {"Service Start Time", "wlan.tspec.srv_start",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_3,
-     {"IPI Density 3", "wlan.measure.rep.ipi_density3",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_min_data,
+     {"Minimum Data Rate", "wlan.tspec.min_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_4,
-     {"IPI Density 4", "wlan.measure.rep.ipi_density4",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_mean_data,
+     {"Mean Data Rate", "wlan.tspec.mean_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_5,
-     {"IPI Density 5", "wlan.measure.rep.ipi_density5",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_peak_data,
+     {"Peak Data Rate", "wlan.tspec.peak_data",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_6,
-     {"IPI Density 6", "wlan.measure.rep.ipi_density6",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_burst_size,
+     {"Burst Size", "wlan.tspec.burst_size",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_7,
-     {"IPI Density 7", "wlan.measure.rep.ipi_density7",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_delay_bound,
+     {"Delay Bound", "wlan.tspec.delay_bound",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_8,
-     {"IPI Density 8", "wlan.measure.rep.ipi_density8",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_min_phy,
+     {"Minimum PHY Rate", "wlan.tspec.min_phy",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_9,
-     {"IPI Density 9", "wlan.measure.rep.ipi_density9",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_surplus,
+     {"Surplus Bandwidth Allowance", "wlan.tspec.surplus",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_ipi_density_10,
-     {"IPI Density 10", "wlan.measure.rep.ipi_density10",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_medium,
+     {"Medium Time", "wlan.tspec.medium",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_parent_tsf,
-     {"Parent Timing Synchronization Function (TSF)", "wlan.measure.rep.parenttsf",
-      FT_UINT32, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tspec_dmg,
+     {"DMG attributes", "wlan.tspec.dmg",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_subelement_length,
-     {"Length", "wlan.measure.req.sub.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_ts_delay,
+     {"Traffic Stream (TS) Delay", "wlan.ts_delay",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_beacon_sub_id,
-     {"SubElement ID", "wlan.measure.req.beacon.sub.id",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_report_beacon_sub_id_vals), 0,
+    {&hf_ieee80211_tclas_process,
+     {"Processing", "wlan.tclas_proc.processing",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_tclas_process_flag), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_measure_report_unknown,
-     {"Unknown Data", "wlan.measure.rep.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "(not interpreted)", HFILL }},
+    {&hf_ieee80211_tag_ext_supp_rates,
+     {"Extended Supported Rates", "wlan.extended_supported_rates",
+      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
+      "In Mbit/sec, (B) for Basic Rates", HFILL }},
 
-    {&hf_ieee80211_tag_quiet_count,
-     {"Count", "wlan.quiet.count",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Set to the number of TBTTs until the beacon interval during which the next quiet interval shall start", HFILL }},
+    {&hf_ieee80211_sched_info,
+     {"Schedule Info", "wlan.sched.sched_info",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      "Schedule Info field", HFILL }},
 
-    {&hf_ieee80211_tag_quiet_period,
-     {"Period", "wlan.quiet.period",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Set to the number of beacon intervals between the start of regularly scheduled quiet intervals", HFILL }},
+    {&hf_ieee80211_sched_info_agg,
+     {"Schedule Aggregation", "wlan.sched_info.agg",
+      FT_UINT16, BASE_DEC, NULL, 0x0001,
+      "Traffic Stream (TS) Info Access Policy", HFILL }},
 
-    {&hf_ieee80211_tag_quiet_duration,
-     {"Duration", "wlan.quiet.duration",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Set to the duration of the quiet interval", HFILL }},
+    {&hf_ieee80211_sched_info_tsid,
+     {"Schedule Traffic Stream ID (TSID)", "wlan.sched_info.tsid",
+      FT_UINT16, BASE_DEC, NULL, 0x001E,
+      "Traffic Stream ID (TSID) Info TSID", HFILL }},
 
-    {&hf_ieee80211_tag_quiet_offset,
-     {"Offset", "wlan.quiet.offset",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Set to the offset of the start of the quiet interval from the TBTT", HFILL }},
+    {&hf_ieee80211_sched_info_dir,
+     {"Schedule Direction", "wlan.sched_info.dir",
+      FT_UINT16, BASE_DEC, VALS(tsinfo_direction), 0x0060,
+      "Traffic Stream (TS) Info Direction", HFILL }},
 
-    {&hf_ieee80211_tag_dfs_owner,
-     {"Owner", "wlan.dfs.owner",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Set to the individual IEEE MAC address of the STA that is the currently known DFS Owner in the IBSS", HFILL  }},
+    {&hf_ieee80211_sched_srv_start,
+     {"Service Start Time", "wlan.sched.srv_start",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dfs_recovery_interval,
-     {"Recovery Interval", "wlan.dfs.recovery_interval",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "Indicates the time interval that shall be used for DFS owner recovery", HFILL  }},
+    {&hf_ieee80211_sched_srv_int,
+     {"Service Interval", "wlan.sched.srv_int",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dfs_channel_map,
-     {"Channel Map", "wlan.dfs.channel_map",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL  }},
+    {&hf_ieee80211_sched_spec_int,
+     {"Specification Interval", "wlan.sched.spec_int",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_dfs_channel_number,
-     {"Channel Number", "wlan.dfs.channel_number",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL  }},
+    {&hf_ieee80211_aruba,
+     {"Aruba Type", "wlan.aruba.type",
+      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &aruba_mgt_typevals_ext, 0,
+      "Aruba Management", HFILL }},
 
-    {&hf_ieee80211_tag_dfs_map,
-     {"Map", "wlan.dfs.map",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL  }},
+    {&hf_ieee80211_aruba_hb_seq,
+     {"Aruba Heartbeat Sequence", "wlan.aruba.heartbeat_sequence",
+      FT_UINT64, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_erp_info,
-     {"ERP Information", "wlan.erp_info",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL  }},
+    {&hf_ieee80211_aruba_mtu,
+     {"Aruba MTU Size", "wlan.aruba.mtu_size",
+      FT_UINT16, BASE_DEC, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_erp_info_erp_present,
-     {"Non ERP Present", "wlan.erp_info.erp_present",
-      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x01,
-      NULL, HFILL  }},
+    /* Start: HT Control (+HTC) */
+    {&hf_ieee80211_htc,
+     {"HT Control (+HTC)", "wlan.htc",
+      FT_UINT32, BASE_HEX, NULL, 0,
+      "High Throughput Control (+HTC)", HFILL }},
 
-    {&hf_ieee80211_tag_erp_info_use_protection,
-     {"Use Protection", "wlan.erp_info.use_protection",
-      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x02,
-      NULL, HFILL  }},
+    {&hf_ieee80211_htc_vht,
+     {"VHT", "wlan.htc.vht",
+      FT_BOOLEAN, 32, NULL, HTC_VHT,
+      "High Throughput Control HT/VHT flag", HFILL }},
 
-    {&hf_ieee80211_tag_erp_info_barker_preamble_mode,
-     {"Barker Preamble Mode", "wlan.erp_info.barker_preamble_mode",
-      FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x04,
-      NULL, HFILL  }},
+    {&hf_ieee80211_htc_he,
+     {"HE", "wlan.htc.he",
+      FT_BOOLEAN, 32, NULL, HTC_HE,
+      "High Efficiency Control HE flag", HFILL }},
 
-    {&hf_ieee80211_tag_erp_info_reserved,
-     {"Reserved", "wlan.erp_info.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0xF8,
-      NULL, HFILL  }},
+    {&hf_ieee80211_htc_he_ctrl_id,
+     {"Control ID", "wlan.htc.he.a_control.ctrl_id",
+      FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    /* IEEE Std 802.11 2016 */
-    /* Table 9-135-Extended Capabilities field */
-    {&hf_ieee80211_tag_extended_capabilities,
-     {"Extended Capabilities", "wlan.extcap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_umrs_he_tb_ppdu_len,
+     {"HE TB PPDU Length", "wlan.htc.he.a_control.umrs.he_tb_ppdu_len",
+      FT_UINT32, BASE_DEC, NULL, 0x0000001f, NULL, HFILL }},
 
-    /* Extended Capability octet 1 */
-    {&hf_ieee80211_tag_extended_capabilities_b0,
-     {"20/40 BSS Coexistence Management Support", "wlan.extcap.b0",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      "HT Information Exchange Support", HFILL }},
+    {&hf_ieee80211_he_umrs_ru_allocation,
+     {"RU Allocation", "wlan.htc.he.a_control.umrs.ru_allocation",
+      FT_UINT32, BASE_HEX, NULL, 0x00001fe0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b1,
-     {"Reserved (was On-demand beacon)", "wlan.extcap.b1",
-      FT_UINT8, BASE_HEX, NULL, 0x02,
-      "Must be zero", HFILL }},
+    {&hf_ieee80211_he_dl_tx_power,
+     {"DL Tx Power", "wlan.htc.he.a_control.umrs.dl_tx_power",
+      FT_UINT32, BASE_HEX, NULL, 0x0003e000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b2,
-     {"Extended Channel Switching", "wlan.extcap.b2",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_ul_target_rssi,
+     {"UL Target RSSI", "wlan.htc.he.a_control.umrs.ul_target_rssi",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(ul_target_rssi_base_custom),
+      0x007c0000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b3,
-     {"Reserved (was WAVE indication)", "wlan.extcap.b3",
-      FT_UINT8, BASE_HEX, NULL, 0x08,
-      "Must be zero", HFILL }},
+    {&hf_ieee80211_he_ul_mcs,
+     {"UL MCS", "wlan.htc.he.a_control.umrs.ul_mcs",
+      FT_UINT32, BASE_HEX, NULL, 0x01800000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b4,
-     {"PSMP Capability", "wlan.extcap.b4",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_ul_reserved,
+     {"reserved", "wlan.htc.he.a_control.umrs.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0x02000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b5,
-     {"Reserved", "wlan.extcap.b5",
-      FT_UINT8, BASE_HEX, NULL, 0x20,
-      "Must be zero", HFILL }},
+    {&hf_ieee80211_he_om_rx_nss,
+     {"Rx NSS", "wlan.htc.he.a_control.om.rx_nss",
+      FT_UINT16, BASE_DEC, NULL, 0x0007, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b6,
-     {"S-PSMP Support", "wlan.extcap.b6",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_om_channel_width,
+     {"Channel Width", "wlan.htc.he.a_control.om.channel_width",
+      FT_UINT16, BASE_DEC, NULL, 0x0018, NULL, HFILL }},
+
+    {&hf_ieee80211_he_om_ul_mu_disable,
+     {"UL MU Disable", "wlan.htc.he.a_control.om.ul_mu_disable",
+      FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL }},
+
+    {&hf_ieee80211_he_om_tx_nsts,
+     {"Tx NSTS", "wlan.htc.he.a_control.om.tx_nsts",
+      FT_UINT16, BASE_DEC, NULL, 0x01c0, NULL, HFILL }},
+
+    {&hf_ieee80211_he_om_reserved,
+     {"Reserved", "wlan.htc.he.a_control.om.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0x0e00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b7,
-     {"Event", "wlan.extcap.b7",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_unsolicited_mfb,
+     {"Unsolicited MFB", "wlan.htc.he.a_control.hla.unsolicited_mfb",
+      FT_BOOLEAN, 32, NULL, 0x00000001, NULL, HFILL }},
 
+    {&hf_ieee80211_he_hla_mrq,
+     {"MRQ", "wlan.htc.he.a_control.hla.mrq",
+      FT_BOOLEAN, 32, NULL, 0x00000002, NULL, HFILL }},
 
-    /* Extended Capability octet 2 */
-    {&hf_ieee80211_tag_extended_capabilities_b8,
-     {"Diagnostics", "wlan.extcap.b8",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_nss,
+     {"NSS", "wlan.htc.he.a_control.hla.NSS",
+      FT_UINT32, BASE_DEC, NULL, 0x0000001c, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b9,
-     {"Multicast Diagnostics", "wlan.extcap.b9",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_he_mcs,
+     {"HE-MCS", "wlan.htc.he.a_control.hla.he_mcs",
+      FT_UINT32, BASE_DEC, NULL, 0x000001e0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b10,
-     {"Location Tracking", "wlan.extcap.b10",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_dcm,
+     {"DCM", "wlan.htc.he.a_control.hla.dcm",
+      FT_BOOLEAN, 32, NULL, 0x00000200, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b11,
-     {"FMS", "wlan.extcap.b11",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_ru,
+     {"RU", "wlan.htc.he.a_control.hla.ru",
+      FT_UINT32, BASE_DEC, NULL, 0x0003fc00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b12,
-     {"Proxy ARP Service", "wlan.extcap.b12",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_bw,
+     {"BW", "wlan.htc.he.a_control.hla.bw",
+      FT_UINT32, BASE_DEC, NULL, 0x000c0000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b13,
-     {"Collocated Interference Reporting", "wlan.extcap.b13",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_msi_ppdu_type,
+     {"MSI/PPDU Type", "wlan.htc.he.a_control.hla.msi_ppdu_type",
+      FT_UINT32, BASE_DEC, NULL, 0x00700000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b14,
-     {"Civic Location", "wlan.extcap.b14",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_tx_bf,
+     {"Tx BF", "wlan.htc.he.a_control.hla.tx_bf",
+      FT_BOOLEAN, 32, NULL, 0x00800000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b15,
-     {"Geospatial Location", "wlan.extcap.b15",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_hla_reserved,
+     {"Reserved", "wlan.htc.he.a_control.hla.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0x03000000, NULL, HFILL }},
 
+    {&hf_ieee80211_he_bsr_aci_bitmap,
+     {"ACI Bitmap", "wlan.htc.he.a_control.bsr.aci_bitmap",
+      FT_UINT32, BASE_HEX, NULL, 0x0000000f, NULL, HFILL }},
 
-    /* Extended Capability octet 3 */
-    {&hf_ieee80211_tag_extended_capabilities_b16,
-     {"TFS", "wlan.extcap.b16",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_bsr_delta_tid,
+     {"Delta TID", "wlan.htc.he.a_control.bsr.delta_tid",
+      FT_UINT32, BASE_HEX, NULL, 0x00000030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b17,
-     {"WNM Sleep Mode", "wlan.extcap.b17",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_bsr_aci_high,
+     {"ACI High", "wlan.htc.he.a_control.bsr.aci_high",
+      FT_UINT32, BASE_HEX, NULL, 0x000000c0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b18,
-     {"TIM Broadcast", "wlan.extcap.b18",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_bsr_scaling_factor,
+     {"Scaling Factor", "wlan.htc.he.a_control.bsr.scaling_factor",
+      FT_UINT32, BASE_HEX, NULL, 0x00000300, NULL, HFILL }},
+
+    {&hf_ieee80211_he_bsr_queue_size_high,
+     {"Queue Size High", "wlan.htc.he.a_control.bsr.queue_size_high",
+      FT_UINT32, BASE_HEX, NULL, 0x0003fc00, NULL, HFILL }},
+
+    {&hf_ieee80211_he_bsr_queue_size_all,
+     {"Queue Size All", "wlan.htc.he.a_control.bsr.queue_size_all",
+      FT_UINT32, BASE_HEX, NULL, 0x03fc0000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_uph_ul_power_headroom,
+     {"UL Power Headroom", "wlan.htc.he.a_control.uph.ul_power_headroom",
+      FT_UINT8, BASE_DEC, NULL, 0x00000001f, NULL, HFILL }},
+
+    {&hf_ieee80211_he_uph_ul_min_transmit_power_flag,
+     {"Minimum Transmit Power Flag", "wlan.htc.he.a_control.uph.min_transmit_power_flag",
+      FT_BOOLEAN, 8, NULL, 0x00000020, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b19,
-     {"BSS Transition", "wlan.extcap.b19",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_uph_reserved,
+     {"Reserved", "wlan.htc.he.a_control.uph.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x000000c0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b20,
-     {"QoS Traffic Capability", "wlan.extcap.b20",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_btc_avail_chan,
+     {"Available Channel Bitmap", "wlan.htc.he.a_control.bqr.avail_chan_bitmap",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b21,
-     {"AC Station Count", "wlan.extcap.b21",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_btc_reserved,
+     {"Reserved", "wlan.htc.he.a_control.bqr.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b22,
-     {"Multiple BSSID", "wlan.extcap.b22",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_cci_ac_constraint,
+     {"AC Constraint", "wlan.htc.he.a_control.cci.ac_constraint",
+      FT_BOOLEAN, 32, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b23,
-     {"Timing Measurement", "wlan.extcap.b23",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_cci_rdg_more_ppdu,
+     {"RDG/More PPDU", "wlan.htc.he.a_control.cci.rdg_more_ppdu",
+      FT_BOOLEAN, 32, NULL, 0x02, NULL, HFILL }},
 
+    {&hf_ieee80211_he_cci_sr_ppdu_indic,
+     {"SR PPDU Indication", "wlan.htc.he.a_control.cci.sr_ppdu_indic",
+      FT_BOOLEAN, 32, NULL, 0x04, NULL, HFILL }},
 
-    /* Extended Capability octet 4 */
-    {&hf_ieee80211_tag_extended_capabilities_b24,
-     {"Channel Usage", "wlan.extcap.b24",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_cci_reserved,
+     {"Reserved", "wlan.htc.htc.a_control.cci.reserved",
+      FT_UINT32, BASE_HEX, NULL, 0xF8, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b25,
-     {"SSID List", "wlan.extcap.b25",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_common_info,
+     {"HE Trigger Common Info", "wlan.trigger.he.common_info",
+      FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b26,
-     {"DMS", "wlan.extcap.b26",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_type,
+     {"Trigger Type", "wlan.trigger.he.trigger_type",
+      FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(trigger_type_vals),
+        0x000000000000000F, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_length,
+     {"L-SIG Length", "wlan.trigger.he.l_sig_length",
+      FT_UINT64, BASE_DEC, NULL, 0x000000000000FFF0, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_cascade_indication,
+     {"Cascade Indication", "wlan.trigger.he.cascade_indication",
+      FT_BOOLEAN, 64, NULL, 0x0000000000010000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_cs_required,
+     {"CS Required", "wlan.trigger.he.cs_required",
+      FT_BOOLEAN, 64, NULL, 0x0000000000020000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_bw,
+     {"BW", "wlan.trigger.he.bw",
+      FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(bw_subfield_vals), 0x00000000000C0000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_gi_and_ltf_type,
+     {"GI And LTF Type", "wlan.trigger.he.gi_and_ltf_type",
+      FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(gi_and_ltf_type_subfield_vals), 0x0000000000300000,
+        NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_mu_mimo_ltf_mode,
+     {"MU-MIMO LTF Mode", "wlan.trigger.he.mu_mimo_ltf_mode",
+      FT_BOOLEAN, 64, TFS(&mu_mimo_ltf_mode_tfs), 0x0000000000400000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_num_he_ltf_syms_etc,
+     {"Number of HE-LTF Symbols and Midamble Periodicity",
+        "wlan.trigger.he.num_he_ltf_syms_and_midamble_per",
+      FT_UINT64, BASE_HEX, NULL, 0x0000000003800000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_stbc,
+     {"STBC", "wlan.trigger.he.stbc",
+      FT_BOOLEAN, 64, NULL, 0x0000000004000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_ldpc_extra_sym_seg,
+     {"LDPC Extra Symbol Segment", "wlan.trigger.he.ldpc_extra_symbol_segment",
+      FT_BOOLEAN, 64, NULL, 0x0000000008000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_ap_tx_power,
+     {"AP TX Power", "wlan.trigger.he.ap_tx_power",
+      FT_UINT64, BASE_DEC, NULL, 0x00000003F0000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_packet_extension,
+     {"Packet Extension", "wlan.trigger.he.packet_extension",
+      FT_UINT64, BASE_HEX, NULL, 0x0000001C00000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_spatial_reuse,
+     {"Spatial Reuse", "wlan.trigger.he.spatial_reuse",
+      FT_UINT64, BASE_HEX, NULL, 0x001FFFE000000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_doppler,
+     {"Doppler", "wlan.trigger.he.doppler",
+      FT_BOOLEAN, 64, NULL, 0x0020000000000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_he_sig_a_reserved,
+     {"HE-SIG-A Reserved", "wlan.trigger.he.he_sig_a_reserved",
+      FT_UINT64, BASE_HEX, NULL, 0x7FC0000000000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_reserved,
+     {"Reserved", "wlan.trigger.he.reserved",
+      FT_UINT64, BASE_HEX, NULL, 0x8000000000000000, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_bar_ctrl,
+     {"BAR Control", "wlan.trigger.he.common_info.bar_ctrl",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_he_trigger_bar_ctrl_ba_ack_policy,
+     {"BA Ack Policy", "wlan.trigger.he.common_info.bar_ctrl.ba_ack_policy",
+      FT_BOOLEAN, 16, TFS(&ieee80211_block_ack_control_ack_policy_flag), 0x0001,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b27,
-     {"UTC TSF Offset", "wlan.extcap.b27",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_bar_ctrl_ba_type,
+     {"BA Type", "wlan.trigger.he.common_info.bar_ctrl.ba_type",
+      FT_UINT16, BASE_HEX, VALS(block_ack_type_vals), 0x001e, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b28,
-     {"TPU Buffer STA Support", "wlan.extcap.b28",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_bar_ctrl_reserved,
+     {"Reserved", "wlan.trigger.he.common_info.bar_ctrl.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0x0FE0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b29,
-     {"TDLS Peer PSM Support", "wlan.extcap.b29",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_bar_ctrl_tid_info,
+     {"TID_INFO", "wlan.trigger.he.common_info.bar_ctrl.tid_info",
+      FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b30,
-     {"TDLS channel switching", "wlan.extcap.b30",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_bar_info,
+     {"BAR Information", "wlan.trigger.he.common_info.bar_info",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b31,
-     {"Interworking", "wlan.extcap.b31",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_bar_info_blk_ack_seq_ctrl,
+     {"Block Ack Starting Sequence Control",
+      "wlan.trigger.he.common_info.bar_info.blk_ack_starting_seq_ctrl",
+      FT_UINT16, BASE_HEX, NULL, 0xFFFF, NULL, HFILL }},
 
+    {&hf_ieee80211_he_trigger_user_info,
+     {"User Info", "wlan.trigger.he.user_info",
+      FT_UINT40, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    /* Extended Capability octet 5 */
-    {&hf_ieee80211_tag_extended_capabilities_b32,
-     {"QoS Map", "wlan.extcap.b32",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_mpdu_mu_spacing,
+     {"MPDU MU Spacing Factor", "wlan.trigger.he.mpdu_mu_spacing_factor",
+      FT_UINT8, BASE_DEC, NULL, 0x03, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b33,
-     {"EBR", "wlan.extcap.b33",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_tid_aggregation_limit,
+     {"TID Aggregation Limit", "wlan.trigger.he.tid_aggregation_limit",
+      FT_UINT8, BASE_DEC, NULL, 0x1C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b34,
-     {"SSPN Interface", "wlan.extcap.b34",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dependent_reserved1,
+     {"Reserved", "wlan.trigger.he.reserved1",
+      FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b35,
-     {"Reserved", "wlan.extcap.b35",
-      FT_UINT8, BASE_HEX, NULL, 0x08,
-      "Must be zero", HFILL }},
+    {&hf_ieee80211_he_trigger_preferred_ac,
+     {"Preferred AC", "wlan.trigger.he.preferred_ac",
+      FT_UINT8, BASE_HEX, VALS(preferred_ac_vals), 0xC0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b36,
-     {"MSGCF Capability", "wlan.extcap.b36",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dep_basic_user_info,
+     {"Basic Trigger Dependent User Info", "wlan.trigger.he.basic_user_info",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b37,
-     {"TDLS Support", "wlan.extcap.b37",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_starting_aid,
+     {"Starting AID", "wlan.trigger.he.starting_aid",
+      FT_UINT40, BASE_HEX, NULL, 0x0000000FFF, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b38,
-     {"TDLS Prohibited", "wlan.extcap.b38",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dependent_reserved2,
+     {"Reserved", "wlan.trigger.he.reserved2",
+      FT_UINT40, BASE_HEX, NULL, 0x00001FF000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b39,
-     {"TDLS Channel Switching Prohibited", "wlan.extcap.b39",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x80,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_feedback_type,
+     {"Feedback Type", "wlan.trigger.he.feedback_type",
+      FT_UINT40, BASE_HEX, NULL, 0x0001E00000, NULL, HFILL }},
 
-    /* Extended Capability octet 6 */
-    {&hf_ieee80211_tag_extended_capabilities_b40,
-     {"Reject Unadmitted Frame", "wlan.extcap.b40",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dependent_reserved3,
+     {"Reserved", "wlan.trigger.he.reserved3",
+      FT_UINT40, BASE_HEX, NULL, 0x00FE000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_serv_int_granularity,
-     {"Service Interval Granularity",
-      "wlan.extcap.serv_int_granularity",
-      FT_UINT8, BASE_DEC, VALS(service_interval_granularity_vals), 0x0e,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_nfrp_target_rssi,
+     {"Target RSSI", "wlan.trigger.he.target_rssi",
+      FT_UINT40, BASE_CUSTOM, CF_FUNC(target_rssi_base_custom), 0x7F00000000,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b44,
-     {"Identifier Location", "wlan.extcap.b44",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_multiplexing_flag,
+     {"Multiplexing Flag", "wlan.trigger.he.multiplexing_flag",
+      FT_UINT40, BASE_HEX, NULL, 0x8000000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b45,
-     {"U-APSD Coexistence", "wlan.extcap.b45",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dep_nfrp_user_info,
+     {"NFRP Trigger Dependent User Unfo", "wlan.trigger.he.nfrp_user_info",
+      FT_UINT40, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b46,
-     {"WNM Notification", "wlan.extcap.b46",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_feedback_seg_retrans_bm,
+     {"Feedback Segment Retransmission Bitmap", "wlan.trigger.he.feedback_bm",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b47,
-     {"QAB Capability", "wlan.extcap.b47",
-      FT_UINT8, BASE_HEX, NULL, 0x80,
-      "AP supports QAB", HFILL }},
+    {&hf_ieee80211_he_trigger_aid12,
+     {"AID12", "wlan.trigger.he.user_info.aid12",
+      FT_UINT40, BASE_HEX, NULL, 0x0000000FFF, NULL, HFILL }},
 
-    /* Extended Capability octet 7 */
-    {&hf_ieee80211_tag_extended_capabilities_b48,
-     {"UTF-8 SSID", "wlan.extcap.b48",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
-      "The SSID in this BSS is interpreted using UTF-8 encoding", HFILL }},
+    {&hf_ieee80211_he_trigger_ru_allocation,
+     {"RU Allocation", "wlan.trigger.he.ru_allocation",
+      FT_UINT40, BASE_HEX, NULL, 0x00000FF000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b49,
-     {"QMFActivated", "wlan.extcap.b49",
-      FT_BOOLEAN, 8, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_coding_type,
+     {"Coding Type", "wlan.trigger.he.coding_type",
+      FT_BOOLEAN, 40, TFS(&he_trigger_coding_type_tfs), 0x0000100000,
+        NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b50,
-     {"QMFReconfigurationActivated", "wlan.extcap.b50",
-      FT_BOOLEAN, 8, NULL, 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_mcs,
+     {"MCS", "wlan.trigger.he.mcs",
+      FT_UINT40, BASE_HEX, NULL, 0x0001E00000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b51,
-     {"Robust AV Streaming", "wlan.extcap.b51",
-      FT_BOOLEAN, 8, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_dcm,
+     {"DCM", "wlan.trigger.he.dcm",
+      FT_BOOLEAN, 40, NULL, 0x0002000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b52,
-     {"Advanced GCR", "wlan.extcap.b52",
-      FT_BOOLEAN, 8, NULL, 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_ss_allocation,
+     {"SS Alloc/Random Access RU Info", "wlan.trigger.he.ss_alloc",
+      FT_UINT40, BASE_HEX, NULL, 0x00FC000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b53,
-     {"Mesh GCR", "wlan.extcap.b53",
-      FT_BOOLEAN, 8, NULL, 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_target_rssi,
+     {"Target RSSI", "wlan.trigger.he.target_rssi",
+      FT_UINT40, BASE_CUSTOM, CF_FUNC(target_rssi_base_custom), 0x7F00000000,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b54,
-     {"SCS", "wlan.extcap.b54",
-      FT_BOOLEAN, 8, NULL, 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_trigger_user_reserved,
+     {"Reserved", "wlan.trigger.he.user_reserved",
+      FT_UINT40, BASE_HEX, NULL, 0x8000000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b55,
-     {"QLoad Report", "wlan.extcap.b55",
-      FT_BOOLEAN, 8, NULL, 0x80,
+    {&hf_he_ndp_sounding_dialog_token_number,
+     {"Sounding Dialog Token Number", "wlan.he_ndp.token.number",
+      FT_UINT8, BASE_DEC, NULL, 0xFC,
       NULL, HFILL }},
 
-    /* Extended Capability octet 8 */
-    {&hf_ieee80211_tag_extended_capabilities_b56,
-     {"Alternate EDCA", "wlan.extcap.b56",
-      FT_BOOLEAN, 8, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_he_subfield,
+     {"HE", "wlan.vht_he.token.he",
+      FT_BOOLEAN, 8, TFS(&he_ndp_annc_he_subfield_vals), 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b57,
-     {"Unprotected TXOP Negotiation", "wlan.extcap.b57",
-      FT_BOOLEAN, 8, NULL, 0x02,
+    {&hf_he_ndp_annc_reserved,
+     {"Reserved", "wlan.he_ndp.token.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b58,
-     {"Protected TXOP Negotiation", "wlan.extcap.b58",
-      FT_BOOLEAN, 8, NULL, 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_ndp_annc_token,
+     {"Sounding Dialog Token", "wlan.he_ndp.token",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b59,
-     {"Reserved", "wlan.extcap.b59",
-      FT_UINT8, BASE_HEX, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_he_ndp_annc_sta,
+     {"STA Info", "wlan.he_ndp.sta_info",
+      FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b60,
-     {"Protected QLoad Report", "wlan.extcap.b61",
-      FT_BOOLEAN, 8, NULL, 0x10,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_aid11,
+     {"AID11", "wlan.he_ndp.sta_info.aid11",
+      FT_UINT32, BASE_HEX, NULL, 0x000007FF, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b61,
-     {"TDLS Wider Bandwidth", "wlan.extcap.b61",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_partial_bw_info,
+     {"Partial BW Info", "wlan.he_ndp.sta_info.partial_bw_info",
+      FT_UINT32, BASE_CUSTOM, CF_FUNC(partial_bw_info_base_custom), 0x01FFF800,
+       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b62,
-     {"Operating Mode Notification", "wlan.extcap.b62",
-      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_feedback_type_and_ng,
+     {"Feedback Type and Ng", "wlan.he_ndp.sta_info.feedback_type_and_ng",
+      FT_UINT32, BASE_HEX, NULL, 0x06000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b63,
-     {"Max Number Of MSDUs In A-MSDU", "wlan.extcap.b63",
-      FT_UINT8, BASE_DEC, NULL, 0x80,
-      "Part 1 (bit63)", HFILL }},
+    {&hf_he_ndp_annc_disambiguation,
+     {"Disambiguation", "wlan.he_ndp.sta_info.disambiguation",
+      FT_UINT32, BASE_HEX, NULL, 0x08000000, NULL, HFILL }},
 
-    /* Extended Capability octets 8 & 9 */
-    {&hf_ieee80211_tag_extended_capabilities_2,
-     {"Extended Capabilities", "wlan.extcap",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_codebook_size,
+     {"Codebook Size", "wlan.he_ndp.sta_info.codebook_size",
+      FT_UINT32, BASE_HEX, NULL, 0x10000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b56_2,
-     {"Alternate EDCA", "wlan.extcap.b56",
-      FT_BOOLEAN, 16, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_he_ndp_annc_nc,
+     {"Nc", "wlan.he_ndp.sta_info.nc",
+      FT_UINT32, BASE_HEX, NULL, 0xE0000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b57_2,
-     {"Unprotected TXOP Negotiation", "wlan.extcap.b57",
-      FT_BOOLEAN, 16, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_ht_lac,
+     {"Link Adaptation Control (LAC)", "wlan.htc.lac",
+      FT_UINT32, BASE_HEX, NULL, 0x0000FFFE,
+      "High Throughput Control Link Adaptation Control (LAC)", HFILL }},
+
+    {&hf_ieee80211_htc_lac_trq,
+     {"Training Request (TRQ)", "wlan.htc.lac.trq",
+      FT_BOOLEAN, 16, TFS(&htc_lac_trq_flag), 0x0002,
+      "High Throughput Control Link Adaptation Control Training Request (TRQ)", HFILL }},
+
+    {&hf_ieee80211_htc_lac_mai_aseli,
+     {"Antenna Selection Indication (ASELI)", "wlan.htc.lac.mai.aseli",
+      FT_UINT16, BASE_HEX, NULL, 0x003C,
+      "High Throughput Control Link Adaptation Control MAI Antenna Selection Indication", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b58_2,
-     {"Protected TXOP Negotiation", "wlan.extcap.b58",
-      FT_BOOLEAN, 16, NULL, 0x04,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_mai_mrq,
+     {"MCS Request (MRQ)", "wlan.htc.lac.mai.mrq",
+      FT_BOOLEAN, 16, TFS(&htc_lac_mai_mrq_flag), 0x0004,
+      "High Throughput Control Link Adaptation Control MAI MCS Request", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b59_2,
-     {"Reserved", "wlan.extcap.b59",
-      FT_UINT16, BASE_HEX, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_mai_msi,
+     {"MCS Request Sequence Identifier (MSI)", "wlan.htc.lac.mai.msi",
+      FT_UINT16, BASE_HEX, NULL, 0x0038,
+      "High Throughput Control Link Adaptation Control MAI MCS Request Sequence Identifier", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b60_2,
-     {"Protected QLoad Report", "wlan.extcap.b61",
-      FT_BOOLEAN, 16, NULL, 0x10,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_mai_reserved,
+     {"Reserved", "wlan.htc.lac.mai.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0x0038,
+      "High Throughput Control Link Adaptation Control MAI Reserved", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b61_2,
-     {"TDLS Wider Bandwidth", "wlan.extcap.b61",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x20,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_mfsi,
+     {"MCS Feedback Sequence Identifier (MFSI)", "wlan.htc.lac.mfsi",
+      FT_UINT16, BASE_DEC, NULL, 0x01C0,
+      "High Throughput Control Link Adaptation Control MCS Feedback Sequence Identifier (MSI)", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b62_2,
-     {"Operating Mode Notification", "wlan.extcap.b62",
-      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x40,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_asel_command,
+     {"Antenna Selection (ASEL) Command", "wlan.htc.lac.asel.command",
+      FT_UINT16, BASE_HEX, VALS(ieee80211_htc_lac_asel_command_flags), 0x0E00,
+      "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Command", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_max_num_msdus,
-     {"Max Number Of MSDUs In A-MSDU", "wlan.extcap.b63",
-      FT_UINT16, BASE_DEC, NULL, 0x0180,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_asel_data,
+     {"Antenna Selection (ASEL) Data", "wlan.htc.lac.asel.data",
+      FT_UINT16, BASE_HEX, NULL, 0xF000,
+      "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Data", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b65_2,
-     {"Channel Schedule Management", "wlan.extcap.b65",
-      FT_BOOLEAN, 16, NULL, 0x0200,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_lac_mfb,
+     {"MCS Feedback (MFB)", "wlan.htc.lac.mfb",
+      FT_UINT16, BASE_HEX, NULL, 0xFE00,
+      "High Throughput Control Link Adaptation Control MCS Feedback", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b66_2,
-     {"Geodatabase Inband Enabling Signal", "wlan.extcap.b66",
-      FT_BOOLEAN, 16, NULL, 0x0400,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_cal_pos,
+     {"Calibration Position", "wlan.htc.cal.pos",
+      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_cal_pos_flags), 0x00030000,
+      "High Throughput Control Calibration Position", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b67_2,
-     {"Network Channel Control", "wlan.extcap.b67",
-      FT_BOOLEAN, 16, NULL, 0x0800,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_cal_seq,
+     {"Calibration Sequence Identifier", "wlan.htc.cal.seq",
+      FT_UINT32, BASE_DEC, NULL, 0x000C0000,
+      "High Throughput Control Calibration Sequence Identifier", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b68_2,
-     {"White Space Map", "wlan.extcap.b68",
-      FT_BOOLEAN, 16, NULL, 0x1000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_reserved1,
+     {"Reserved", "wlan.htc.reserved1",
+      FT_UINT32, BASE_HEX, NULL, 0x00300000,
+      "High Throughput Control Reserved", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b69_2,
-     {"Channel Availability Query", "wlan.extcap.b69",
-      FT_BOOLEAN, 16, NULL, 0x2000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_csi_steering,
+     {"CSI/Steering", "wlan.htc.csi_steering",
+      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_csi_steering_flags), 0x00C00000,
+      "High Throughput Control CSI/Steering", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b70_2,
-     {"Fine Timing Measurement Responder", "wlan.extcap.b70",
-      FT_BOOLEAN, 16, NULL, 0x4000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_ndp_announcement,
+     {"NDP Announcement", "wlan.htc.ndp_announcement",
+      FT_BOOLEAN, 32, TFS(&ieee80211_htc_ndp_announcement_flag), 0x01000000,
+      "High Throughput Control NDP Announcement", HFILL }},
 
-    {&hf_ieee80211_tag_extended_capabilities_b71_2,
-     {"Fine Timing Measurement Initiator", "wlan.extcap.b71",
-      FT_BOOLEAN, 16, NULL, 0x8000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_reserved2,
+     {"Reserved", "wlan.htc.reserved2",
+      FT_UINT32, BASE_HEX, NULL, 0x3E000000,
+      "High Throughput Control Reserved", HFILL }},
 
-    {&hf_ieee80211_tag_cisco_ccx1_unknown,
-     {"Unknown", "wlan.cisco.ccx1.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_mrq,
+     {"MRQ", "wlan.htc.mrq",
+      FT_BOOLEAN, 32, NULL, HTC_MRQ,
+      "VHT-MCS feedback request", HFILL }},
 
-    {&hf_ieee80211_tag_cisco_ccx1_name,
-     {"Name", "wlan.cisco.ccx1.name",
-      FT_STRING, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_msi,
+     {"MSI", "wlan.htc.msi",
+      FT_UINT32, BASE_DEC, NULL, 0x00000038,
+      "MRQ sequence number", HFILL }},
 
-    {&hf_ieee80211_tag_cisco_ccx1_clients,
-     {"Clients", "wlan.cisco.ccx1.clients",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_htc_msi_stbc_reserved,
+     {"Reserved", "wlan.htc.msi_stbc_reserved",
+      FT_UINT32, BASE_HEX, NULL, 0x00000038,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_cisco_ccx1_unknown2,
-     {"Unknown2", "wlan.cisco.ccx1.unknown2",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_htc_compressed_msi,
+     {"Compressed MSI", "wlan.htc.compressed_msi",
+      FT_UINT32, BASE_DEC, NULL, 0x00000018,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid,
-     {"BSSID", "wlan.nreport.bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_htc_ppdu_stbc_encoded,
+     {"PPDU was STBC encoded", "wlan.htc.ppdu_stbc_encoded",
+      FT_BOOLEAN, 32, NULL, 0x00000020,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info,
-     {"BSSID Information", "wlan.nreport.bssid.info",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_mfsi,
+     {"MFSI", "wlan.htc.mfsi",
+      FT_BOOLEAN, 32, NULL, 0x000001C0,
+      "MFB sequence identifier", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_reachability,
-     {"AP Reachability", "wlan.nreport.bssid.info.reachability",
-      FT_UINT32, BASE_HEX, VALS(ieee80211_neighbor_report_bssid_info_reachability_vals), 0x00000003,
-      "Indicates whether the AP identified by this BSSID is reachable by the STA that requested the neighbor report", HFILL }},
+    {&hf_ieee80211_htc_gid_l,
+     {"GID-L", "wlan.htc.gid_l",
+      FT_BOOLEAN, 32, NULL, 0x000001C0,
+      "LSBs of group ID", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_security,
-     {"Security", "wlan.nreport.bssid.info.security",
-      FT_BOOLEAN, 32, NULL, 0x00000004,
-      "Indicates that the AP identified by this BSSID supports the same security provisioning as used by the STA in its current association", HFILL }},
+    {&hf_ieee80211_htc_mfb,
+     {"MFB", "wlan.htc.mfb",
+      FT_UINT32, BASE_HEX, NULL, 0x00FFFE00,
+      "Recommended MFB", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_key_scope,
-     {"Key Scope", "wlan.nreport.bssid.info.keyscope",
-      FT_BOOLEAN, 32, NULL, 0x00000008,
-      "indicates the AP indicated by this BSSID has the same authenticator as the AP sending the report", HFILL }},
+    {&hf_ieee80211_htc_num_sts,
+     {"NUM_STS", "wlan.htc.num_sts",
+      FT_UINT32, BASE_DEC, NULL, 0x00000E00,
+      "Recommended NUM_STS", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability,
-     {"Capability", "wlan.nreport.bssid.info.capability",
-      FT_UINT32, BASE_HEX, NULL, 0x000003F0,
-      "Contains selected capability information for the AP indicated by this BSSID", HFILL }},
+    {&hf_ieee80211_htc_vht_mcs,
+     {"VHT-MCS", "wlan.htc.vht_mcs",
+      FT_UINT32, BASE_DEC, NULL, 0x0000F000,
+      "Recommended VHT-MCS", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_spec_mng,
-     {"Spectrum Management", "wlan.nreport.bssid.info.capability.specmngt",
-      FT_BOOLEAN, 32, NULL, 0x00000010,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_bw,
+     {"BW", "wlan.htc.bw",
+      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_bw_recommended_vht_mcs_vals), 0x00030000,
+      "Bandwidth for recommended VHT-MCS", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_qos,
-     {"QoS", "wlan.nreport.bssid.info.capability.qos",
-      FT_BOOLEAN, 32, NULL, 0x00000020,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_snr,
+     {"SNR", "wlan.htc.snr",
+      FT_INT32, BASE_DEC, NULL, 0x00FC0000,
+      "Average SNR + 22", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_apsd,
-     {"APSD", "wlan.nreport.bssid.info.capability.apsd",
-      FT_BOOLEAN, 32, NULL, 0x00000040,
+    {&hf_ieee80211_htc_reserved3,
+     {"Reserved", "wlan.htc.reserved3",
+      FT_UINT32, BASE_HEX, NULL, 0x1F000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_radio_msnt,
-     {"Radio Measurement", "wlan.nreport.bssid.info.capability.radiomsnt",
-      FT_BOOLEAN, 32, NULL, 0x00000080,
+    {&hf_ieee80211_htc_gid_h,
+     {"GID-H", "wlan.htc.gid_h",
+      FT_UINT32, BASE_DEC, NULL, 0x07000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_dback,
-     {"Delayed Block Ack", "wlan.nreport.bssid.info.capability.dback",
-      FT_BOOLEAN, 32, NULL, 0x000000100,
+    {&hf_ieee80211_htc_coding_type,
+     {"Coding type", "wlan.htc.coding_type",
+      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_coding_type_vals), 0x08000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_iback,
-     {"Immediate Block Ack", "wlan.nreport.bssid.info.capability.iback",
-      FT_BOOLEAN, 32, NULL, 0x00000200,
+    {&hf_ieee80211_htc_fb_tx_type,
+     {"FB Tx type", "wlan.htc.fb_tx_type",
+      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_fb_tx_type_vals), 0x10000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_mobility_domain,
-     {"Mobility Domain", "wlan.nreport.bssid.info.mobilitydomain",
-      FT_BOOLEAN, 32, NULL, 0x00000400,
-      "", HFILL }},
-
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_high_throughput,
-     {"High Throughput Control (+HTC)", "wlan.nreport.bssid.info.hthoughput",
-      FT_BOOLEAN, 32, NULL, 0x00000800,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_unsolicited_mfb,
+     {"Unsolicited MFB", "wlan.htc.unsolicited_mfb",
+      FT_BOOLEAN, 32, NULL, HTC_UNSOLICITED_MFB,
+      "High Throughput Control Unsolicited MFB", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_very_high_throughput,
-     {"Very High Throughput (+VHT)", "wlan.nreport.bssid.info.vht",
-      FT_BOOLEAN, 32, NULL, 0x00001000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_ac_constraint,
+     {"AC Constraint", "wlan.htc.ac_constraint",
+      FT_BOOLEAN, 32, NULL, 0x40000000,
+      "High Throughput Control AC Constraint", HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_ftm,
-     {"Fine Timing Measurement (FTM)", "wlan.nreport.bssid.info.ftm",
-      FT_BOOLEAN, 32, NULL, 0x00002000,
-      NULL, HFILL }},
+    {&hf_ieee80211_htc_rdg_more_ppdu,
+     {"RDG/More PPDU", "wlan.htc.rdg_more_ppdu",
+      FT_BOOLEAN, 32, NULL, 0x80000000,
+      "High Throughput Control RDG/More PPDU", HFILL }},
+    /* End: HT Control (+HTC) */
 
-    {&hf_ieee80211_tag_neighbor_report_bssid_info_reserved,
-     {"Reserved", "wlan.nreport.bssid.info.reserved",
-      FT_UINT32, BASE_HEX, NULL, 0xFFFFC000,
-      "Must be zero", HFILL }},
+    /* MDIE */
+    {&hf_ieee80211_tag_mobility_domain_mdid,
+     {"Mobility Domain Identifier", "wlan.mobility_domain.mdid",
+      FT_UINT16, BASE_HEX, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_ope_class,
-     {"Operating Class", "wlan.nreport.opeclass",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_mobility_domain_ft_capab,
+     {"FT Capability and Policy", "wlan.mobility_domain.ft_capab",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_channel_number,
-     {"Channel Number", "wlan.nreport.channumber",
-      FT_UINT8, BASE_CUSTOM, CF_FUNC(channel_number_custom), 0,
+    {&hf_ieee80211_tag_mobility_domain_ft_capab_ft_over_ds,
+     {"Fast BSS Transition over DS",
+      "wlan.mobility_domain.ft_capab.ft_over_ds",
+      FT_UINT8, BASE_HEX, NULL, 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_phy_type,
-     {"PHY Type", "wlan.nreport.phytype",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_mobility_domain_ft_capab_resource_req,
+     {"Resource Request Protocol Capability",
+      "wlan.mobility_domain.ft_capab.resource_req",
+      FT_UINT8, BASE_HEX, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_id,
-     {"Subelement ID", "wlan.nreport.subelement_id",
-      FT_UINT8, BASE_HEX, VALS(ieee80211_neighbor_report_subelement_id_vals), 0,
+    /* FTIE */
+    {&hf_ieee80211_tag_ft_mic_control,
+     {"MIC Control", "wlan.ft.mic_control",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_length,
-     {"Length", "wlan.nreport.subelement_length",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_ft_element_count,
+     {"Element Count", "wlan.ft.element_count",
+      FT_UINT16, BASE_DEC, NULL, 0xff00,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_data,
-     {"Subelement Data", "wlan.nreport.subelement_data",
+    {&hf_ieee80211_tag_ft_mic,
+     {"MIC", "wlan.ft.mic",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_bss_trn_can_pref,
-     {"Preference", "wlan.nreport.subelement.bss_trn_can_pref",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_anonce,
+     {"ANonce", "wlan.ft.anonce",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_bss_ter_tsf,
-     {"BSS Termination TSF", "wlan.nreport.subelement.bss_ter_tsf",
-      FT_UINT64, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_snonce,
+     {"SNonce", "wlan.ft.snonce",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_neighbor_report_subelement_bss_dur,
-     {"Duration", "wlan.nreport.subelement.bss_dur",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_id,
+     {"Subelement ID", "wlan.ft.subelem.id",
+      FT_UINT8, BASE_DEC, VALS(ft_subelem_id_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supported_ope_classes_current,
-     {"Current Operating Class", "wlan.supopeclass.current",
+    {&hf_ieee80211_tag_ft_subelem_len,
+     {"Length", "wlan.ft.subelem.len",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_supported_ope_classes_alternate,
-     {"Alternate Operating Classes", "wlan.supopeclass.alt",
-      FT_NONE, BASE_NONE, 0x0, 0,
+    {&hf_ieee80211_tag_ft_subelem_data,
+     {"Data", "wlan.ft.subelem.data",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_type,
-     {"Type", "wlan.wfa.ie.type",
-      FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_type_vals), 0,
+    {&hf_ieee80211_tag_ft_subelem_r1kh_id,
+     {"PMK-R1 key holder identifier (R1KH-ID)", "wlan.ft.subelem.r1kh_id",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_version,
-     {"WPA Version", "wlan.wfa.ie.wpa.version",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_gtk_key_info,
+     {"Key Info", "wlan.ft.subelem.gtk.key_info",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_mcs,
-     {"Multicast Cipher Suite", "wlan.wfa.ie.wpa.mcs",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_mcs_base_custom), 0,
-      "Contains the cipher suite selector used by the BSS to protect broadcast/multicasttraffic", HFILL }},
-
-    {&hf_ieee80211_wfa_ie_wpa_mcs_oui,
-     {"Multicast Cipher Suite OUI", "wlan.wfa.ie.wpa.mcs.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_gtk_key_id,
+     {"Key ID", "wlan.ft.subelem.gtk.key_id",
+      FT_UINT16, BASE_DEC, NULL, 0x0003,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_mcs_type,
-     {"Multicast Cipher Suite type", "wlan.wfa.ie.wpa.mcs.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_gtk_key_length,
+     {"Key Length", "wlan.ft.subelem.gtk.key_length",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_mcs_wfa_type,
-     {"Multicast Cipher Suite type", "wlan.wfa.ie.wpa.mcs.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0,
+    {&hf_ieee80211_tag_ft_subelem_gtk_rsc,
+     {"RSC", "wlan.ft.subelem.gtk.rsc",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_ucs_count,
-     {"Unicast Cipher Suite Count", "wlan.wfa.ie.wpa.ucs.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the number of pairwise cipher suite selectors that are contained in the Unicast Cipher Suite List", HFILL }},
-
-    {&hf_ieee80211_wfa_ie_wpa_ucs_list,
-     {"Unicast Cipher Suite List", "wlan.wfa.ie.wpa.ucs.list",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "Contains a series of cipher suite selectors that indicate the Unicast cipher suites", HFILL }},
+    {&hf_ieee80211_tag_ft_subelem_gtk_key,
+     {"GTK", "wlan.ft.subelem.gtk.key",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_ucs,
-     {"Unicast Cipher Suite", "wlan.wfa.ie.wpa.ucs",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_ucs_base_custom), 0,
+    {&hf_ieee80211_tag_ft_subelem_r0kh_id,
+     {"PMK-R0 key holder identifier (R0KH-ID)", "wlan.ft.subelem.r0kh_id",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_ucs_oui,
-     {"Unicast Cipher Suite OUI", "wlan.wfa.ie.wpau.cs.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_igtk_key_id,
+     {"Key ID", "wlan.ft.subelem.igtk.key_id",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_ucs_type,
-     {"Unicast Cipher Suite type", "wlan.wfa.ie.wpa.ucs.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_ft_subelem_igtk_ipn,
+     {"IPN", "wlan.ft.subelem.igtk.ipn",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_ucs_wfa_type,
-     {"Unicast Cipher Suite type", "wlan.wfa.ie.wpa.ucs.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0,
+    {&hf_ieee80211_tag_ft_subelem_igtk_key_length,
+     {"Key Length", "wlan.ft.subelem.igtk.key_length",
+      FT_UINT8, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms_count,
-     {"Auth Key Management (AKM) Suite Count", "wlan.wfa.ie.wpa.akms.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }},
+    {&hf_ieee80211_tag_ft_subelem_igtk_key,
+     {"Wrapped Key (IGTK)", "wlan.ft.subelem.igtk.key",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms_list,
-     {"Auth Key Management (AKM) List", "wlan.wfa.ie.wpa.akms.list",
-      FT_NONE, BASE_NONE, NULL, 0,
-      "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }},
+    /* RIC Data IE: 802.11-2012: 8.4.2.52 */
+    {&hf_ieee80211_tag_ric_data_id,
+     {"Resource Handshake Identifier", "wlan.ric_data.id",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms,
-     {"Auth Key Management (AKM) Suite", "wlan.wfa.ie.wpa.akms",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(wpa_akms_base_custom), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_ric_data_desc_cnt,
+     {"Resource Descriptor Count", "wlan.ric_data.desc_cnt",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms_oui,
-     {"Auth Key Management (AKM) OUI", "wlan.wfa.ie.wpa.akms.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_ric_data_status_code,
+     {"Status Code", "wlan.ric_data.status_code",
+      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_status_code_ext, 0,
+      "Status of requested Resource", HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms_type,
-     {"Auth Key Management (AKM) type", "wlan.wfa.ie.wpa.akms.type",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    /* OBSS IE: 802.11-2012: 8.4.2.61 */
+    {&hf_ieee80211_tag_obss_spd,
+     {"Scan Passive Dwell", "wlan.obss.spd",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wpa_akms_wfa_type,
-     {"Auth Key Management (AKM) type", "wlan.wfa.ie.wpa.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_keymgmt_vals), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_sad,
+     {"Scan Active Dwell", "wlan.obss.sad",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_subtype,
-     {"WME Subtype", "wlan.wfa.ie.wme.subtype",
-      FT_UINT8, BASE_DEC, VALS(ieee802111_wfa_ie_wme_type), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_cwtsi,
+     {"Channel Width Trigger Scan Interval", "wlan.obss.cwtsi",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_version,
-     {"WME Version", "wlan.wfa.ie.wme.version",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_sptpc,
+     {"Scan Passive Total Per Channel", "wlan.obss.sptpc",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info,
-     {"WME QoS Info", "wlan.wfa.ie.wme.qos_info",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_satpc,
+     {"Scan Active Total Per Channel", "wlan.obss.satpc",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_max_sp_length,
-     {"Max SP Length", "wlan.wfa.ie.wme.qos_info.sta.max_sp_length",
-      FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_wme_qos_info_sta_max_sp_length_vals), 0x60,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_wctdf,
+     {"Width Channel Transition Delay Factor", "wlan.obss.wctdf",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_be,
-     {"AC_BE", "wlan.wfa.ie.wme.qos_info.sta.ac_be",
-      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x08,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_obss_sat,
+     {"Scan Activity Threshold", "wlan.obss.sat",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_bk,
-     {"AC_BK", "wlan.wfa.ie.wme.qos_info.sta.ac_bk",
-      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x04,
-      NULL, HFILL }},
+    /* Group Data Cypher Suite: 802.11-2012: 8.4.2.25.1 */
+    {&hf_group_data_cipher_suite_oui,
+     {"Group Data Cypher Suite OUI", "wlan.osen.gdcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vi,
-     {"AC_VI", "wlan.wfa.ie.wme.qos_info.sta.ac_vi",
-      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x02,
-      NULL, HFILL }},
+    /* TODO: List the suite names ... */
+    {&hf_group_data_cipher_suite_type,
+     {"Group Data Cypher Suite type", "wlan.osen.gdcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vo,
-     {"AC_VO", "wlan.wfa.ie.wme.qos_info.sta.ac_vo",
-      FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x01,
-      NULL, HFILL }},
+    {&hf_osen_pcs_count,
+     {"OSEN Pairwise Cipher Suite Count", "wlan.osen.pwcs.count",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_sta_reserved,
-     {"Reserved", "wlan.wfa.ie.wme.qos_info.sta.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0x90,
-      "Must Be Zero", HFILL }},
+    {&hf_osen_pairwise_cipher_suite_oui,
+     {"OSEN Pairwise Cypher Suite OUI", "wlan.osen.pwcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_u_apsd,
-     {"U-APSD", "wlan.wfa.ie.wme.qos_info.ap.u_apsd",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80,
-      "Indicates the WMM AP is currently supporting unscheduled automatic power save delivery", HFILL }},
+    {&hf_osen_pairwise_cipher_suite_type,
+     {"OSEN Pairwise Cypher Suite type", "wlan.osen.pwcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_parameter_set_count,
-     {"Parameter Set Count", "wlan.wfa.ie.wme.qos_info.ap.parameter_set_count",
-      FT_UINT8, BASE_HEX, NULL, 0x0F,
-      NULL, HFILL }},
+    {&hf_osen_akm_count,
+     {"OSEN AKM Cipher Suite Count", "wlan.osen.akms.count",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_qos_info_ap_reserved,
-     {"Reserved", "wlan.wfa.ie.wme.qos_info.ap.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0x70,
-      "Must Be Zero", HFILL }},
+    {&hf_osen_akm_cipher_suite_oui,
+     {"OSEN AKM Cipher Suite OUI", "wlan.osen.akms.oui",
+      FT_UINT24, BASE_OUI, NULL, 0, NULL, HFILL }},
+
+    {&hf_osen_akm_cipher_suite_type,
+     {"OSEN AKM Cipher Suite Type", "wlan.osen.akms.type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+    {&hf_osen_rsn_cap_preauth,
+     {"RSN Pre-Auth capabilities", "wlan.osen.rsn.capabilities.preauth",
+      FT_BOOLEAN, 16, TFS(&rsn_preauth_flags), 0x0001, NULL, HFILL }},
+
+    {&hf_osen_rsn_cap_no_pairwise,
+     {"RSN No Pairwise capabilities", "wlan.osen.rsn.capabilities.no_pairwise",
+      FT_BOOLEAN, 16, TFS(&rsn_no_pairwise_flags), 0x0002, NULL, HFILL }},
+
+    {&hf_osen_rsn_cap_ptksa_replay_counter,
+     {"RSN PTKSA Replay Counter capabilities",
+                "wlan.osen.rsn.capabilities.ptksa_replay_counter",
+      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_reserved,
-     {"Reserved", "wlan.wfa.ie.wme.reserved",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "Must Be Zero", HFILL }},
+    {&hf_osen_rsn_cap_gtksa_replay_counter,
+     {"RSN GTKSA Replay Counter capabilities",
+                "wlan.osen.rsn.capabilities.gtksa_replay_counter",
+      FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_ac_parameters,
-     {"Ac Parameters", "wlan.wfa.ie.wme.acp",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_osen_group_management_cipher_suite_oui,
+     {"OSEN Group Management Cipher Suite OUI", "wlan.osen.gmcs.oui",
+      FT_UINT24, BASE_OUI, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_aci_aifsn,
-     {"ACI / AIFSN Field", "wlan.wfa.ie.wme.acp.aci_aifsn",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_osen_group_management_cipher_suite_type,
+     {"OSEN Group Management Cipher Suite Type", "wlan.osen.gmcs.type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_aci,
-     {"ACI", "wlan.wfa.ie.wme.acp.aci",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wme_acs_vals), 0x60,
-      NULL, HFILL }},
+    {&hf_osen_rsn_cap_mfpr,
+     {"Management Frame Protection Required", "wlan.osen.rsn.capabilities.mfpr",
+      FT_BOOLEAN, 16, TFS(&tfs_required_not_required), 0x0040, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_acm,
-     {"Admission Control Mandatory", "wlan.wfa.ie.wme.acp.acm",
-      FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
-      NULL, HFILL }},
+    {&hf_osen_rsn_cap_mfpc,
+     {"Management Frame Protection Capable", "wlan.osen.rsn.capabilities.mfpc",
+      FT_BOOLEAN, 16, TFS(&tfs_capable_not_capable), 0x0080, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_aifsn,
-     {"AIFSN", "wlan.wfa.ie.wme.acp.aifsn",
-      FT_UINT8, BASE_DEC, NULL, 0x0F,
-      NULL, HFILL }},
+    {&hf_osen_rsn_cap_jmr,
+     {"Joint Multi-band RSNA", "wlan.osen.rsn.capabilities.jmr",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0100, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_reserved,
-     {"Reserved", "wlan.wfa.ie.wme.acp.reserved",
-      FT_UINT8, BASE_DEC, NULL, 0x80,
-      "Must be Zero", HFILL }},
+    {&hf_osen_rsn_cap_peerkey,
+     {"PeerKey Enabled", "wlan.osen.rsn.capabilities.peerkey",
+      FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), 0x200, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_ecw,
-     {"ECW", "wlan.wfa.ie.wme.acp.ecw",
-      FT_UINT8, BASE_HEX, NULL, 0x00,
-      NULL, HFILL }},
+    {&hf_osen_rsn_cap_flags,
+     {"RSN Capability Flags", "wlan.osen.rsn.cabailities.flags",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_ecw_max,
-     {"ECW Max", "wlan.wfa.ie.wme.acp.ecw.max",
-      FT_UINT8, BASE_DEC, NULL, 0xF0,
-      NULL, HFILL }},
+    {&hf_osen_rsn_spp_a_msdu_capable,
+     {"SPP A-MSDU Capable", "wlan.osen.rsn.capabilities.spp_a_msdu_cap",
+      FT_BOOLEAN, 16, TFS(&tfs_capable_not_capable), 0x0400, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_ecw_min,
-     {"ECW Min", "wlan.wfa.ie.wme.acp.ecw.min",
-      FT_UINT8, BASE_DEC, NULL, 0x0F,
-      NULL, HFILL }},
+    {&hf_osen_rsn_spp_a_msdu_required,
+     {"SPP A-MSDU Required", "wlan.osen.rsn.capabilities.spp_a_msdu_req",
+      FT_BOOLEAN, 16, TFS(&tfs_required_not_required), 0x0800, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_cw_max,
-     {"CW Max", "wlan.wfa.ie.wme.acp.cw.max",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_osen_rsn_pbac,
+     {"Protected Block Ack Agreement Capable", "wlan.osen.rsn.capabilities.pbac",
+      FT_BOOLEAN, 16, TFS(&tfs_capable_not_capable), 0x1000, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_cw_min,
-     {"CW Min", "wlan.wfa.ie.wme.acp.cw.min",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_osen_extended_key_id_iaf,
+     {"Extended Key ID for Individually Addressed Frames",
+                "wlan.osn.rsn.extended_key_id_iaf",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_acp_txop_limit,
-     {"TXOP Limit", "wlan.wfa.ie.wme.acp.txop_limit",
-      FT_UINT16, BASE_DEC, NULL, 0x00,
-      NULL, HFILL }},
+    {&hf_osen_reserved,
+     {"Reserved", "wlan.osen.rsn.capabilities.reserved",
+      FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo,
-     {"TS Info", "wlan.wfa.ie.wme.tspec.ts_info",
-      FT_UINT24, BASE_HEX, NULL, 0,
-      "Traffic Stream (TS) Info", HFILL }},
+    {&hf_osen_pmkid_count,
+     {"OSEN PMKID Count", "wlan.osen.pmkid.count",
+      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_tid,
-     {"TID", "wlan.wfa.ie.wme.tspec.ts_info.tid",
-      FT_UINT24, BASE_DEC, NULL, 0x00001E,
-      "Traffic Stream Info ID (TID)", HFILL }},
+    {&hf_osen_pmkid,
+     {"OSEN PKMID", "wlan.osen.pmkid.bytes",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_direction,
-     {"Direction", "wlan.wfa.ie.wme.tspec.ts_info.dir",
-      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_direction_vals), 0x000060,
-      "Traffic Stream (TS) Info Direction", HFILL }},
+    /* RIC Descriptor IE: 802.11-2012: 8.4.2.53 */
+    {&hf_ieee80211_tag_ric_desc_rsrc_type,
+     {"Resource Type", "wlan.ric_desc.rsrc_type",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_psb,
-     {"PSB", "wlan.wfa.ie.wme.tspec.ts_info.psb",
-      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_psb_vals), 0x000400,
-      "Traffic Stream (TS) Info Power Save Behavior (PSB)", HFILL }},
+    {&hf_ieee80211_tag_ric_desc_var_params,
+     {"Variable Params", "wlan.ric_desc.var_params",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_up,
-     {"UP", "wlan.wfa.ie.wme.tspec.ts_info.up",
-      FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_up_vals), 0x003800,
-      "Traffic Stream (TS) Info User Priority (UP)", HFILL }},
+    /* MMIE */
+    {&hf_ieee80211_tag_mmie_keyid,
+     {"KeyID", "wlan.mmie.keyid",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_reserved,
-     {"Reserved", "wlan.wfa.ie.wme.tspec.ts_info.reserved",
-      FT_UINT24, BASE_HEX, NULL, 0xFFC381,
-      "Must be Zero", HFILL }},
+    {&hf_ieee80211_tag_mmie_ipn,
+     {"IPN", "wlan.mmie.ipn",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_nor_msdu,
-     {"Normal MSDU Size", "wlan.wfa.ie.wme.tspec.nor_msdu",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_mmie_mic,
+     {"MIC", "wlan.mmie.mic",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_max_msdu,
-     {"Maximum MSDU Size", "wlan.wfa.ie.wme.tspec.max_msdu",
+    /* WAPI Parameter Set*/
+    {&hf_ieee80211_tag_wapi_param_set_version,
+     {"Version", "wlan.wapi.version",
       FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_min_srv,
-     {"Minimum Service Interval", "wlan.wfa.ie.wme.tspec.min_srv",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
-
-    {&hf_ieee80211_wfa_ie_wme_tspec_max_srv,
-     {"Maximum Service Interval", "wlan.wfa.ie.wme.tspec.max_srv",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_akm_suite_count,
+     {"AKM Suite Count", "wlan.wapi.akm_suite.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_inact_int,
-     {"Inactivity Interval", "wlan.wfa.ie.wme.tspec.inact_int",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_akm_suite_oui,
+     {"AKM Suite OUI", "wlan.wapi.akm_suite.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_susp_int,
-     {"Suspension Interval", "wlan.wfa.ie.wme.tspec.susp_int",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_akm_suite_type,
+     {"AKM Suite Type", "wlan.wapi.akm_suite.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_suite_type) , 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_srv_start,
-     {"Service Start Time", "wlan.wfa.ie.wme.tspec.srv_start",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_count,
+     {"Unicast Cipher Suite Count", "wlan.wapi.unicast_cipher.suite.count",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_min_data,
-     {"Minimum Data Rate", "wlan.wfa.ie.wme.tspec.min_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_oui,
+     {"Unicast Cipher Suite OUI", "wlan.wapi.unicast_cipher.suite.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_mean_data,
-     {"Mean Data Rate", "wlan.wfa.ie.wme.tspec.mean_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_type,
+     {"Unicast Cipher Suite Type", "wlan.wapi.unicast_cipher.suite.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_cipher_type) , 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_peak_data,
-     {"Peak Data Rate", "wlan.wfa.ie.wme.tspec.peak_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_mcast_cipher_suite_oui,
+     {"Multicast Cipher Suite OUI", "wlan.wapi.multicast_cipher.suite.oui",
+      FT_UINT24, BASE_OUI, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_burst_size,
-     {"Burst Size", "wlan.wfa.ie.wme.tspec.burst_size",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_mcast_cipher_suite_type,
+     {"Multicast Cipher Suite Type", "wlan.wapi.multicast_cipher.suite.type",
+      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_cipher_type) , 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_delay_bound,
-     {"Delay Bound", "wlan.wfa.ie.wme.tspec.delay_bound",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_capab,
+     {"WAPI Capability Info", "wlan.wapi.capab",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_min_phy,
-     {"Minimum PHY Rate", "wlan.wfa.ie.wme.tspec.min_phy",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_capab_preauth,
+     {"Supports Preauthentication?", "wlan.wapi.capab.preauth",
+      FT_BOOLEAN, 16 , NULL, 0x0001,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_surplus,
-     {"Surplus Bandwidth Allowance", "wlan.wfa.ie.wme.tspec.surplus",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_wapi_param_set_capab_rsvd,
+     {"Reserved", "wlan.wapi.capab.rsvd",
+      FT_UINT16, BASE_DEC , NULL, 0xFFFE,
       NULL, HFILL }},
 
-    {&hf_ieee80211_wfa_ie_wme_tspec_medium,
-     {"Medium Time", "wlan.wfa.ie.wme.tspec.medium",
+    {&hf_ieee80211_tag_wapi_param_set_bkid_count,
+     {"No of BKID's", "wlan.wapi.bkid.count",
       FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_ie_pmkid,
-     {"RSN PMKID", "wlan.rsn.ie.pmkid",
+    {&hf_ieee80211_tag_wapi_param_set_bkid_list,
+     {"BKID", "wlan.wapi.bkid",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_rsn_ie_unknown,
-     {"RSN Unknown", "wlan.rsn.ie.unknown",
+    /* BSS Max Idle Period */
+    {&hf_ieee80211_tag_bss_max_idle_period,
+     {"BSS Max Idle Period (1000 TUs)", "wlan.bss_max_idle.period",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+    {&hf_ieee80211_tag_bss_max_idle_options_protected,
+     {"BSS Max Idle Period Options: Protected Keep-Alive Required",
+      "wlan.bss_max_idle.options.protected",
+      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
+
+    /* TFS Request */
+    {&hf_ieee80211_tag_tfs_request_id,
+     {"TFS ID", "wlan.tfs_request.id",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+
+    {&hf_ieee80211_tag_tfs_request_ac_delete_after_match,
+     {"TFS Action Code - Delete after match",
+      "wlan.tfs_request.action_code.delete_after_match",
+      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
+
+    {&hf_ieee80211_tag_tfs_request_ac_notify,
+     {"TFS Action Code - Notify",
+      "wlan.tfs_request.action_code.notify",
+      FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL }},
+
+    {&hf_ieee80211_tag_tfs_request_subelem_id,
+     {"Subelement ID", "wlan.tfs_request.subelem.id",
+      FT_UINT8, BASE_DEC, VALS(tfs_request_subelem_ids), 0,
+      "TFS Request Subelement ID", HFILL }},
+
+    {&hf_ieee80211_tag_tfs_request_subelem_len,
+     {"Length", "wlan.tfs_request.subelem.len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "TFS Request Subelement Length", HFILL }},
+
+    {&hf_ieee80211_tag_tfs_request_subelem,
+     {"Subelement Data", "wlan.tfs_request.subelem",
       FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+      "TFS Request Subelement Data", HFILL }},
 
-    {&hf_ieee80211_marvell_ie_type,
-     {"Type", "wlan.marvell.ie.type",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    /* TFS Response */
+    {&hf_ieee80211_tag_tfs_response_subelem_id,
+     {"Subelement ID", "wlan.tfs_response.subelem.id",
+      FT_UINT8, BASE_DEC, VALS(tfs_response_subelem_ids), 0,
+      "TFS Response Subelement ID", HFILL }},
 
-    {&hf_ieee80211_marvell_ie_mesh_subtype,
-     {"Subtype", "wlan.marvell.ie.subtype",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tfs_response_subelem_len,
+     {"Length", "wlan.tfs_response.subelem.len",
+      FT_UINT8, BASE_DEC, NULL, 0,
+      "TFS Response Subelement Length", HFILL }},
 
-    {&hf_ieee80211_marvell_ie_mesh_version,
-     {"Version", "wlan.marvell.ie.version",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tfs_response_subelem,
+     {"Subelement Data", "wlan.tfs_response.subelem",
+      FT_BYTES, BASE_NONE, NULL, 0,
+      "TFS Response Subelement Data", HFILL }},
 
-    {&hf_ieee80211_marvell_ie_mesh_active_proto_id,
-     {"Path Selection Protocol", "wlan.marvell.ie.proto_id",
-      FT_UINT8, BASE_HEX, VALS(mesh_path_selection_codes), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tfs_response_status,
+     {"TFS Response Status", "wlan.tfs_response.status",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_marvell_ie_mesh_active_metric_id,
-     {"Path Selection Metric", "wlan.marvell.ie.metric_id",
-      FT_UINT8, BASE_HEX, VALS(mesh_metric_codes), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_tfs_response_id,
+     {"TFS ID", "wlan.tfs_response.tfs_id",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_marvell_ie_mesh_cap,
-     {"Mesh Capabilities", "wlan.marvell.ie.cap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    /* WNM-Sleep Mode */
+    {&hf_ieee80211_tag_wnm_sleep_mode_action_type,
+     {"Action Type", "wlan.wnm_sleep_mode.action_type",
+      FT_UINT8, BASE_DEC, VALS(wnm_sleep_mode_action_types), 0,
+      "WNM-Sleep Mode Action Type", HFILL }},
 
-    {&hf_ieee80211_marvell_ie_data,
-     { "Marvell IE data", "wlan.marvell.data",
-       FT_BYTES, BASE_NONE, NULL, 0x0,
-       NULL, HFILL }},
+    {&hf_ieee80211_tag_wnm_sleep_mode_response_status,
+     {"WNM-Sleep Mode Response Status",
+      "wlan.wnm_sleep_mode.response_status",
+      FT_UINT8, BASE_DEC, VALS(wnm_sleep_mode_response_status_vals), 0, NULL,
+      HFILL }},
 
-    {&hf_ieee80211_atheros_ie_type,
-     {"Type", "wlan.atheros.ie.type",
-      FT_UINT8, BASE_HEX, VALS(atheros_ie_type_vals), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_wnm_sleep_mode_interval,
+     {"WNM-Sleep Interval", "wlan.wnm_sleep_mode.interval",
+      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_subtype,
-     {"Subtype", "wlan.atheros.ie.subtype",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_wnm_sub_elt_id,
+     {"Subelement ID", "wlan.wnm_subelt.id",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_version,
-     {"Version", "wlan.atheros.ie.version",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_wnm_sub_elt_len,
+     {"Subelement len", "wlan.wnm_subelt.len",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_turbop,
-     {"Turbo Prime", "wlan.ie.atheros.capabilities.turbop",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_TURBOP,
+    /* Time Advertisement */
+    {&hf_ieee80211_tag_time_adv_timing_capab,
+     {"Timing capabilities", "wlan.time_adv.timing_capab",
+      FT_UINT8, BASE_DEC, VALS(time_adv_timing_capab_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_comp,
-     {"Compression", "wlan.ie.atheros.capabilities.comp",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_COMP,
+    {&hf_ieee80211_tag_time_adv_time_value,
+     {"Time Value", "wlan.time_adv.time_value",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_ff,
-     {"Fast Frames", "wlan.ie.atheros.capabilities.ff",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_FF,
+    {&hf_ieee80211_tag_time_adv_time_value_year,
+     {"Time Value: Year", "wlan.time_adv.time_value.year",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_xr,
-     {"eXtended Range", "wlan.ie.atheros.capabilities.xr",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_XR,
+    {&hf_ieee80211_tag_time_adv_time_value_month,
+     {"Time Value: Month", "wlan.time_adv.time_value.month",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_ar,
-     {"Advanced Radar", "wlan.ie.atheros.capabilities.ar",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_AR,
+    {&hf_ieee80211_tag_time_adv_time_value_day,
+     {"Time Value: Day", "wlan.time_adv.time_value.month",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_burst,
-     {"Burst", "wlan.ie.atheros.capabilities.burst",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BURST,
+    {&hf_ieee80211_tag_time_adv_time_value_hours,
+     {"Time Value: Hours", "wlan.time_adv.time_value.hours",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_wme,
-     {"CWMin tuning", "wlan.ie.atheros.capabilities.wme",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_WME,
+    {&hf_ieee80211_tag_time_adv_time_value_minutes,
+     {"Time Value: Minutes", "wlan.time_adv.time_value.minutes",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_cap_f_boost,
-     {"Boost", "wlan.ie.atheros.capabilities.boost",
-      FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BOOST,
+    {&hf_ieee80211_tag_time_adv_time_value_seconds,
+     {"Time Value: Seconds", "wlan.time_adv.time_value.seconds",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_advcap_cap,
-     {"Capabilities", "wlan.atheros.ie.advcap.cap",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_time_adv_time_value_milliseconds,
+     {"Time Value: Milliseconds", "wlan.time_adv.time_value.milliseconds",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_advcap_defkey,
-     {"Default key index", "wlan.atheros.ie.advcap.defkey",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_time_adv_time_value_reserved,
+     {"Time Value: Reserved", "wlan.time_adv.time_value.reserved",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_info,
-     {"Info", "wlan.atheros.ie.xr.info",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_time_adv_time_error,
+     {"Time Error", "wlan.time_adv.time_error",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_base_bssid,
-     {"Base BSS Id", "wlan.atheros.ie.xr.base_bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_time_adv_time_update_counter,
+     {"Time Update Counter", "wlan.time_adv.time_update_counter",
+      FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_xr_bssid,
-     {"XR BSS Id", "wlan.atheros.ie.xr.xr_bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
+    /* Time Zone */
+    {&hf_ieee80211_tag_time_zone,
+     {"Time Zone", "wlan.time_zone",
+      FT_STRING, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_xr_beacon,
-     {"XR Beacon Interval", "wlan.atheros.ie.xr.xr_beacon",
-      FT_UINT32, BASE_CUSTOM, CF_FUNC(beacon_interval_base_custom), 0,
+    /* Interworking */
+    {&hf_ieee80211_tag_interworking_access_network_type,
+     {"Access Network Type", "wlan.interworking.access_network_type",
+      FT_UINT8, BASE_DEC, VALS(access_network_type_vals), 0x0f,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_base_cap,
-     {"Base capabilities", "wlan.atheros.ie.xr.base_cap",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_interworking_internet,
+     {"Internet", "wlan.interworking.internet",
+      FT_UINT8, BASE_DEC, NULL, 0x10,
       NULL, HFILL }},
 
-    {&hf_ieee80211_atheros_ie_xr_xr_cap,
-     {"XR capabilities", "wlan.atheros.ie.xr.xr_cap",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_interworking_asra,
+     {"ASRA", "wlan.interworking.asra",
+      FT_UINT8, BASE_DEC, NULL, 0x20,
+      "Additional Step Required for Access", HFILL }},
 
-    {&hf_ieee80211_atheros_ie_data,
-     {"Atheros IE data", "wlan.atheros.data",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_interworking_esr,
+     {"ESR", "wlan.interworking.esr",
+      FT_UINT8, BASE_DEC, NULL, 0x40,
+      "Emergency services reachable", HFILL }},
 
-    {&hf_ieee80211_aironet_ie_type,
-     {"Aironet IE type", "wlan.aironet.type",
-      FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_interworking_uesa,
+     {"UESA", "wlan.interworking.uesa",
+      FT_UINT8, BASE_DEC, NULL, 0x80,
+      "Unauthenticated emergency service accessible", HFILL }},
 
-    {&hf_ieee80211_aironet_ie_dtpc,
-     {"Aironet IE CCX DTCP", "wlan.aironet.dtpc",
-      FT_INT8, BASE_DEC|BASE_UNIT_STRING, &units_dbm, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_interworking_hessid,
+     {"HESSID", "wlan.interworking.hessid",
+      FT_ETHER, BASE_NONE, NULL, 0,
+      "Homogeneous ESS identifier", HFILL }},
 
-    {&hf_ieee80211_aironet_ie_dtpc_unknown,
-     {"Aironet IE CCX DTCP Unknown", "wlan.aironet.dtpc_unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    /* QoS Map Set element */
+    {&hf_ieee80211_tag_qos_map_set_dscp_exc,
+     {"DSCP Exception", "wlan.qos_map_set.dscp_exception",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_aironet_ie_version,
-     {"Aironet IE CCX version", "wlan.aironet.version",
+    {&hf_ieee80211_tag_qos_map_set_dscp_exc_val,
+     {"DSCP Value", "wlan.qos_map_set.dscp_value",
       FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
-
-    {&hf_ieee80211_aironet_ie_data,
-     { "Aironet IE data", "wlan.aironet.data",
-       FT_BYTES, BASE_NONE, NULL, 0x0,
-       NULL, HFILL }},
+      "DSCP Exception - DSCP Value", HFILL }},
 
-    {&hf_ieee80211_qbss_version,
-     {"QBSS Version", "wlan.qbss.version",
+    {&hf_ieee80211_tag_qos_map_set_dscp_exc_up,
+     {"User Priority", "wlan.qos_map_set.up",
       FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+      "DSCP Exception - User Priority", HFILL }},
 
-    {&hf_ieee80211_qbss_scount,
-     {"Station Count", "wlan.qbss.scount",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_tag_qos_map_set_range,
+     {"DSCP Range description", "wlan.qos_map_set.range",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_qbss_cu,
-     {"Channel Utilization", "wlan.qbss.cu",
+    {&hf_ieee80211_tag_qos_map_set_low,
+     {"DSCP Low Value", "wlan.qos_map_set.dscp_low_value",
       FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+      "DSCP Range description - DSCP Low Value", HFILL }},
 
-    {&hf_ieee80211_qbss_adc,
-     {"Available Admission Capacity", "wlan.qbss.adc",
+    {&hf_ieee80211_tag_qos_map_set_high,
+     {"DSCP High Value", "wlan.qos_map_set.dscp_high_value",
       FT_UINT8, BASE_DEC, NULL, 0,
+      "DSCP Range description - DSCP High Value", HFILL }},
+
+    /* Advertisement Protocol */
+    {&hf_ieee80211_tag_adv_proto_resp_len_limit,
+     {"Query Response Length Limit", "wlan.adv_proto.resp_len_limit",
+      FT_UINT8, BASE_DEC, NULL, 0x7f,
       NULL, HFILL }},
 
-    {&hf_ieee80211_qbss2_cu,
-     {"Channel Utilization", "wlan.qbss2.cu",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_adv_proto_pame_bi,
+     {"PAME-BI", "wlan.adv_proto.pame_bi",
+      FT_UINT8, BASE_DEC, NULL, 0x80,
+      "Pre-Association Message Xchange BSSID Independent (PAME-BI)", HFILL }},
+
+    {&hf_ieee80211_tag_adv_proto_id,
+     {"Advertisement Protocol ID", "wlan.adv_proto.id",
+      FT_UINT8, BASE_DEC, VALS(adv_proto_id_vals), 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_qbss2_gl,
-     {"G.711 CU Quantum", "wlan.qbss2.glimit",
+    {&hf_ieee80211_tag_adv_vs_len,
+     {"Advertisement Protocol Vendor Specific length", "wlan.adv_proto.vs_len",
       FT_UINT8, BASE_DEC, NULL, 0,
+      NULL, HFILL}},
+#if 0
+    {&hf_ieee80211_tag_adv_proto_vs_info,
+     {"Advertisement Protocol Vendor Specific info", "wlan.adv_proto.vs_info",
+      FT_NONE, BASE_NONE, NULL, 0,
       NULL, HFILL }},
+#endif
 
-    {&hf_ieee80211_qbss2_cal,
-     {"Call Admission Limit", "wlan.qbss2.cal",
+    /* Roaming Consortium */
+    {&hf_ieee80211_tag_roaming_consortium_num_anqp_oi,
+     {"Number of ANQP OIs", "wlan.roaming_consortium.num_anqp_oi",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_qbss2_scount,
-     {"Station Count", "wlan.qbss2.scount",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_roaming_consortium_oi1_len,
+     {"OI #1 Length", "wlan.roaming_consortium.oi1_len",
+      FT_UINT8, BASE_DEC, NULL, 0x0f,
       NULL, HFILL }},
 
-    {&hf_ieee80211_aironet_ie_qos_reserved,
-     {"Aironet IE QoS reserved", "wlan.aironet.qos.reserved",
-      FT_UINT8, BASE_HEX, NULL, 0,
+    {&hf_ieee80211_tag_roaming_consortium_oi2_len,
+     {"OI #2 Length", "wlan.roaming_consortium.oi2_len",
+      FT_UINT8, BASE_DEC, NULL, 0xf0,
+      NULL, HFILL }},
+
+    {&hf_ieee80211_tag_roaming_consortium_oi1,
+     {"OI #1", "wlan.roaming_consortium.oi1",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_aironet_ie_qos_paramset,
-     {"Aironet IE QoS paramset", "wlan.aironet.qos.paramset",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_roaming_consortium_oi2,
+     {"OI #2", "wlan.roaming_consortium.oi2",
+      FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_aironet_ie_qos_val,
-     {"Aironet IE QoS valueset", "wlan.aironet.qos.val",
+    {&hf_ieee80211_tag_roaming_consortium_oi3,
+     {"OI #3", "wlan.roaming_consortium.oi3",
       FT_BYTES, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_aironet_ie_clientmfp,
-     {"Aironet IE Client MFP", "wlan.aironet.clientmfp",
-      FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01,
+    /* Timeout Interval */
+    {&hf_ieee80211_tag_timeout_int_type,
+     {"Timeout Interval Type", "wlan.timeout_int.type",
+      FT_UINT8, BASE_DEC, VALS(timeout_int_types), 0,
       NULL, HFILL }},
 
-    /* Vendor Specific : Nintendo */
-    {&hf_ieee80211_vs_nintendo_type,
-     {"Type", "wlan.vs.nintendo.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_nintendo_type_vals), 0,
+    {&hf_ieee80211_tag_timeout_int_value,
+     {"Timeout Interval Value", "wlan.timeout_int.value",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_nintendo_length,
-     {"Length", "wlan.vs.nintendo.length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    /* Link Identifier */
+    {&hf_ieee80211_tag_link_id_bssid,
+     {"BSSID", "wlan.link_id.bssid",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_nintendo_servicelist,
-     {"Servicelist", "wlan.vs.nintendo.servicelist",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_link_id_init_sta,
+     {"TDLS initiator STA Address", "wlan.link_id.init_sta",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_nintendo_service,
-     {"Service", "wlan.vs.nintendo.service",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_link_id_resp_sta,
+     {"TDLS responder STA Address", "wlan.link_id.resp_sta",
+      FT_ETHER, BASE_NONE, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_nintendo_consoleid,
-     {"Console ID", "wlan.vs.nintendo.consoleid",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    /* Wakeup Schedule */
+    {&hf_ieee80211_tag_wakeup_schedule_offset,
+     {"Offset", "wlan.wakeup_schedule.offset",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_nintendo_unknown,
-     {"Unknown", "wlan.vs.nintendo.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_wakeup_schedule_interval,
+     {"Interval", "wlan.wakeup_schedule.interval",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    /* Vendor Specific : Aruba Networks */
-    {&hf_ieee80211_vs_aruba_subtype,
-     {"Subtype", "wlan.vs.aruba.subtype",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_aruba_subtype_vals), 0,
+    {&hf_ieee80211_tag_wakeup_schedule_awake_window_slots,
+     {"Awake Window Slots", "wlan.wakeup_schedule.awake_window_slots",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_aruba_apname,
-     {"AP Name", "wlan.vs.aruba.ap_name",
-      FT_STRINGZ, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_wakeup_schedule_max_awake_dur,
+     {"Maximum Awake Window Duration", "wlan.wakeup_schedule.max_awake_dur",
+      FT_UINT32, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_aruba_data,
-     {"Data", "wlan.vs.aruba.data",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_wakeup_schedule_idle_count,
+     {"Idle Count", "wlan.wakeup_schedule.idle_count",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_mikrotik_unknown,
-     {"Unknown", "wlan.vs.mikrotik.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    /* Channel Switch Timing */
+    {&hf_ieee80211_tag_channel_switch_timing_switch_time,
+     {"Switch Time", "wlan.channel_switch_timing.switch_time",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_mikrotik_subitem,
-     {"Sub IE", "wlan.vs.mikrotik.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_channel_switch_timing_switch_timeout,
+     {"Switch Timeout", "wlan.channel_switch_timing.switch_timeout",
+      FT_UINT16, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_mikrotik_subtype,
-     {"Subtype", "wlan.vs.mikrotik.subtype",
+    /* PTI Control */
+    {&hf_ieee80211_tag_pti_control_tid,
+     {"TID", "wlan.pti_control.tid",
       FT_UINT8, BASE_DEC, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_mikrotik_sublength,
-     {"Sublength", "wlan.vs.mikrotik.sublength",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_pti_control_sequence_control,
+     {"Sequence Control", "wlan.pti_control.sequence_control",
+      FT_UINT16, BASE_HEX, NULL, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_mikrotik_subdata,
-     {"Subdata", "wlan.vs.mikrotik.subdata",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    /* PU Buffer Status */
+    {&hf_ieee80211_tag_pu_buffer_status_ac_bk,
+     {"AC_BK traffic available", "wlan.pu_buffer_status.ac_bk",
+      FT_UINT8, BASE_DEC, NULL, 0x01,
       NULL, HFILL }},
 
-    /* Vendor Specific : Meru (Fortinet) */
-    {&hf_ieee80211_vs_meru_subitem,
-     {"Sub IE", "wlan.vs.meru.unknown",
-      FT_NONE, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_tag_pu_buffer_status_ac_be,
+     {"AC_BE traffic available", "wlan.pu_buffer_status.ac_be",
+      FT_UINT8, BASE_DEC, NULL, 0x02,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_meru_subtype,
-     {"Subtype", "wlan.vs.meru.subtype",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_pu_buffer_status_ac_vi,
+     {"AC_VI traffic available", "wlan.pu_buffer_status.ac_vi",
+      FT_UINT8, BASE_DEC, NULL, 0x04,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_meru_sublength,
-     {"Sublength", "wlan.vs.meru.sublength",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_tag_pu_buffer_status_ac_vo,
+     {"AC_VO traffic available", "wlan.pu_buffer_status.ac_vo",
+      FT_UINT8, BASE_DEC, NULL, 0x08,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_meru_subdata,
-     {"Subdata", "wlan.vs.meru.subdata",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_mysterious_olpc_stuff,
+     {"Mysterious OLPC stuff", "wlan.mysterious_olpc_stuff",
+      FT_NONE, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    /* Vendor Specific : Extreme (Zebra) */
-    {&hf_ieee80211_vs_extreme_subtype,
-     {"Subtype", "wlan.vs.extreme.subtype",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_vs_extreme_subtype_vals), 0,
-      NULL, HFILL }},
+    {&hf_ieee80211_estimated_service_params,
+     {"Estimated Service Parameters", "wlan.ext_tag.estimated_service_params",
+      FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_vs_extreme_subdata,
-     {"Subdata", "wlan.vs.extreme.subdata",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_esp_access_category,
+     {"Access Category", "wlan.ext_tag.estimated_service_params.access_category",
+      FT_UINT24, BASE_DEC, VALS(esp_access_category_vals), 0x000003,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_esp_reserved,
+     {"Reserved", "wlan.ext_tag.estimated_service_params.reserved",
+      FT_UINT24, BASE_HEX, NULL, 0x000004, NULL, HFILL }},
+
+    {&hf_ieee80211_esp_data_format,
+     {"Data Format", "wlan.ext_tag.estimated_service_params.data_format",
+      FT_UINT24, BASE_DEC, VALS(esp_data_format_vals), 0x000018,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_esp_ba_windows_size,
+     {"BA Window Size", "wlan.ext_tag.estimated_service_params.ba_window_size",
+      FT_UINT24, BASE_DEC, VALS(esp_ba_window_size_vals), 0x0000E0,
+       NULL, HFILL }},
+
+    {&hf_ieee80211_esp_est_air_time_frac,
+     {"Estimated Air Time Fraction", "wlan.ext_tag.estimated_service_params.air_time_frac",
+      FT_UINT24, BASE_DEC, NULL, 0x00FF00, NULL, HFILL }},
+
+    {&hf_ieee80211_esp_data_ppdu_duration_target,
+     {"Data PPDU Duration Target", "wlan.ext_tag.estimated_service_params.data_ppdu_dur_target",
+      FT_UINT24, BASE_DEC, NULL, 0x00FF00, NULL, HFILL }},
+
+    {&hf_ieee80211_fcg_new_channel_number,
+     {"New Channel Number", "wlan.ext_tag.future_channel_guidance.new_chan_num",
+      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_fcg_extra_info,
+     {"Extra bytes", "wlan.ext_tag.future_channel_guidance.extra_bytes",
+      FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_ieee80211_ext_tag,
+     {"Ext Tag", "wlan.ext_tag",
+      FT_NONE, BASE_NONE, 0x0, 0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_extreme_unknown,
-     {"Unknown", "wlan.vs.extreme.unknown",
-      FT_BYTES, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_ext_tag_number,
+     {"Ext Tag Number", "wlan.ext_tag.number",
+      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_eid_ext_ext, 0,
+      "Element ID", HFILL }},
+
+    {&hf_ieee80211_ext_tag_length,
+     {"Ext Tag length", "wlan.ext_tag.length",
+      FT_UINT32, BASE_DEC, NULL, 0,
+      "Length of tag", HFILL }},
+
+    {&hf_ieee80211_fils_session,
+     {"FILS Session", "wlan.ext_tag.fils.session",
+      FT_BYTES, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_extreme_ap_length,
-     {"AP Length", "wlan.vs.extreme.ap_length",
-      FT_UINT8, BASE_DEC, NULL, 0,
+    {&hf_ieee80211_fils_wrapped_data,
+     {"FILS Wrapped Data", "wlan.ext_tag.fils.wrapped_data",
+      FT_BYTES, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_vs_extreme_ap_name,
-     {"AP Name", "wlan.vs.extreme.ap_name",
-      FT_STRING, BASE_NONE, NULL, 0,
+    {&hf_ieee80211_fils_nonce,
+     {"FILS Nonce", "wlan.ext_tag.fils.nonce",
+      FT_BYTES, BASE_NONE, NULL, 0x0,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo,
-     {"Traffic Stream (TS) Info", "wlan.ts_info",
-      FT_UINT24, BASE_HEX, NULL, 0,
-      "Traffic Stream (TS) Info field", HFILL }},
+    {&hf_he_mac_capabilities,
+     {"HE MAC Capabilities Information", "wlan.ext_tag.he_mac_caps",
+      FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_type,
-     {"Traffic Type", "wlan.ts_info.type",
-      FT_UINT24, BASE_DEC, VALS(tsinfo_type), 0x000001,
-      "Traffic Stream (TS) Info Traffic Type", HFILL }},
+    {&hf_he_htc_he_support,
+     {"+HTC HE Support", "wlan.ext_tag.he_mac_cap.htc_he_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000000001,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_tsid,
-     {"Traffic Stream ID (TSID)", "wlan.ts_info.tsid",
-      FT_UINT24, BASE_DEC, NULL, 0x00001E,
-      "Traffic Stream ID (TSID) Info TSID", HFILL }},
+    {&hf_he_twt_requester_support,
+     {"TWT Requester Support", "wlan.ext_tag.he_mac_cap.twt_req_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000000002,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_dir,
-     {"Direction", "wlan.ts_info.dir",
-      FT_UINT24, BASE_DEC, VALS(tsinfo_direction), 0x000060,
-      "Traffic Stream (TS) Info Direction", HFILL }},
+    {&hf_he_twt_responder_support,
+     {"TWT Responder Support", "wlan.ext_tag.he_mac_cap.twt_rsp_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000000004,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_access,
-     {"Access Policy", "wlan.ts_info.dir",
-      FT_UINT24, BASE_DEC, VALS(tsinfo_access), 0x000180,
-      "Traffic Stream (TS) Info Access Policy", HFILL }},
+    {&hf_he_fragmentation_support,
+     {"Fragmentation Support", "wlan.ext_tag.he_mac_cap.fragmentation_support",
+      FT_UINT40, BASE_DEC|BASE_VAL64_STRING,
+      VALS64(he_fragmentation_support_vals), 0x0000000018,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_agg,
-     {"Aggregation", "wlan.ts_info.agg",
-      FT_UINT24, BASE_DEC, NULL, 0x000200,
-      "Traffic Stream (TS) Info Access Policy", HFILL }},
+    {&hf_he_max_number_fragmented_msdus,
+     {"Maximum Number of Fragmented MSDUs", "wlan.ext_tag.he_mac_cap.max_frag_msdus",
+      FT_UINT40, BASE_DEC, NULL, 0x00000000E0,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_apsd,
-     {"Automatic Power-Save Delivery (APSD)", "wlan.ts_info.apsd",
-      FT_UINT24, BASE_DEC, NULL, 0x000400,
-      "Traffic Stream (TS) Info Automatic Power-Save Delivery (APSD)", HFILL }},
+    {&hf_he_min_fragment_size,
+     {"Minimum Fragment Size", "wlan.ext_tag.he_mac_cap.min_frag_size",
+      FT_UINT40, BASE_DEC|BASE_VAL64_STRING,
+      VALS64(he_minimum_fragmentation_size_vals), 0x0000000300,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_up,
-     {"User Priority", "wlan.ts_info.up",
-      FT_UINT24, BASE_DEC, VALS(qos_up), 0x003800,
-      "Traffic Stream (TS) Info User Priority", HFILL }},
+    {&hf_he_trigger_frame_mac_padding_dur,
+     {"Trigger Frame MAC Padding Duration", "wlan.ext_tag.he_mac_cap.trig_frm_mac_padding_dur",
+      FT_UINT40, BASE_DEC, NULL, 0x0000000C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_ack,
-     {"Ack Policy", "wlan.ts_info.ack",
-      FT_UINT24, BASE_DEC, VALS(ack_policy), 0x00C000,
-      "Traffic Stream (TS) Info Ack Policy", HFILL }},
+    {&hf_he_multi_tid_aggregation_support,
+     {"Multi-TID Aggregation Support", "wlan.ext_tag.he_mac_cap.multi_tid_agg_support",
+      FT_UINT40, BASE_DEC, NULL, 0x0000007000, NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_sched,
-     {"Schedule", "wlan.ts_info.sched",
-      FT_UINT24, BASE_DEC, NULL, 0x010000,
-      "Traffic Stream (TS) Info Schedule", HFILL }},
+    {&hf_he_he_link_adaptation_support,
+     {"HE Link Adaptation Support", "wlan.ext_tag.he_mac_cap.he_link_adaptation_support",
+      FT_UINT40, BASE_DEC|BASE_VAL64_STRING,
+      VALS64(he_link_adaptation_support_vals), 0x0000018000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tsinfo_rsv,
-     {"Reserved", "wlan.ts_info.rsv",
-      FT_UINT24, BASE_HEX, NULL, 0xFE0000,
-      "Must be Zero", HFILL }},
+    {&hf_he_all_ack_support,
+     {"All Ack Support", "wlan.ext_tag.he_mac_cap.all_ack_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000020000,
+      NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_nor_msdu,
-     {"Normal MSDU Size", "wlan.tspec.nor_msdu",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_he_umrs_support,
+     {"UMRS Support", "wlan.ext_tag.he_mac_cap.umrs_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000040000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_max_msdu,
-     {"Maximum MSDU Size", "wlan.tspec.max_msdu",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_he_bsr_support,
+     {"BSR Support", "wlan.ext_tag.he_mac_cap.bsr_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000080000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_min_srv,
-     {"Minimum Service Interval", "wlan.tspec.min_srv",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_broadcast_twt_support,
+     {"Broadcast TWT Support", "wlan.ext_tag.he_mac_cap.broadcast_twt_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000100000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_max_srv,
-     {"Maximum Service Interval", "wlan.tspec.max_srv",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_32_bit_ba_bitmap_support,
+     {"32-bit BA Bitmap Support", "wlan.ext_tag.he_mac_cap.32_bit_ba_bitmap_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000200000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_inact_int,
-     {"Inactivity Interval", "wlan.tspec.inact_int",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_mu_cascading_support,
+     {"MU Cascading Support", "wlan.ext_tag.he_mac_cap.mu_cascading_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000400000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_susp_int,
-     {"Suspension Interval", "wlan.tspec.susp_int",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_ack_enabled_aggregation_support,
+     {"Ack-Enabled Aggregation Support", "wlan.ext_tag.he_mac_cap.ack_enabled_agg_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0000800000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_srv_start,
-     {"Service Start Time", "wlan.tspec.srv_start",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_group_addressed_multi_sta_blkack_support,
+     {"Group Addressed Multi-STA BlockAck in DL MU Support", "wlan.ext_tag.he_mac_cap.i_give_up",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0001000000,
+      NULL, HFILL }},
+
+    {&hf_he_om_control_support,
+     {"OM Control Support", "wlan.ext_tag.he_mac_cap.om_control_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0002000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_min_data,
-     {"Minimum Data Rate", "wlan.tspec.min_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_ofdma_ra_support,
+     {"OFDMA RA Support", "wlan.ext_tag.he_mac_cap.ofdma_ra_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0004000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_mean_data,
-     {"Mean Data Rate", "wlan.tspec.mean_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_max_a_mpdu_length_exponent,
+     {"Maximum A-MPDU Length Exponent", "wlan.ext_tag.he_mac_cap.max_a_mpdu_len_exp",
+      FT_UINT40, BASE_DEC, NULL, 0x0018000000, NULL, HFILL }},
+
+    {&hf_he_a_msdu_fragmentation_support,
+     {"A-MSDU Fragmentation Support", "wlan.ext_tag.he_mac_cap.a_msdu_frag_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0020000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_peak_data,
-     {"Peak Data Rate", "wlan.tspec.peak_data",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_flexible_twt_schedule_support,
+     {"Flexible TWT Schedule Support", "wlan.ext_tag.he_mac_cap.flexible_twt_sched_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0040000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_burst_size,
-     {"Burst Size", "wlan.tspec.burst_size",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_rx_control_frame_to_multibss,
+     {"Rx Control Frame to MultiBSS", "wlan.ext_tag.he_mac_cap.rx_ctl_frm_multibss",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0080000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_delay_bound,
-     {"Delay Bound", "wlan.tspec.delay_bound",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_bsrp_bqrp_a_mpdu_aggregation,
+     {"BSRP BQRP A-MPDU Aggregation", "wlan.ext_tag.he_mac_cap.bsrp_bqrp_a_mpdu_agg",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0100000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_min_phy,
-     {"Minimum PHY Rate", "wlan.tspec.min_phy",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_qtp_support,
+     {"QTP Support", "wlan.ext_tag.he_mac_cap.qtp_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0200000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_surplus,
-     {"Surplus Bandwidth Allowance", "wlan.tspec.surplus",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_he_bqr_support,
+     {"BQR Support", "wlan.ext_tag.he_mac_cap.bqr_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0400000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_medium,
-     {"Medium Time", "wlan.tspec.medium",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_he_sr_responder,
+     {"SR Responder Role", "wlan.ext_tag.he_mac_cap.sr_responder",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x0800000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tspec_dmg,
-     {"DMG attributes", "wlan.tspec.dmg",
-      FT_UINT16, BASE_DEC, NULL, 0,
+    {&hf_he_ndp_feedback_report_support,
+     {"NDP Feedback Report Support", "wlan.ext_tag.he_mac_cap.ndp_feedback_report_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x1000000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_ts_delay,
-     {"Traffic Stream (TS) Delay", "wlan.ts_delay",
-      FT_UINT32, BASE_DEC, NULL, 0,
+    {&hf_he_ops_support,
+     {"OPS Support", "wlan.ext_tag.he_mac_cap.ops_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x2000000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tclas_process,
-     {"Processing", "wlan.tclas_proc.processing",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_tclas_process_flag), 0,
+    {&hf_he_a_msdu_in_a_mpdu_support,
+     {"A-MSDU in A-MPDU Support", "wlan.ext_tag.he_mac_cap.a_msdu_in_a_mpdu_support",
+      FT_BOOLEAN, 40, TFS(&tfs_supported_not_supported), 0x4000000000,
       NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ext_supp_rates,
-     {"Extended Supported Rates", "wlan.extended_supported_rates",
-      FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
-      "In Mbit/sec, (B) for Basic Rates", HFILL }},
+    {&hf_he_reserved,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bit_39",
+      FT_UINT40, BASE_HEX, NULL, 0x8000000000, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_info,
-     {"Schedule Info", "wlan.sched.sched_info",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      "Schedule Info field", HFILL }},
+    {&hf_he_reserved_bits_5_7,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bits_5_7",
+      FT_UINT40, BASE_HEX, NULL, 0x00000000E0, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_info_agg,
-     {"Schedule Aggregation", "wlan.sched_info.agg",
-      FT_UINT16, BASE_DEC, NULL, 0x0001,
-      "Traffic Stream (TS) Info Access Policy", HFILL }},
+    {&hf_he_reserved_bits_8_9,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bits_8_9",
+      FT_UINT40, BASE_HEX, NULL, 0x0000000300, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_info_tsid,
-     {"Schedule Traffic Stream ID (TSID)", "wlan.sched_info.tsid",
-      FT_UINT16, BASE_DEC, NULL, 0x001E,
-      "Traffic Stream ID (TSID) Info TSID", HFILL }},
+    {&hf_he_reserved_bits_15_16,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bits_15_16",
+      FT_UINT40, BASE_HEX, NULL, 0x0000018000, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_info_dir,
-     {"Schedule Direction", "wlan.sched_info.dir",
-      FT_UINT16, BASE_DEC, VALS(tsinfo_direction), 0x0060,
-      "Traffic Stream (TS) Info Direction", HFILL }},
+    {&hf_he_reserved_bit_18,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bit_18",
+      FT_UINT40, BASE_HEX, NULL, 0x0000040000, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_srv_start,
-     {"Service Start Time", "wlan.sched.srv_start",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_reserved_bit_19,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bit_19",
+      FT_UINT40, BASE_HEX, NULL, 0x0000080000, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_srv_int,
-     {"Service Interval", "wlan.sched.srv_int",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_reserved_bit_25,
+     {"Reserved", "wlan.ext_tag.he_mac_cap.reserved_bit_25",
+      FT_UINT40, BASE_HEX, NULL, 0x0002000000, NULL, HFILL }},
 
-    {&hf_ieee80211_sched_spec_int,
-     {"Specification Interval", "wlan.sched.spec_int",
-      FT_UINT16, BASE_HEX, NULL, 0,
+    {&hf_he_phy_dual_band_support,
+     {"Dual Band Support", "wlan.ext_tag.he_phy_cap.fbytes",
+      FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }},
+
+    {&hf_he_phy_cap_dual_band_support,
+     {"Dual Band Support", "wlan.ext_tag.he_phy_cap.fbyte.dbs",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
       NULL, HFILL }},
 
-    {&hf_ieee80211_aruba,
-     {"Aruba Type", "wlan.aruba.type",
-      FT_UINT16, BASE_DEC|BASE_EXT_STRING, &aruba_mgt_typevals_ext, 0,
-      "Aruba Management", HFILL }},
+    {&hf_he_phy_chan_width_set,
+     {"Channel Width Set", "wlan.ext_tag.he_phy_cap.fbytes",
+      FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL }},
 
-    {&hf_ieee80211_aruba_hb_seq,
-     {"Aruba Heartbeat Sequence", "wlan.aruba.heartbeat_sequence",
-      FT_UINT64, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_40mhz_channel_2_4ghz,
+     {"40MHz in 2.4GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.40mhz_in_2_4ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_aruba_mtu,
-     {"Aruba MTU Size", "wlan.aruba.mtu_size",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_40_and_80_mhz_5ghz,
+     {"40 & 80MHz in the 5GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.40_80_in_5ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04, NULL, HFILL }},
 
-    /* Start: HT Control (+HTC) */
-    {&hf_ieee80211_htc,
-     {"HT Control (+HTC)", "wlan.htc",
-      FT_UINT32, BASE_HEX, NULL, 0,
-      "High Throughput Control (+HTC)", HFILL }},
+    {&hf_he_160_mhz_5ghz,
+     {"160MHz in the 5GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.160_in_5ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x08, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_vht,
-     {"VHT", "wlan.htc.lac.vht",
-      FT_BOOLEAN, 32, NULL, HTC_VHT,
-      "High Throughput Control HT/VHT flag", HFILL }},
+    {&hf_he_160_80_plus_80_mhz_5ghz,
+     {"160/80+80MHz in the 5GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.160_80_80_in_5ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac,
-     {"Link Adaptation Control (LAC)", "wlan.htc.lac",
-      FT_UINT32, BASE_HEX, NULL, 0x0000FFFE,
-      "High Throughput Control Link Adaptation Control (LAC)", HFILL }},
+    {&hf_he_242_tone_rus_in_2_4ghz,
+     {"242 tone RUs in the 2.4GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.242_tone_in_2_4ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x20, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_trq,
-     {"Training Request (TRQ)", "wlan.htc.lac.trq",
-      FT_BOOLEAN, 16, TFS(&htc_lac_trq_flag), 0x0002,
-      "High Throughput Control Link Adaptation Control Training Request (TRQ)", HFILL }},
+    {&hf_he_242_tone_rus_in_5ghz,
+     {"242 tone RUs in the 5GHz band", "wlan.ext_tag.he_phy_cap.chan_width_set.242_tone_in_5ghz",
+      FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x40, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mai_aseli,
-     {"Antenna Selection Indication (ASELI)", "wlan.htc.lac.mai.aseli",
-      FT_UINT16, BASE_HEX, NULL, 0x003C,
-      "High Throughput Control Link Adaptation Control MAI Antenna Selection Indication", HFILL }},
+    {&hf_he_chan_width_reserved,
+     {"Reserved", "wlan.ext_tag.he_phy_cap.chan_width_set.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mai_mrq,
-     {"MCS Request (MRQ)", "wlan.htc.lac.mai.mrq",
-      FT_BOOLEAN, 16, TFS(&htc_lac_mai_mrq_flag), 0x0004,
-      "High Throughput Control Link Adaptation Control MAI MCS Request", HFILL }},
+    {&hf_he_phy_b8_to_b23,
+     {"Bits 8 to 23", "wlan.ext_tag.he_phy_cap.bits_8_to_23",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mai_msi,
-     {"MCS Request Sequence Identifier (MSI)", "wlan.htc.lac.mai.msi",
-      FT_UINT16, BASE_HEX, NULL, 0x0038,
-      "High Throughput Control Link Adaptation Control MAI MCS Request Sequence Identifier", HFILL }},
+    {&hf_he_phy_cap_punctured_preamble_rx,
+     {"Punctured Preamble RX", "wlan.ext_tag.he_phy_cap.nbytes.punc_preamble_rx",
+      FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mai_reserved,
-     {"Reserved", "wlan.htc.lac.mai.reserved",
-      FT_UINT16, BASE_HEX, NULL, 0x0038,
-      "High Throughput Control Link Adaptation Control MAI Reserved", HFILL }},
+    {&hf_he_phy_cap_device_class,
+     {"Device Class", "wlan.ext_tag.he_phy_cap.nbytes.device_class",
+      FT_UINT16, BASE_HEX, NULL, 0x0010, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mfsi,
-     {"MCS Feedback Sequence Identifier (MFSI)", "wlan.htc.lac.mfsi",
-      FT_UINT16, BASE_DEC, NULL, 0x01C0,
-      "High Throughput Control Link Adaptation Control MCS Feedback Sequence Identifier (MSI)", HFILL }},
+    {&hf_he_phy_cap_ldpc_coding_in_payload,
+     {"LDPC Coding In Payload", "wlan.ext_tag.he_phy_cap.nbytes.ldpc_coding_in_payload",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0020, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_asel_command,
-     {"Antenna Selection (ASEL) Command", "wlan.htc.lac.asel.command",
-      FT_UINT16, BASE_HEX, VALS(ieee80211_htc_lac_asel_command_flags), 0x0E00,
-      "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Command", HFILL }},
+    {&hf_he_phy_cap_he_su_ppdu_1x_he_ltf_08us,
+     {"HE SU PPDU With 1x HE-LTF and 0.8us GI",
+      "wlan.ext_tag.he_phy_cap.nbytes.he_su_ppdu_with_1x_he_ltf_08us",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_asel_data,
-     {"Antenna Selection (ASEL) Data", "wlan.htc.lac.asel.data",
-      FT_UINT16, BASE_HEX, NULL, 0xF000,
-      "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Data", HFILL }},
+    {&hf_he_phy_cap_midamble_rx_max_nsts,
+     {"Midamble Rx Max NSTS", "wlan.ext_tag.he_phy_cap.mbytes.midamble_rx_max_nsts",
+      FT_UINT16, BASE_HEX, NULL, 0x0180, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_lac_mfb,
-     {"MCS Feedback (MFB)", "wlan.htc.lac.mfb",
-      FT_UINT16, BASE_HEX, NULL, 0xFE00,
-      "High Throughput Control Link Adaptation Control MCS Feedback", HFILL }},
+    {&hf_he_phy_cap_ndp_with_4x_he_ltf_32us,
+     {"NDP With 4x HE-LTF and 3.2us GI",
+      "wlan.ext_tag.he_phy_cap.nbytes.ndp_with_4x_he_ltf_4x_3.2us",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0200, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_cal_pos,
-     {"Calibration Position", "wlan.htc.cal.pos",
-      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_cal_pos_flags), 0x00030000,
-      "High Throughput Control Calibration Position", HFILL }},
+    {&hf_he_phy_cap_stbc_tx_lt_80mhz,
+     {"STBC Tx <= 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.stbc_tx_lt_80mhz",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0400, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_cal_seq,
-     {"Calibration Sequence Identifier", "wlan.htc.cal.seq",
-      FT_UINT32, BASE_DEC, NULL, 0x000C0000,
-      "High Throughput Control Calibration Sequence Identifier", HFILL }},
+    {&hf_he_phy_cap_stbc_rx_lt_80mhz,
+     {"STBC Rx <= 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.stbc_rx_lt_80mhz",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0800, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_reserved1,
-     {"Reserved", "wlan.htc.reserved1",
-      FT_UINT32, BASE_HEX, NULL, 0x00300000,
-      "High Throughput Control Reserved", HFILL }},
+    {&hf_he_phy_cap_doppler_tx,
+     {"Doppler Tx", "wlan.ext_tag.he_phy_cap.nbytes.doppler_tx",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x1000, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_csi_steering,
-     {"CSI/Steering", "wlan.htc.csi_steering",
-      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_csi_steering_flags), 0x00C00000,
-      "High Throughput Control CSI/Steering", HFILL }},
+    {&hf_he_phy_cap_doppler_rx,
+     {"Doppler Rx", "wlan.ext_tag.he_phy_cap.nbytes.doppler_rx",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_ndp_announcement,
-     {"NDP Announcement", "wlan.htc.ndp_announcement",
-      FT_BOOLEAN, 32, TFS(&ieee80211_htc_ndp_announcement_flag), 0x01000000,
-      "High Throughput Control NDP Announcement", HFILL }},
+    {&hf_he_phy_cap_full_bw_ul_mu_mimo,
+     {"Full Bandwidth UL MU-MIMO", "wlan.ext_tag.he_phy_cap.nbytes.full_bw_ul_mu_mimo",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_reserved2,
-     {"Reserved", "wlan.htc.reserved2",
-      FT_UINT32, BASE_HEX, NULL, 0x3E000000,
-      "High Throughput Control Reserved", HFILL }},
+    {&hf_he_phy_cap_partial_bw_ul_mu_mimo,
+     {"Partial Bandwidth UL MU-MIMO", "wlan.ext_tag.he_phy_cap.nbytes.partial_bw_ul_mu_mimo",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x8000, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_mrq,
-     {"MRQ", "wlan.htc.mrq",
-      FT_BOOLEAN, 32, NULL, HTC_MRQ,
-      "VHT-MCS feedback request", HFILL }},
+    {&hf_he_phy_b24_to_b39,
+     {"Bits 24 to 39", "wlan.ext_tag.he_phy_cap.bits_24_to_39",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_msi,
-     {"MSI", "wlan.htc.msi",
-      FT_UINT32, BASE_DEC, NULL, 0x00000038,
-      "MRQ sequence number", HFILL }},
+    {&hf_he_phy_cap_dcm_max_constellation_tx,
+     {"DCM Max Constellation Tx", "wlan.ext_tag.he_phy_cap.nbytes.dcm_max_const_tx",
+      FT_UINT16, BASE_HEX, NULL, 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_msi_stbc_reserved,
-     {"Reserved", "wlan.htc.msi_stbc_reserved",
-      FT_UINT32, BASE_HEX, NULL, 0x00000038,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_dcm_max_nss_tx,
+     {"DCM Max NSS Tx", "wlan.ext_tag.he_phy_cap.nbytes.dcm_max_nss_tx",
+      FT_UINT16, BASE_HEX, NULL, 0x0004, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_compressed_msi,
-     {"Compressed MSI", "wlan.htc.compressed_msi",
-      FT_UINT32, BASE_DEC, NULL, 0x00000018,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_dcm_max_constellation_rx,
+     {"DCM Max Constellation Rx", "wlan.ext_tag.he_phy_cap.nbytes.dcm_max_const_rx",
+      FT_UINT16, BASE_HEX, NULL, 0x0018, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_ppdu_stbc_encoded,
-     {"PPDU was STBC encoded", "wlan.htc.ppdu_stbc_encoded",
-      FT_BOOLEAN, 32, NULL, 0x00000020,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_dcm_max_nss_rx,
+     {"DCM Max NSS Rx", "wlan.ext_tag.he_phy_cap.nbytes.dcm_max_nss_tx",
+      FT_UINT16, BASE_HEX, NULL, 0x0020, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_mfsi,
-     {"MFSI", "wlan.htc.mfsi",
-      FT_BOOLEAN, 32, NULL, 0x000001C0,
-      "MFB sequence identifier", HFILL }},
+    {&hf_he_phy_cap_rx_he_muppdu_from_non_ap,
+     {"Rx HE MU PPDU from Non-AP STA", "wlan.ext_tag.he_phy_cap.nbytes.rx_he_mu_ppdu",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_gid_l,
-     {"GID-L", "wlan.htc.gid_l",
-      FT_BOOLEAN, 32, NULL, 0x000001C0,
-      "LSBs of group ID", HFILL }},
+    {&hf_he_phy_cap_su_beamformer,
+     {"SU Beamformer", "wlan.ext_tag.he_phy_cap.nbytes.su_beamformer",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0080, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_mfb,
-     {"MFB", "wlan.htc.mfb",
-      FT_UINT32, BASE_HEX, NULL, 0x00FFFE00,
-      "Recommended MFB", HFILL }},
+    {&hf_he_phy_cap_su_beamformee,
+     {"SU Beamformee", "wlan.ext_tag.he_phy_cap.nbytes.su_beamformee",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0100, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_num_sts,
-     {"NUM_STS", "wlan.htc.num_sts",
-      FT_UINT32, BASE_DEC, NULL, 0x00000E00,
-      "Recommended NUM_STS", HFILL }},
+    {&hf_he_phy_cap_mu_beamformer,
+     {"MU Beamformer", "wlan.ext_tag.he_phy_cap.nbytes.mu_beamformer",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0200, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_vht_mcs,
-     {"VHT-MCS", "wlan.htc.vht_mcs",
-      FT_UINT32, BASE_DEC, NULL, 0x0000F000,
-      "Recommended VHT-MCS", HFILL }},
+    {&hf_he_phy_cap_beamformer_sts_lte_80mhz,
+     {"Beamformee STS <= 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.beamformee_sts_lte_80mhz",
+      FT_UINT16, BASE_HEX, NULL, 0x1C00, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_bw,
-     {"BW", "wlan.htc.bw",
-      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_bw_recommended_vht_mcs_vals), 0x00030000,
-      "Bandwidth for recommended VHT-MCS", HFILL }},
+    {&hf_he_phy_cap_beamformer_sts_gt_80mhz,
+     {"Beamformee STS > 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.beamformee_sts_gt_80mhz",
+      FT_UINT16, BASE_HEX, NULL, 0xE000, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_snr,
-     {"SNR", "wlan.htc.snr",
-      FT_INT32, BASE_DEC, NULL, 0x00FC0000,
-      "Average SNR + 22", HFILL }},
+    {&hf_he_phy_b40_to_b55,
+     {"Bits 40 to 55", "wlan.ext_tag.he_phy_cap.bits_40_to_55",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_reserved3,
-     {"Reserved", "wlan.htc.reserved3",
-      FT_UINT32, BASE_HEX, NULL, 0x1F000000,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_number_of_sounding_dims_lte_80,
+     {"Number Of Sounding Dimensions <= 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.no_sounding_dims_lte_80",
+      FT_UINT16, BASE_DEC, NULL, 0x0007, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_gid_h,
-     {"GID-H", "wlan.htc.gid_h",
-      FT_UINT32, BASE_DEC, NULL, 0x07000000,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_number_of_sounding_dims_gt_80,
+     {"Number Of Sounding Dimensions > 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.no_sounding_dims_gt_80",
+      FT_UINT16, BASE_DEC, NULL, 0x0038, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_coding_type,
-     {"Coding type", "wlan.htc.coding_type",
-      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_coding_type_vals), 0x08000000,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_ng_eq_16_su_fb,
+     {"Ng = 16 SU Feedback", "wlan.ext_tag.he_phy_cap.nbytes.ng_eq_16_su_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_fb_tx_type,
-     {"FB Tx type", "wlan.htc.fb_tx_type",
-      FT_UINT32, BASE_DEC, VALS(ieee80211_htc_fb_tx_type_vals), 0x10000000,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_ng_eq_16_mu_fb,
+     {"Ng = 16 MU Feedback", "wlan.ext_tag.he_phy_cap.nbytes.ng_eq_16_mu_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0080, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_unsolicited_mfb,
-     {"Unsolicited MFB", "wlan.htc.unsolicited_mfb",
-      FT_BOOLEAN, 32, NULL, HTC_UNSOLICITED_MFB,
-      "High Throughput Control Unsolicited MFB", HFILL }},
+    {&hf_he_phy_cap_codebook_size_eq_4_2_fb,
+     {"Codebook Size SU Feedback", "wlan.ext_tag.he_phy_cap.nbytes.codebook_size_su_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0100, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_ac_constraint,
-     {"AC Constraint", "wlan.htc.ac_constraint",
-      FT_BOOLEAN, 32, NULL, 0x40000000,
-      "High Throughput Control AC Constraint", HFILL }},
+    {&hf_he_phy_cap_codebook_size_eq_7_5_fb,
+     {"Codebook Size MU Feedback", "wlan.ext_tag.he_phy_cap.nbytes.codebook_size_mu_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0200, NULL, HFILL }},
 
-    {&hf_ieee80211_htc_rdg_more_ppdu,
-     {"RDG/More PPDU", "wlan.htc.rdg_more_ppdu",
-      FT_BOOLEAN, 32, NULL, 0x80000000,
-      "High Throughput Control RDG/More PPDU", HFILL }},
-    /* End: HT Control (+HTC) */
+    {&hf_he_phy_cap_triggered_su_beamforming_fb,
+     {"Triggered SU Beamforming Feedback", "wlan.ext_tag.he_phy_cap.nbytes.trig_su_bf_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0400, NULL, HFILL }},
 
-    /* MDIE */
-    {&hf_ieee80211_tag_mobility_domain_mdid,
-     {"Mobility Domain Identifier", "wlan.mobility_domain.mdid",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_triggered_mu_beamforming_fb,
+     {"Triggered MU Beamforming Feedback", "wlan.ext_tag.he_phy_cap.nbytes.trig_mu_bf_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0800, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mobility_domain_ft_capab,
-     {"FT Capability and Policy", "wlan.mobility_domain.ft_capab",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_triggered_cqi_fb,
+     {"Triggered CQI Feedback", "wlan.ext_tag.he_phy_cap.nbytes.trig_cqi_fb",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x1000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mobility_domain_ft_capab_ft_over_ds,
-     {"Fast BSS Transition over DS",
-      "wlan.mobility_domain.ft_capab.ft_over_ds",
-      FT_UINT8, BASE_HEX, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_partial_bw_extended_range,
+     {"Partial Bandwidth Extended Range", "wlan.ext_tag.he_phy_cap.nbytes.partial_bw_er",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mobility_domain_ft_capab_resource_req,
-     {"Resource Request Protocol Capability",
-      "wlan.mobility_domain.ft_capab.resource_req",
-      FT_UINT8, BASE_HEX, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_partial_bw_dl_mu_mimo,
+     {"Partial Bandwidth DL MU-MIMO", "wlan.ext_tag.he_phy_cap.nbytes.partial_bw_dl_mu_mimo",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x4000, NULL, HFILL }},
 
-    /* FTIE */
-    {&hf_ieee80211_tag_ft_mic_control,
-     {"MIC Control", "wlan.ft.mic_control",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_ppe_threshold_present,
+     {"PPE Threshold Present", "wlan.ext_tag.he_phy_cap.nbytes.ppe_thres_present",
+      FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_element_count,
-     {"Element Count", "wlan.ft.element_count",
-      FT_UINT16, BASE_DEC, NULL, 0xff00,
-      NULL, HFILL }},
+    {&hf_he_phy_b56_to_b71,
+     {"Bits 56 to 71", "wlan.ext_tag.he_phy_cap.bits_56_to_71",
+      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_mic,
-     {"MIC", "wlan.ft.mic",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_srp_based_sr_support,
+     {"SRP-based SR Support", "wlan.ext_tag.he_phy_cap.nbytes.srp_based_sr_sup",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0001, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_anonce,
-     {"ANonce", "wlan.ft.anonce",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_power_boost_factor_ar_support,
+     {"Power Boost Factor ar Support", "wlan.ext_tag.he_phy_cap.nbytes.pwr_bst_factor_ar_sup",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0002, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_snonce,
-     {"SNonce", "wlan.ft.snonce",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_he_su_ppdu_etc_gi,
+     {"HE SU PPDU & HE MU PPDU w 4x HE-LTF & 0.8us GI", "wlan.ext_tag.he_phy_cap.nbytes.he_su_ppdu_etc_gi",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0004, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_id,
-     {"Subelement ID", "wlan.ft.subelem.id",
-      FT_UINT8, BASE_DEC, VALS(ft_subelem_id_vals), 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_max_nc,
+     {"Max Nc", "wlan.ext_tag.he_phy_cap.nbytes.max_nc",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0038, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_len,
-     {"Length", "wlan.ft.subelem.len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_stbc_tx_gt_80_mhz,
+     {"STBC Tx > 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.stbc_tx_gt_80_mhz",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_data,
-     {"Data", "wlan.ft.subelem.data",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_stbc_rx_gt_80_mhz,
+     {"STBC Rx > 80 MHz", "wlan.ext_tag.he_phy_cap.nbytes.stbc_rx_gt_80_mhz",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0080, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_r1kh_id,
-     {"PMK-R1 key holder identifier (R1KH-ID)", "wlan.ft.subelem.r1kh_id",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_he_er_su_ppdu_4xxx_gi,
+     {"HE ER SU PPDU W 4x HE-LTF & 0.8us GI", "wlan.ext_tag.he_phy_cap.nbytes.he_er_su_ppdu_4xxx_gi",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0100, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_gtk_key_info,
-     {"Key Info", "wlan.ft.subelem.gtk.key_info",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_20mhz_in_40mhz_24ghz_band,
+     {"20 MHz In 40 MHz HE PPDU In 2.4GHz Band", "wlan.ext_tag.he_phy_cap.nbytes.20_mhz_in_40_in_2_4ghz",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0200, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_gtk_key_id,
-     {"Key ID", "wlan.ft.subelem.gtk.key_id",
-      FT_UINT16, BASE_DEC, NULL, 0x0003,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_20mhz_in_160_80p80_ppdu,
+     {"20 MHz In 160/80+80 MHz HE PPDU", "wlan.ext_tag.he_phy_cap.nbytes.20_mhz_in_160_80p80_ppdu",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0400, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_gtk_key_length,
-     {"Key Length", "wlan.ft.subelem.gtk.key_length",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_80mgz_in_160_80p80_ppdu,
+     {"80 MHz In 160/80+80 MHz HE PPDU", "wlan.ext_tag.he_phy_cap.nbytes.80_mhz_in_160_80p80_ppdu",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x0800, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_gtk_rsc,
-     {"RSC", "wlan.ft.subelem.gtk.rsc",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_he_er_su_ppdu_1xxx_gi,
+     {"HE ER SU PPDU W 1x HE-LTF & 0.8us GI", "wlan.ext_tag.he_phy_cap.nbytes.he_er_su_ppdu_1xxx_gi",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x1000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_gtk_key,
-     {"GTK", "wlan.ft.subelem.gtk.key",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_midamble_rx_2x_xxx_ltf,
+     {"Midamble Rx 2x & 1x HE-LTF", "wlan.ext_tag.he_phy_cap.nbytes.midamble_rx_2x_1x_he_ltf",
+      FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported), 0x2000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_r0kh_id,
-     {"PMK-R0 key holder identifier (R0KH-ID)", "wlan.ft.subelem.r0kh_id",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_phy_cap_b70_b71_reserved,
+     {"Reserved", "wlan.ext_tag.he_phy_cap.nbytes.reserved_b70_b71",
+      FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_igtk_key_id,
-     {"Key ID", "wlan.ft.subelem.igtk.key_id",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_igtk_ipn,
-     {"IPN", "wlan.ft.subelem.igtk.ipn",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_igtk_key_length,
-     {"Key Length", "wlan.ft.subelem.igtk.key_length",
-      FT_UINT8, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ft_subelem_igtk_key,
-     {"Wrapped Key (IGTK)", "wlan.ft.subelem.igtk.key",
-      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    /* RIC Data IE: 802.11-2012: 8.4.2.52 */
-    {&hf_ieee80211_tag_ric_data_id,
-     {"Resource Handshake Identifier", "wlan.ric_data.id",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ric_data_desc_cnt,
-     {"Resource Descriptor Count", "wlan.ric_data.desc_cnt",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ric_data_status_code,
-     {"Status Code", "wlan.ric_data.status_code",
-      FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_status_code_ext, 0,
-      "Status of requested Resource", HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    /* OBSS IE: 802.11-2012: 8.4.2.61 */
-    {&hf_ieee80211_tag_obss_spd,
-     {"Scan Passive Dwell", "wlan.obss.spd",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_rx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_rx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_sad,
-     {"Scan Active Dwell", "wlan.obss.sad",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_cwtsi,
-     {"Channel Width Trigger Scan Interval", "wlan.obss.cwtsi",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_sptpc,
-     {"Scan Passive Total Per Channel", "wlan.obss.sptpc",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_satpc,
-     {"Scan Active Total Per Channel", "wlan.obss.satpc",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_wctdf,
-     {"Width Channel Transition Delay Factor", "wlan.obss.wctdf",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_obss_sat,
-     {"Scan Activity Threshold", "wlan.obss.sat",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    /* RIC Descriptor IE: 802.11-2012: 8.4.2.53 */
-    {&hf_ieee80211_tag_ric_desc_rsrc_type,
-     {"Resource Type", "wlan.ric_desc.rsrc_type",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_ric_desc_var_params,
-     {"Variable Params", "wlan.ric_desc.var_params",
-      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80_tx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80_tx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    /* MMIE */
-    {&hf_ieee80211_tag_mmie_keyid,
-     {"KeyID", "wlan.mmie.keyid",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mmie_ipn,
-     {"IPN", "wlan.mmie.ipn",
-      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_mmie_mic,
-     {"MIC", "wlan.mmie.mic",
-      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    /* WAPI Parameter Set*/
-    {&hf_ieee80211_tag_wapi_param_set_version,
-     {"Version", "wlan.wapi.version",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_akm_suite_count,
-     {"AKM Suite Count", "wlan.wapi.akm_suite.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_akm_suite_oui,
-     {"AKM Suite OUI", "wlan.wapi.akm_suite.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_akm_suite_type,
-     {"AKM Suite Type", "wlan.wapi.akm_suite.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_suite_type) , 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_count,
-     {"Unicast Cipher Suite Count", "wlan.wapi.unicast_cipher.suite.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_rx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_rx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_oui,
-     {"Unicast Cipher Suite OUI", "wlan.wapi.unicast_cipher.suite.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_ucast_cipher_suite_type,
-     {"Unicast Cipher Suite Type", "wlan.wapi.unicast_cipher.suite.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_cipher_type) , 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_mcast_cipher_suite_oui,
-     {"Multicast Cipher Suite OUI", "wlan.wapi.multicast_cipher.suite.oui",
-      FT_UINT24, BASE_OUI, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_mcast_cipher_suite_type,
-     {"Multicast Cipher Suite Type", "wlan.wapi.multicast_cipher.suite.type",
-      FT_UINT8, BASE_DEC, VALS(ieee80211_wapi_cipher_type) , 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_capab,
-     {"WAPI Capability Info", "wlan.wapi.capab",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_capab_preauth,
-     {"Supports Preauthentication?", "wlan.wapi.capab.preauth",
-      FT_BOOLEAN, 16 , NULL, 0x0001,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_capab_rsvd,
-     {"Reserved", "wlan.wapi.capab.rsvd",
-      FT_UINT16, BASE_DEC , NULL, 0xFFFE,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_bkid_count,
-     {"No of BKID's", "wlan.wapi.bkid.count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_80p80_tx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_80p80_tx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wapi_param_set_bkid_list,
-     {"BKID", "wlan.wapi.bkid",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    /* BSS Max Idle Period */
-    {&hf_ieee80211_tag_bss_max_idle_period,
-     {"BSS Max Idle Period (1000 TUs)", "wlan.bss_max_idle.period",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_bss_max_idle_options_protected,
-     {"BSS Max Idle Period Options: Protected Keep-Alive Required",
-      "wlan.bss_max_idle.options.protected",
-      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    /* TFS Request */
-    {&hf_ieee80211_tag_tfs_request_id,
-     {"TFS ID", "wlan.tfs_request.id",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_request_ac_delete_after_match,
-     {"TFS Action Code - Delete after match",
-      "wlan.tfs_request.action_code.delete_after_match",
-      FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_request_ac_notify,
-     {"TFS Action Code - Notify",
-      "wlan.tfs_request.action_code.notify",
-      FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_request_subelem_id,
-     {"Subelement ID", "wlan.tfs_request.subelem.id",
-      FT_UINT8, BASE_DEC, VALS(tfs_request_subelem_ids), 0,
-      "TFS Request Subelement ID", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_request_subelem_len,
-     {"Length", "wlan.tfs_request.subelem.len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "TFS Request Subelement Length", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_rx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_rx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_request_subelem,
-     {"Subelement Data", "wlan.tfs_request.subelem",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "TFS Request Subelement Data", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_1_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    /* TFS Response */
-    {&hf_ieee80211_tag_tfs_response_subelem_id,
-     {"Subelement ID", "wlan.tfs_response.subelem.id",
-      FT_UINT8, BASE_DEC, VALS(tfs_response_subelem_ids), 0,
-      "TFS Response Subelement ID", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_2_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_response_subelem_len,
-     {"Length", "wlan.tfs_response.subelem.len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "TFS Response Subelement Length", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_3_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_response_subelem,
-     {"Subelement Data", "wlan.tfs_response.subelem",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      "TFS Response Subelement Data", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_4_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_response_status,
-     {"TFS Response Status", "wlan.tfs_response.status",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_5_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_tfs_response_id,
-     {"TFS ID", "wlan.tfs_response.tfs_id",
-      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_6_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    /* WNM-Sleep Mode */
-    {&hf_ieee80211_tag_wnm_sleep_mode_action_type,
-     {"Action Type", "wlan.wnm_sleep_mode.action_type",
-      FT_UINT8, BASE_DEC, VALS(wnm_sleep_mode_action_types), 0,
-      "WNM-Sleep Mode Action Type", HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_7_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wnm_sleep_mode_response_status,
-     {"WNM-Sleep Mode Response Status",
-      "wlan.wnm_sleep_mode.response_status",
-      FT_UINT8, BASE_DEC, VALS(wnm_sleep_mode_response_status_vals), 0, NULL,
-      HFILL }},
+    {&hf_he_mcs_max_he_mcs_160_tx_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_mcs_map.max_he_mcs_160_tx_8_ss",
+      FT_UINT16, BASE_HEX, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wnm_sleep_mode_interval,
-     {"WNM-Sleep Interval", "wlan.wnm_sleep_mode.interval",
-      FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
+    {&hf_he_rx_he_mcs_map_lte_80,
+     {"Rx HEX-MCS Map <= 80 MHz", "wlan.ext_tag.he_mcs_map.rx_he_mcs_map_lte_80",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    /* Time Advertisement */
-    {&hf_ieee80211_tag_time_adv_timing_capab,
-     {"Timing capabilities", "wlan.time_adv.timing_capab",
-      FT_UINT8, BASE_DEC, VALS(time_adv_timing_capab_vals), 0,
-      NULL, HFILL }},
+    {&hf_he_tx_he_mcs_map_lte_80,
+     {"Tx HEX-MCS Map <= 80 MHz", "wlan.ext_tag.he_mcs_map.tx_he_mcs_map_lte_80",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value,
-     {"Time Value", "wlan.time_adv.time_value",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_rx_he_mcs_map_160,
+     {"Rx HEX-MCS Map 160 MHz", "wlan.ext_tag.he_mcs_map.rx_he_mcs_map_160",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_year,
-     {"Time Value: Year", "wlan.time_adv.time_value.year",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_tx_he_mcs_map_160,
+     {"Tx HEX-MCS Map 160 MHz", "wlan.ext_tag.he_mcs_map.tx_he_mcs_map_160",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_month,
-     {"Time Value: Month", "wlan.time_adv.time_value.month",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_rx_he_mcs_map_80_80,
+     {"Rx HEX-MCS Map 80+80 MHz", "wlan.ext_tag.he_mcs_map.rx_he_mcs_map_80_80",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
+
+    {&hf_he_tx_he_mcs_map_80_80,
+     {"Tx HEX-MCS Map 80+80 MHz", "wlan.ext_tag.he_mcs_map.tx_he_mcs_map_80_80",
+     FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_day,
-     {"Time Value: Day", "wlan.time_adv.time_value.month",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_ppe_thresholds_nss,
+     {"NSS", "wlan.ext_tag.he_ppe_thresholds.nss",
+      FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_hours,
-     {"Time Value: Hours", "wlan.time_adv.time_value.hours",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_ppe_thresholds_ru_index_bitmask,
+     {"RU Index Bitmask", "wlan.ext_tag.he_ppe_thresholds.ru_index_bitmask",
+      FT_UINT8, BASE_HEX, NULL, 0x78, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_minutes,
-     {"Time Value: Minutes", "wlan.time_adv.time_value.minutes",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_ppe_ppet16,
+     {"PPET16","wlan.ext_tag.he_ppe_thresholds.ppet16",
+      FT_UINT8, BASE_HEX, VALS(constellation_vals), 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_seconds,
-     {"Time Value: Seconds", "wlan.time_adv.time_value.seconds",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_ppe_ppet8,
+     {"PPET8","wlan.ext_tag.he_ppe_thresholds.ppet8",
+      FT_UINT8, BASE_HEX, VALS(constellation_vals), 0x0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_milliseconds,
-     {"Time Value: Milliseconds", "wlan.time_adv.time_value.milliseconds",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_parameter,
+     {"HE Operation Parameters", "wlan.ext_tag.he_operation.params",
+      FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_value_reserved,
-     {"Time Value: Reserved", "wlan.time_adv.time_value.reserved",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_bss_color,
+     {"BSS Color", "wlan.ext_tag.he_operation.he_color",
+      FT_UINT32, BASE_DEC, NULL, 0x0000003f, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_error,
-     {"Time Error", "wlan.time_adv.time_error",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_default_pe_duration,
+     {"Default PE Duration", "wlan.ext_tag.he_operation.default_pe_duration",
+      FT_UINT32, BASE_DEC, NULL, 0x000001C0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_time_adv_time_update_counter,
-     {"Time Update Counter", "wlan.time_adv.time_update_counter",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_twt_required,
+     {"TWT Required", "wlan.ext_tag.he_operation.twt_required",
+      FT_BOOLEAN, 32, TFS(&tfs_required_not_required), 0x00000200, NULL, HFILL }},
 
-    /* Time Zone */
-    {&hf_ieee80211_tag_time_zone,
-     {"Time Zone", "wlan.time_zone",
-      FT_STRING, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_txop_duration_rts_threshold,
+     {"TXOP Duration RTS Threshold", "wlan.ext_tag.he_operation.txop_duration_rts_thresh",
+      FT_UINT32, BASE_DEC, NULL, 0x000FFC00, NULL, HFILL }},
 
-    /* Interworking */
-    {&hf_ieee80211_tag_interworking_access_network_type,
-     {"Access Network Type", "wlan.interworking.access_network_type",
-      FT_UINT8, BASE_DEC, VALS(access_network_type_vals), 0x0f,
-      NULL, HFILL }},
+    {&hf_he_operation_partial_bss_color,
+     {"Partial BSS Color", "wlan.ext_tag.he_operation.partial_bss_color",
+      FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interworking_internet,
-     {"Internet", "wlan.interworking.internet",
-      FT_UINT8, BASE_DEC, NULL, 0x10,
-      NULL, HFILL }},
+    {&hf_he_operation_vht_operation_information_present,
+     {"VHT Operation Information Present", "wlan.ext_tag.he_operation.vht_op_info_present",
+      FT_BOOLEAN, 32, NULL, 0x00200000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interworking_asra,
-     {"ASRA", "wlan.interworking.asra",
-      FT_UINT8, BASE_DEC, NULL, 0x20,
-      "Additional Step Required for Access", HFILL }},
+    {&hf_he_operation_reserved_b22_b27,
+     {"Reserved", "wlan.ext_tag.he_operation.reserved_b22_b27",
+      FT_UINT32, BASE_HEX, NULL, 0x0FC00000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interworking_esr,
-     {"ESR", "wlan.interworking.esr",
-      FT_UINT8, BASE_DEC, NULL, 0x40,
-      "Emergency services reachable", HFILL }},
+    {&hf_he_operation_multiple_bssid_ap,
+     {"Multiple BSSID AP", "wlan.ext_tag.he_operation.multiple_bssid_ap",
+      FT_BOOLEAN, 32, NULL, 0x10000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interworking_uesa,
-     {"UESA", "wlan.interworking.uesa",
-      FT_UINT8, BASE_DEC, NULL, 0x80,
-      "Unauthenticated emergency service accessible", HFILL }},
+    {&hf_he_operation_txbssid_indicator,
+     {"TX BSSID Indicator", "wlan.ext_tag.he_operation.tx_bssid_indicator",
+      FT_BOOLEAN, 32, NULL, 0x20000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_interworking_hessid,
-     {"HESSID", "wlan.interworking.hessid",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      "Homogeneous ESS identifier", HFILL }},
+    {&hf_he_operation_bss_color_disabled,
+     {"BSS Color Disabled", "wlan.ext_tag.he_operation.bss_color_disabled",
+      FT_BOOLEAN, 32, TFS(&tfs_disabled_enabled), 0x40000000, NULL, HFILL }},
 
-    /* QoS Map Set element */
-    {&hf_ieee80211_tag_qos_map_set_dscp_exc,
-     {"DSCP Exception", "wlan.qos_map_set.dscp_exception",
-      FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_operation_reserved_b31,
+     {"Reserved", "wlan.ext_tag.he_operation.reserved_b31",
+      FT_UINT32, BASE_HEX, NULL, 0x80000000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_qos_map_set_dscp_exc_val,
-     {"DSCP Value", "wlan.qos_map_set.dscp_value",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "DSCP Exception - DSCP Value", HFILL }},
+    {&hf_he_operation_basic_mcs,
+     {"Basic HE-MCS and NSS Set", "wlan.ext_tag.he_operation.basic_he_mcs_and_nss",
+      FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_qos_map_set_dscp_exc_up,
-     {"User Priority", "wlan.qos_map_set.up",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "DSCP Exception - User Priority", HFILL }},
+    {&hf_he_oper_max_he_mcs_for_1_ss,
+     {"Max HE-MCS for 1 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_1_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x0003, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_qos_map_set_range,
-     {"DSCP Range description", "wlan.qos_map_set.range",
-      FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
+    {&hf_he_oper_max_he_mcs_for_2_ss,
+     {"Max HE-MCS for 2 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_2_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x000C, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_qos_map_set_low,
-     {"DSCP Low Value", "wlan.qos_map_set.dscp_low_value",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "DSCP Range description - DSCP Low Value", HFILL }},
+    {&hf_he_oper_max_he_mcs_for_3_ss,
+     {"Max HE-MCS for 3 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_3_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x0030, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_qos_map_set_high,
-     {"DSCP High Value", "wlan.qos_map_set.dscp_high_value",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      "DSCP Range description - DSCP High Value", HFILL }},
+    {&hf_he_oper_max_he_mcs_for_4_ss,
+     {"Max HE-MCS for 4 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_4_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x00C0, NULL, HFILL }},
 
-    /* Advertisement Protocol */
-    {&hf_ieee80211_tag_adv_proto_resp_len_limit,
-     {"Query Response Length Limit", "wlan.adv_proto.resp_len_limit",
-      FT_UINT8, BASE_DEC, NULL, 0x7f,
-      NULL, HFILL }},
+    {&hf_he_oper_max_he_mcs_for_5_ss,
+     {"Max HE-MCS for 5 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_5_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x0300, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_adv_proto_pame_bi,
-     {"PAME-BI", "wlan.adv_proto.pame_bi",
-      FT_UINT8, BASE_DEC, NULL, 0x80,
-      "Pre-Association Message Xchange BSSID Independent (PAME-BI)", HFILL }},
+    {&hf_he_oper_max_he_mcs_for_6_ss,
+     {"Max HE-MCS for 6 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_6_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x0C00, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_adv_proto_id,
-     {"Advertisement Protocol ID", "wlan.adv_proto.id",
-      FT_UINT8, BASE_DEC, VALS(adv_proto_id_vals), 0,
-      NULL, HFILL }},
+    {&hf_he_oper_max_he_mcs_for_7_ss,
+     {"Max HE-MCS for 7 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_7_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0x3000, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_adv_vs_len,
-     {"Advertisement Protocol Vendor Specific length", "wlan.adv_proto.vs_len",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL}},
-#if 0
-    {&hf_ieee80211_tag_adv_proto_vs_info,
-     {"Advertisement Protocol Vendor Specific info", "wlan.adv_proto.vs_info",
-      FT_NONE, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
-#endif
+    {&hf_he_oper_max_he_mcs_for_8_ss,
+     {"Max HE-MCS for 8 SS", "wlan.ext_tag.he_operation.max_he_mcs_for_8_ss",
+      FT_UINT16, BASE_DEC, VALS(he_mcs_map_vals), 0xC000, NULL, HFILL }},
 
-    /* Roaming Consortium */
-    {&hf_ieee80211_tag_roaming_consortium_num_anqp_oi,
-     {"Number of ANQP OIs", "wlan.roaming_consortium.num_anqp_oi",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_channel_width,
+     {"channel Width", "wlan.ext_tag.he_operation.vht_op_info.channel_width",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_roaming_consortium_oi1_len,
-     {"OI #1 Length", "wlan.roaming_consortium.oi1_len",
-      FT_UINT8, BASE_DEC, NULL, 0x0f,
-      NULL, HFILL }},
+    {&hf_he_operation_channel_center_freq_0,
+     {"Channel Center Frequency Segment 0", "wlan.ext_tag.he_operatoon.vht_op_info.chan_center_freq_seg_0",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_roaming_consortium_oi2_len,
-     {"OI #2 Length", "wlan.roaming_consortium.oi2_len",
-      FT_UINT8, BASE_DEC, NULL, 0xf0,
-      NULL, HFILL }},
+    {&hf_he_operation_channel_center_freq_1,
+     {"Channel Center Frequency Segment 1", "wlan.ext_tag.he_operatoon.vht_op_info.chan_center_freq_seg_1",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_roaming_consortium_oi1,
-     {"OI #1", "wlan.roaming_consortium.oi1",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_operation_max_bssid_indicator,
+     {"MaxBSSID Indicator", "wlan.ext_tag.he_operation.maxbssid_indicator",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_roaming_consortium_oi2,
-     {"OI #2", "wlan.roaming_consortium.oi2",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_muac_aci_aifsn,
+     {"AIC/AIFSN","wlan.ext_tag.mu_edca_parameter_set.aic_aifsn",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_roaming_consortium_oi3,
-     {"OI #3", "wlan.roaming_consortium.oi3",
-      FT_BYTES, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_mu_edca_timer,
+     {"MU EDCA Timer","wlan.ext_tag.mu_edca_parameter_set.mu_edca_timer",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    /* Timeout Interval */
-    {&hf_ieee80211_tag_timeout_int_type,
-     {"Timeout Interval Type", "wlan.timeout_int.type",
-      FT_UINT8, BASE_DEC, VALS(timeout_int_types), 0,
-      NULL, HFILL }},
+    {&hf_he_muac_ecwmin_ecwmax,
+     {"ECWmin/ECWmax","wlan.ext_tag.mu_edca_parameter_set.ecwmin_ecwmax",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_timeout_int_value,
-     {"Timeout Interval Value", "wlan.timeout_int.value",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_reuse_sr_control,
+     {"SR Control", "wlan.ext_tag.spatial_reuse.sr_control",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    /* Link Identifier */
-    {&hf_ieee80211_tag_link_id_bssid,
-     {"BSSID", "wlan.link_id.bssid",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_srp_disallowed,
+     {"SRP Disallowed", "wlan.ext_tag.spatial_reuse.sr_control.srp_dis",
+      FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_link_id_init_sta,
-     {"TDLS initiator STA Address", "wlan.link_id.init_sta",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_non_srg_obss_pd_sr_disallowed,
+     {"NON-SRG OBSS PD SR Disallowed", "wlan.ext_tag.spatial_reuse.sr_control.non_srg_obss_pd_sr_dis",
+      FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_link_id_resp_sta,
-     {"TDLS responder STA Address", "wlan.link_id.resp_sta",
-      FT_ETHER, BASE_NONE, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_non_srg_offset_present,
+     {"Non-SRG Offset Present", "wlan.ext_tag.spatial_reuse.sr_control.non_srg_ofs_present",
+      FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
 
-    /* Wakeup Schedule */
-    {&hf_ieee80211_tag_wakeup_schedule_offset,
-     {"Offset", "wlan.wakeup_schedule.offset",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_srg_information_present,
+     {"SRG Information Present", "wlan.ext_tag.spatial_reuse.sr_control.srg_info_present",
+     FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wakeup_schedule_interval,
-     {"Interval", "wlan.wakeup_schedule.interval",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_hesiga_spatial_reuse_value15_allowed,
+     {"HESIGA Spatial Reuse value 15 allowed", "wlan.ext_tag.spatial_reuse.sr_control.hesiga_val_15_allowed",
+      FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wakeup_schedule_awake_window_slots,
-     {"Awake Window Slots", "wlan.wakeup_schedule.awake_window_slots",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_sr_control_reserved,
+     {"Reserved", "wlan.ext_tag.spatial_reuse.sr_control.reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wakeup_schedule_max_awake_dur,
-     {"Maximum Awake Window Duration", "wlan.wakeup_schedule.max_awake_dur",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_non_srg_obss_pd_max_offset,
+     {"Non-SRG OBSS PD Max Offset", "wlan.ext_tag.spatial_reuse.non_srg_obss_pd_max_offset",
+      FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_wakeup_schedule_idle_count,
-     {"Idle Count", "wlan.wakeup_schedule.idle_count",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_srg_obss_pd_min_offset,
+     {"SRG OBSS PD Min Offset", "wlan.ext_tag.spatial_reuse.srg_obss_pd_min_offset",
+      FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    /* Channel Switch Timing */
-    {&hf_ieee80211_tag_channel_switch_timing_switch_time,
-     {"Switch Time", "wlan.channel_switch_timing.switch_time",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_srg_obss_pd_max_offset,
+     {"SRG OBSS PD Max Offset", "wlan.ext_tag.spatial_reuse.srg_obss_pd_max_offset",
+      FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_channel_switch_timing_switch_timeout,
-     {"Switch Timeout", "wlan.channel_switch_timing.switch_timeout",
-      FT_UINT16, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_srg_bss_color_bitmap,
+     {"SRG BSS Color Bitmap", "wlan.ext_tag.spatial_reuse.srg_bss_color_bitmap",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    /* PTI Control */
-    {&hf_ieee80211_tag_pti_control_tid,
-     {"TID", "wlan.pti_control.tid",
-      FT_UINT8, BASE_DEC, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_spatial_srg_partial_bssid_bitmap,
+     {"SRG Partial BSSID Bitmap", "wlan.ext_tag.spatial_reuse.srg_partial_bssid_bitmap",
+      FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pti_control_sequence_control,
-     {"Sequence Control", "wlan.pti_control.sequence_control",
-      FT_UINT16, BASE_HEX, NULL, 0,
-      NULL, HFILL }},
+    {&hf_he_resource_request_buffer_thresh,
+     {"Resource Request Buffer Threshold Exponent", "wlan.ext_tag.ndp_feedback.res_req_buf_thresh_exp",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    /* PU Buffer Status */
-    {&hf_ieee80211_tag_pu_buffer_status_ac_bk,
-     {"AC_BK traffic available", "wlan.pu_buffer_status.ac_bk",
-      FT_UINT8, BASE_DEC, NULL, 0x01,
-      NULL, HFILL }},
+    {&hf_he_bss_color_change_new_color_info,
+     {"New BSS Color Info", "wlan.ext_tag.bss_color_change.new_color_info",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pu_buffer_status_ac_be,
-     {"AC_BE traffic available", "wlan.pu_buffer_status.ac_be",
-      FT_UINT8, BASE_DEC, NULL, 0x02,
-      NULL, HFILL }},
+    {&hf_he_new_bss_color_info_color,
+     {"New BSS Color", "wlan.ext_tag.bss_color_change.new_bss_color",
+      FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pu_buffer_status_ac_vi,
-     {"AC_VI traffic available", "wlan.pu_buffer_status.ac_vi",
-      FT_UINT8, BASE_DEC, NULL, 0x04,
-      NULL, HFILL }},
+    {&hf_he_new_bss_color_info_reserved,
+     {"Reserved", "wlan.ext_tag.bss_color_change.new_color_reserved",
+      FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }},
 
-    {&hf_ieee80211_tag_pu_buffer_status_ac_vo,
-     {"AC_VO traffic available", "wlan.pu_buffer_status.ac_vo",
-      FT_UINT8, BASE_DEC, NULL, 0x08,
-      NULL, HFILL }},
+    {&hf_he_bss_color_change_switch_countdown,
+     {"BSS Color Switch Countdown", "wlan.ext_tag.bss_color_change.color_switch_countdown",
+      FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_mysterious_olpc_stuff,
-     {"Mysterious OLPC stuff", "wlan.mysterious_olpc_stuff",
-      FT_NONE, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_he_ess_report_planned_ess,
+     {"Planned ESS", "wlan.ext_tag.ess_report.ess_info.planned_ess",
+      FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
 
-    {&hf_ieee80211_ext_tag,
-     {"Ext Tag", "wlan.ext_tag",
-      FT_NONE, BASE_NONE, 0x0, 0,
-      NULL, HFILL }},
+    {&hf_he_ess_report_edge_of_ess,
+     {"Edge of ESS", "wlan.ext_tag.ess_report.ess_info.edge_of_ess",
+      FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
 
-    {&hf_ieee80211_ext_tag_number,
-     {"Ext Tag Number", "wlan.ext_tag.number",
-      FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_eid_ext_ext, 0,
-      "Element ID", HFILL }},
+    {&hf_he_ess_report_info_field,
+     {"ESS Information field", "wlan.ext_tag.ess_report.ess_info.field",
+     FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
 
-    {&hf_ieee80211_ext_tag_length,
-     {"Ext Tag length", "wlan.ext_tag.length",
-      FT_UINT32, BASE_DEC, NULL, 0,
-      "Length of tag", HFILL }},
+    {&hf_he_ess_report_recommend_transition_thresh,
+     {"Recommended BSS Transition Threshold", "wlan.ext_tag.ess_report.ess_info.thresh",
+     FT_UINT8, BASE_DEC, NULL, 0xFC, NULL, HFILL }},
 
-    {&hf_ieee80211_fils_session,
-     {"FILS Session", "wlan.ext_tag.fils.session",
-      FT_BYTES, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_he_uora_field,
+     {"UL OFDMA-based Random Access Parameter SET", "wlan.ext_tag.uora_parameter_set.field",
+      FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
 
-    {&hf_ieee80211_fils_wrapped_data,
-     {"FILS Wrapped Data", "wlan.ext_tag.fils.wrapped_data",
-      FT_BYTES, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }},
+    {&hf_he_uora_eocwmin,
+     {"EOCWmin", "wlan.ext_tag.uora_parameter_set.eocwmin",
+      FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
 
-    {&hf_ieee80211_fils_nonce,
-     {"FILS Nonce", "wlan.ext_tag.fils.nonce",
-      FT_BYTES, BASE_NONE, NULL, 0x0,
-      NULL, HFILL }}
+    {&hf_he_uora_owcwmax,
+     {"EOCWmax", "wlan.ext_tag.uora_parameter_set.eocwmax",
+      FT_UINT8, BASE_DEC, NULL, 0x38, NULL, HFILL }},
+
+    {&hf_he_uora_reserved,
+     {"Reserved", "wlan.ext_tag.uora_parameter_set.reserved",
+      FT_UINT8, BASE_DEC, NULL, 0xC0, NULL, HFILL }},
   };
 
   static hf_register_info aggregate_fields[] = {
@@ -28551,7 +33629,11 @@ proto_register_ieee80211(void)
     &ett_fragments,
     &ett_fragment,
     &ett_block_ack,
+    &ett_block_ack_tid,
+    &ett_block_ack_request_control,
     &ett_block_ack_bitmap,
+    &ett_block_ack_request_multi_sta_aid_tid,
+    &ett_multi_sta_block_ack,
     &ett_ath_cap_tree,
 
     &ett_80211_mgt,
@@ -28600,8 +33682,16 @@ proto_register_ieee80211(void)
     &ett_hta_cap2_tree,
 
     &ett_htc_tree,
+    &ett_htc_he_a_control,
     &ett_mfb_subtree,
     &ett_lac_subtree,
+    &ett_ieee80211_umrs_control,
+    &ett_ieee80211_om_control,
+    &ett_ieee80211_hla_control,
+    &ett_ieee80211_buffer_status_report,
+    &ett_ieee80211_control_uph,
+    &ett_ieee80211_bqr_control,
+    &ett_ieee80211_control_cci,
 
     &ett_vht_cap_tree,
     &ett_vht_mcsset_tree,
@@ -28611,8 +33701,11 @@ proto_register_ieee80211(void)
     &ett_vht_op_tree,
     &ett_vht_tpe_info_tree,
 
-    &ett_vht_ndp_annc_token_tree,
+    &ett_vht_ndp_annc,
     &ett_vht_ndp_annc_sta_info_tree,
+    &ett_vht_ndp_annc_sta_list,
+
+    &ett_he_mimo_control,
 
     &ett_ff_vhtmimo_cntrl,
     &ett_ff_vhtmimo_beamforming_report,
@@ -28649,6 +33742,7 @@ proto_register_ieee80211(void)
     &ett_tag_ex_cap7,
     &ett_tag_ex_cap8,
     &ett_tag_ex_cap89,
+    &ett_tag_ex_cap10,
 
     &ett_tag_rm_cap1,
     &ett_tag_rm_cap2,
@@ -28697,6 +33791,21 @@ proto_register_ieee80211(void)
 
     &ett_fcs,
 
+    &ett_hs20_osu_providers_list,
+    &ett_hs20_osu_provider_tree,
+    &ett_hs20_friendly_names_list,
+    &ett_hs20_friendly_name_tree,
+    &ett_hs20_osu_provider_method_list,
+    &ett_osu_icons_avail_list,
+    &ett_hs20_osu_icon_tree,
+    &ett_hs20_osu_service_desc_list,
+    &ett_hs20_osu_service_desc_tree,
+    &ett_hs20_venue_url,
+    &ett_hs20_advice_of_charge,
+    &ett_hs20_aoc_plan,
+
+    &ett_hs20_ofn_tree,
+
     &ett_adv_proto,
     &ett_adv_proto_tuple,
     &ett_gas_query,
@@ -28706,6 +33815,15 @@ proto_register_ieee80211(void)
     &ett_tag_ric_data_desc_ie,
     &ett_anqp_vendor_capab,
 
+    &ett_osen_group_data_cipher_suite,
+    &ett_osen_pairwise_cipher_suites,
+    &ett_osen_pairwise_cipher_suite,
+    &ett_osen_akm_cipher_suites,
+    &ett_osen_akm_cipher_suite,
+    &ett_osen_rsn_cap_tree,
+    &ett_osen_pmkid_list,
+    &ett_osen_pmkid_tree,
+
     &ett_hs20_cc_proto_port_tuple,
 
     &ett_ssid_list,
@@ -28734,8 +33852,54 @@ proto_register_ieee80211(void)
     &ett_allocation_tree,
     &ett_sta_info,
 
+    &ett_ieee80211_esp,
+
     &ett_gas_resp_fragment,
-    &ett_gas_resp_fragments
+    &ett_gas_resp_fragments,
+
+    /* 802.11ax trees */
+    &ett_he_mac_capabilities,
+    &ett_he_phy_capabilities,
+    &ett_he_phy_cap_first_byte,
+    &ett_he_phy_cap_chan_width_set,
+    &ett_he_phy_cap_b8_to_b23,
+    &ett_he_phy_cap_b24_to_b39,
+    &ett_he_phy_cap_b40_to_b55,
+    &ett_he_phy_cap_b56_to_b71,
+    &ett_he_mcs_and_nss_set,
+    &ett_he_rx_tx_he_mcs_map_lte_80,
+    &ett_he_rx_mcs_map_lte_80,
+    &ett_he_tx_mcs_map_lte_80,
+    &ett_he_rx_tx_he_mcs_map_160,
+    &ett_he_rx_mcs_map_160,
+    &ett_he_tx_mcs_map_160,
+    &ett_he_rx_tx_he_mcs_map_80_80,
+    &ett_he_rx_mcs_map_80_80,
+    &ett_he_tx_mcs_map_80_80,
+    &ett_he_ppe_threshold,
+    &ett_he_ppe_nss,
+    &ett_he_ppe_ru_alloc,
+    &ett_he_operation_params,
+    &ett_he_oper_basic_mcs,
+    &ett_he_operation_vht_op_info,
+    &ett_he_mu_edca_param,
+    &ett_he_uora_tree,
+    &ett_he_spatial_reuse_control,
+    &ett_he_ess_report_info_field,
+    &ett_he_bss_new_color_info,
+    &ett_he_trigger_common_info,
+    &ett_he_trigger_base_common_info,
+    &ett_he_trigger_bar_ctrl,
+    &ett_he_trigger_bar_info,
+    &ett_he_trigger_user_info,
+    &ett_he_trigger_base_user_info,
+    &ett_he_trigger_dep_basic_user_info,
+    &ett_he_trigger_dep_nfrp_user_info,
+    &ett_he_ndp_annc,
+    &ett_he_ndp_annc_sta_list,
+    &ett_he_ndp_annc_sta_item,
+    &ett_he_ndp_annc_sta_info,
+    &ett_ieee80211_3gpp_plmn,
   };
 
   static ei_register_info ei[] = {
@@ -28899,6 +34063,9 @@ proto_register_ieee80211(void)
   proto_register_field_array(proto_aggregate, aggregate_fields, array_length(aggregate_fields));
 
   proto_wlan = proto_register_protocol("IEEE 802.11 wireless LAN", "IEEE 802.11", "wlan");
+
+  heur_subdissector_list = register_heur_dissector_list("wlan_data", proto_wlan);
+
   /* Created to remove Decode As confusion */
   proto_centrino = proto_register_protocol("IEEE 802.11 wireless LAN (Centrino)", "IEEE 802.11 (Centrino)", "wlan_centrino");
   proto_register_field_array(proto_wlan, hf, array_length(hf));
@@ -28976,6 +34143,11 @@ proto_register_ieee80211(void)
     "and some also leave the IV (initialization vector).",
     &wlan_ignore_prot, wlan_ignore_prot_options, TRUE);
 
+  prefs_register_uint_preference(wlan_module, "wpa_key_mic_len",
+    "WPA Key MIC Length override",
+    "Some Key MIC lengths are greater than 16 bytes, so set the length you require",
+    10, &wlan_key_mic_len);
+
   prefs_register_obsolete_preference(wlan_module, "wep_keys");
 
   prefs_register_bool_preference(wlan_module, "enable_decryption",
@@ -29014,6 +34186,11 @@ proto_register_wlan_rsna_eapol(void)
 {
 
   static hf_register_info hf[] = {
+    {&hf_wlan_rsna_eapol_wpa_keydes_msgnr,
+     {"Message number", "wlan_rsna_eapol.keydes.msgnr",
+      FT_UINT8, BASE_DEC, NULL, 0x0,
+      NULL, HFILL }},
+
     {&hf_wlan_rsna_eapol_wpa_keydes_keyinfo,
      {"Key Information", "wlan_rsna_eapol.keydes.key_info",
       FT_UINT16, BASE_HEX, NULL, 0x0,
@@ -29160,30 +34337,30 @@ proto_reg_handoff_ieee80211(void)
   capture_dissector_add_uint("ppi", 105 /* DLT_DLT_IEEE802_11 */, ieee80211_cap_handle);
 
   /* Register handoff to Aruba GRE */
-  dissector_add_uint("gre.proto", GRE_ARUBA_8200, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8210, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8220, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8230, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8240, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8250, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8260, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8270, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8280, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8290, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82A0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82B0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82C0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82D0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82E0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_82F0, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8300, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8310, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8320, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8330, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8340, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8350, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8360, ieee80211_handle);
-  dissector_add_uint("gre.proto", GRE_ARUBA_8370, ieee80211_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8200, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8210, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8220, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8230, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8240, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8250, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8260, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8270, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8280, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8290, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82A0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82B0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82C0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82D0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82E0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_82F0, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8300, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8310, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8320, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8330, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8340, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8350, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8360, wlan_withoutfcs_handle);
+  dissector_add_uint("gre.proto", GRE_ARUBA_8370, wlan_withoutfcs_handle);
 
   data_encap_handle = create_dissector_handle(dissect_data_encap, proto_wlan);
   dissector_add_uint("ethertype", ETHERTYPE_IEEE80211_DATA_ENCAP,
@@ -29330,7 +34507,10 @@ proto_reg_handoff_ieee80211(void)
 
   dissector_add_uint("wlan.anqp.vendor_specific", OUI_WFA, create_dissector_handle(dissect_vendor_wifi_alliance_anqp, -1));
   dissector_add_uint("wlan.anqp.wifi_alliance.subtype", WFA_SUBTYPE_HS20_ANQP, create_dissector_handle(dissect_hs20_anqp, -1));
+  dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_SUBSCRIPTION_REMEDIATION, create_dissector_handle(dissect_hs20_subscription_remediation, -1));
+  dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_DEAUTHENTICATION_IMMINENT, create_dissector_handle(dissect_hs20_deauthentication_imminent, -1));
   dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_HS20_INDICATION, create_dissector_handle(dissect_hs20_indication, -1));
+  dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_OSEN, create_dissector_handle(dissect_hs20_osen, -1));
 }
 
 /*