No need to display *signed* power values in hex.
[metze/wireshark/wip.git] / epan / dissectors / packet-ieee80211.c
1 /* packet-ieee80211.c
2  * Routines for Wireless LAN (IEEE 802.11) dissection
3  * Copyright 2000, Axis Communications AB
4  *
5  * Wireshark - Network traffic analyzer
6  * By Gerald Combs <gerald@wireshark.org>
7  * Copyright 1998 Gerald Combs
8  *
9  * SPDX-License-Identifier: GPL-2.0-or-later
10  *
11  * Credits:
12  *
13  * The following people helped me by pointing out bugs etc. Thank you!
14  *
15  * Marco Molteni
16  * Lena-Marie Nilsson
17  * Magnus Hultman-Persson
18  */
19
20 /*
21  * 10/24/2005 - Add dissection for 802.11e
22  * Zhu Yi <yi.zhu@intel.com>
23  *
24  * 04/21/2008 - Added dissection for 802.11p
25  * Arada Systems <http://www.aradasystems.com>
26  *
27  * 04/20/2013 - Added dissection of 802.11ad according to the 9th draft of the standard.
28  * Extended as a project in the Laboratory of Computer Communication & Networking (LCCN), Computer Science Department, Technion, Israel.
29  * Majd Omari    <majd.omari@outlook.com>
30  * Jalil Moraney <moraney.jalil@outlook.com>
31  */
32
33 /*
34  * Reference :
35  * The 802.11 standard is "free", 6 month after the publication.
36  *
37  * IEEE Std 802.11-2012: Revision of IEEE Std 802.11-2007
38  * include 10 amendments (802.11k,r,y,w,n,p,z,v,u,s) 802.11-2007
39  * include 8 amendments (802.11a,b,d,e,g,h,i,j) 802.11-1999
40  * http://standards.ieee.org/getieee802/download/802.11-2012.pdf
41  *
42  * WAPI (IE 68)
43  * http://isotc.iso.org/livelink/livelink/fetch/-8913189/8913214/8913250/8913253/JTC001-N-9880.pdf?nodeid=8500308&vernum=-2
44  */
45
46 #include "config.h"
47
48 #include <math.h>
49
50 #include <epan/packet.h>
51 #include <epan/capture_dissectors.h>
52 #include <epan/exceptions.h>
53 #include <wsutil/pint.h>
54 #include <wsutil/str_util.h>
55 #include <epan/addr_resolv.h>
56 #include <epan/address_types.h>
57 #include <epan/strutil.h>
58 #include <epan/prefs.h>
59 #include <epan/reassemble.h>
60 #include "packet-ipx.h"
61 #include "packet-llc.h"
62 #include "packet-ieee80211.h"
63 #include <epan/etypes.h>
64 #include <epan/oui.h>
65 #include <epan/crc32-tvb.h>
66 #include <epan/crypt/wep-wpadefs.h>
67 #include <epan/expert.h>
68 #include <epan/conversation_table.h>
69 #include <epan/uat.h>
70 #include <epan/eapol_keydes_types.h>
71 #include <epan/to_str.h>
72 #include <epan/proto_data.h>
73
74 #include "packet-wps.h"
75 #include "packet-e212.h"
76 #include "packet-sflow.h"
77 #include "packet-gre.h"
78
79 #include <epan/crypt/dot11decrypt_ws.h>
80
81 void proto_register_ieee80211(void);
82 void proto_reg_handoff_ieee80211(void);
83 void proto_register_wlan_rsna_eapol(void);
84
85 extern value_string_ext eap_type_vals_ext; /* from packet-eap.c */
86
87 #ifndef roundup2
88 #define roundup2(x, y)  (((x)+((y)-1))&(~((y)-1)))  /* if y is powers of two */
89 #endif
90
91 /* bitmask for bits [l..h]
92  * taken from kernel's include/linux/bitops.h
93  */
94 #define GENMASK(h, l)  (((1U << ((h) - (l) + 1)) - 1) << (l))
95
96 /* Defragment fragmented 802.11 datagrams */
97 static gboolean wlan_defragment = TRUE;
98
99 /* call subdissector for retransmitted frames */
100 static gboolean wlan_subdissector = TRUE;
101
102 /* Check for the presence of the 802.11 FCS */
103 static gboolean wlan_check_fcs = FALSE;
104
105 /* Check the FCS checksum */
106 static gboolean wlan_check_checksum = TRUE;
107
108 /* Ignore vendor-specific HT elements */
109 static gboolean wlan_ignore_draft_ht = FALSE;
110
111 /* Ignore the Protection bit; assume packet is decrypted */
112 #define WLAN_IGNORE_PROT_NO     0
113 #define WLAN_IGNORE_PROT_WO_IV  1
114 #define WLAN_IGNORE_PROT_W_IV   2
115 static gint wlan_ignore_prot = WLAN_IGNORE_PROT_NO;
116
117 /* The Key MIC len has been set by the user */
118 static guint wlan_key_mic_len = 0;
119
120 /* Table for reassembly of fragments. */
121 static reassembly_table wlan_reassembly_table;
122
123 /* Statistical data */
124 static struct _wlan_stats wlan_stats;
125
126 /*-------------------------------------
127  * UAT for WEP decoder
128  *-------------------------------------
129  */
130 static uat_wep_key_record_t *uat_wep_key_records = NULL;
131 static uat_t                *wep_uat             = NULL;
132 static guint                 num_wepkeys_uat     = 0;
133
134 static void *
135 uat_wep_key_record_copy_cb(void* n, const void* o, size_t siz _U_)
136 {
137   uat_wep_key_record_t* new_key = (uat_wep_key_record_t *)n;
138   const uat_wep_key_record_t* old_key = (const uat_wep_key_record_t *)o;
139
140   new_key->string = g_strdup(old_key->string);
141
142   return new_key;
143 }
144
145 static gboolean
146 uat_wep_key_record_update_cb(void* r, char** err)
147 {
148   uat_wep_key_record_t* rec = (uat_wep_key_record_t *)r;
149   decryption_key_t* dk;
150   guint dk_type;
151
152   if (rec->string == NULL) {
153     *err = g_strdup("Key can't be blank");
154     return FALSE;
155   }
156
157   g_strstrip(rec->string);
158   dk = parse_key_string(rec->string, rec->key);
159
160   if (dk != NULL) {
161     dk_type = dk->type;
162     free_key_string(dk);
163     switch (dk_type) {
164       case DOT11DECRYPT_KEY_TYPE_WEP:
165       case DOT11DECRYPT_KEY_TYPE_WEP_40:
166       case DOT11DECRYPT_KEY_TYPE_WEP_104:
167         if (rec->key != DOT11DECRYPT_KEY_TYPE_WEP) {
168           *err = g_strdup("Invalid key format");
169           return FALSE;
170         }
171         break;
172       case DOT11DECRYPT_KEY_TYPE_WPA_PWD:
173         if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PWD) {
174           *err = g_strdup("Invalid key format");
175           return FALSE;
176         }
177         break;
178       case DOT11DECRYPT_KEY_TYPE_WPA_PSK:
179         if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PSK) {
180           *err = g_strdup("Invalid key format");
181           return FALSE;
182         }
183         break;
184       default:
185         *err = g_strdup("Invalid key format");
186         return FALSE;
187         break;
188     }
189   } else {
190     *err = g_strdup("Invalid key format");
191     return FALSE;
192   }
193   return TRUE;
194 }
195
196 static void
197 uat_wep_key_record_free_cb(void*r)
198 {
199   uat_wep_key_record_t* key = (uat_wep_key_record_t *)r;
200   g_free(key->string);
201 }
202
203 UAT_VS_DEF(uat_wep_key_records, key, uat_wep_key_record_t, guint8, 0, STRING_KEY_TYPE_WEP)
204 UAT_CSTRING_CB_DEF(uat_wep_key_records, string, uat_wep_key_record_t)
205
206 /* Stuff for the WEP/WPA/WPA2 decoder */
207 static gboolean enable_decryption = TRUE;
208
209 static void
210 ieee_80211_add_tagged_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo,
211                                   proto_tree *tree, int tagged_parameters_len, int ftype,
212                                   association_sanity_check_t *association_sanity_check);
213
214 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);
215
216 static int weak_iv(guchar *iv);
217
218 typedef struct mimo_control
219 {
220   guint8 nc;
221   guint8 nr;
222   gboolean chan_width;
223   guint8 grouping;
224   guint8 coefficient_size;
225   guint8 codebook_info;
226   guint8 remaining_matrix_segment;
227 } mimo_control_t;
228
229 /* ************************************************************************* */
230 /*                          Miscellaneous Constants                          */
231 /* ************************************************************************* */
232 #define SHORT_STR 256
233 #define IS_DMG_KEY 1
234 #define IS_AP_KEY 2
235 #define IS_CTRL_GRANT_OR_GRANT_ACK_KEY 2
236 /* ************************************************************************* */
237 /*  Define some very useful macros that are used to analyze frame types etc. */
238 /* ************************************************************************* */
239
240 /*
241  * Fetch the frame control field and swap it if needed.  "fcf" and "tvb"
242  * must be valid variables.
243  */
244 #define FETCH_FCF(off) ((option_flags & IEEE80211_COMMON_OPT_BROKEN_FC) ? \
245   GUINT16_SWAP_LE_BE(tvb_get_letohs(tvb, off)) : \
246   tvb_get_letohs(tvb, off))
247
248 /*
249  * Extract the fragment number and sequence number from the sequence
250  * control field.
251  */
252 #define SEQCTL_FRAGMENT_NUMBER(x) ((x) & 0x000F)
253 #define SEQCTL_SEQUENCE_NUMBER(x) (((x) & 0xFFF0) >> 4)
254
255 /*
256  * Extract subfields from the QoS control field.
257  */
258 #define QOS_TID(x)            ((x) & 0x000F)
259 #define QOS_PRIORITY(x)       ((x) & 0x0007)
260 #define QOS_EOSP(x)           (((x) & 0x0010) >> 4) /* end of service period */
261 #define QOS_ACK_POLICY(x)     (((x) & 0x0060) >> 5)
262 #define QOS_AMSDU_PRESENT(x)  (((x) & 0x0080) >> 6)
263 #define QOS_FIELD_CONTENT(x)  (((x) & 0xFF00) >> 8)
264 #define QOS_MESH_CONTROL_PRESENT(x) (((x) & 0x0100) >> 8)
265
266 #define QOS_FLAG_EOSP    0x0010
267
268 /*
269  * Extract subfields from the result of QOS_FIELD_CONTENT().
270  */
271 #define QOS_PS_BUF_STATE_INDICATED(x)  (((x) & 0x02) >> 1)
272 #define QOS_PS_HIGHEST_PRI_BUF_AC(x)   (((x) & 0x0C) >> 2)
273 #define QOS_PS_QAP_BUF_LOAD(x)         (((x) & 0xF0) >> 4)
274
275 /*
276  * Bits from the HT Control field.
277  * 802.11-2012 and 802.11ac-2013 8.2.4.6, 32 bits.
278  */
279 #define HTC_VHT              0x00000001
280 #define HTC_HE               0x00000002
281 #define HTC_MRQ              0x00000004
282 #define HTC_UNSOLICITED_MFB  0x20000000
283
284 /*
285  * Extract subfields from the HT Control field.
286  */
287 #define HTC_LAC(htc)           ((htc) & 0xFE)
288 #define HTC_LAC_MAI(htc)       (((htc) >> 2) & 0xF)
289 #define HTC_IS_ASELI(htc)      (HTC_LAC_MAI(htc) == 0xE)
290 #define HTC_LAC_MAI_MRQ(htc)   ((HTC_LAC_MAI(htc))  & 0x1)
291 #define HTC_LAC_MAI_MSI(htc)   ((HTC_LAC_MAI(htc) >> 1) & 0x7)
292 #define HTC_LAC_MFSI(htc)      (((htc) >> 4) & 0x7)
293 #define HTC_LAC_ASEL_CMD(htc)  (((htc) >> 9) & 0x7)
294 #define HTC_LAC_ASEL_DATA(htc) (((htc) >> 12) & 0xF)
295 #define HTC_LAC_MFB(htc)       (((htc) >> 9) & 0x7F)
296 #define HTC_CAL_POS(htc)       (((htc) >> 16) & 0x3)
297 #define HTC_CAL_SEQ(htc)       (((htc) >> 18) & 0x3)
298 #define HTC_CSI_STEERING(htc)  (((htc) >> 22) & 0x3)
299 #define HTC_NDP_ANN(htc)       (((htc) >> 24) & 0x1)
300 #define HTC_AC_CONSTRAINT(htc) (((htc) >> 30) & 0x1)
301 #define HTC_RDG_MORE_PPDU(htc) (((htc) >> 31) & 0x1)
302
303 #define HTC_MFB(htc)           (((htc) >> 9) & 0x7FFF)
304
305 /* VHT-MCS = 15, NUM_STS = 7 */
306 #define HTC_NO_FEEDBACK_PRESENT(mfb) (((mfb) & 0x7F) == 0x7F)
307
308 /*
309  * Extract subfields from the key octet in WEP-encrypted frames.
310  */
311 #define KEY_OCTET_WEP_KEY(x)   (((x) & 0xC0) >> 6)
312
313 #define KEY_EXTIV    0x20
314 #define EXTIV_LEN    8
315
316 /*
317  * Bits from the Mesh Flags field
318  */
319 #define MESH_FLAGS_ADDRESS_EXTENSION  0x3
320
321 /* ************************************************************************* */
322 /*              Constants used to identify cooked frame types                */
323 /* ************************************************************************* */
324 #define MGT_FRAME            0x00  /* Frame type is management */
325 #define CONTROL_FRAME        0x01  /* Frame type is control */
326 #define DATA_FRAME           0x02  /* Frame type is Data */
327 #define EXTENSION_FRAME      0x03  /* Frame type is Extension */
328
329 #define DATA_SHORT_HDR_LEN     24
330 #define DATA_LONG_HDR_LEN      30
331 #define MGT_FRAME_HDR_LEN      24  /* Length of Management frame-headers */
332
333 /* ************************************************************************* */
334 /*        Logical field codes (IEEE 802.11 encoding of tags)                 */
335 /* ************************************************************************* */
336 #define TAG_SSID                       0
337 #define TAG_SUPP_RATES                 1
338 #define TAG_FH_PARAMETER               2
339 #define TAG_DS_PARAMETER               3
340 #define TAG_CF_PARAMETER               4
341 #define TAG_TIM                        5
342 #define TAG_IBSS_PARAMETER             6
343 #define TAG_COUNTRY_INFO               7
344 #define TAG_FH_HOPPING_PARAMETER       8
345 #define TAG_FH_HOPPING_TABLE           9
346 #define TAG_REQUEST                   10
347 #define TAG_QBSS_LOAD                 11
348 #define TAG_EDCA_PARAM_SET            12
349 #define TAG_TSPEC                     13
350 #define TAG_TCLAS                     14
351 #define TAG_SCHEDULE                  15
352 #define TAG_CHALLENGE_TEXT            16
353
354 #define TAG_POWER_CONSTRAINT          32
355 #define TAG_POWER_CAPABILITY          33
356 #define TAG_TPC_REQUEST               34
357 #define TAG_TPC_REPORT                35
358 #define TAG_SUPPORTED_CHANNELS        36
359 #define TAG_CHANNEL_SWITCH_ANN        37
360 #define TAG_MEASURE_REQ               38
361 #define TAG_MEASURE_REP               39
362 #define TAG_QUIET                     40
363 #define TAG_IBSS_DFS                  41
364 #define TAG_ERP_INFO                  42
365 #define TAG_TS_DELAY                  43
366 #define TAG_TCLAS_PROCESS             44
367 #define TAG_HT_CAPABILITY             45 /* IEEE Stc 802.11n/D2.0 */
368 #define TAG_QOS_CAPABILITY            46
369 #define TAG_ERP_INFO_OLD              47 /* IEEE Std 802.11g/D4.0 */
370 #define TAG_RSN_IE                    48
371 /* Reserved 49 */
372 #define TAG_EXT_SUPP_RATES            50
373 #define TAG_AP_CHANNEL_REPORT         51
374 #define TAG_NEIGHBOR_REPORT           52
375 #define TAG_RCPI                      53
376 #define TAG_MOBILITY_DOMAIN           54  /* IEEE Std 802.11r-2008 */
377 #define TAG_FAST_BSS_TRANSITION       55  /* IEEE Std 802.11r-2008 */
378 #define TAG_TIMEOUT_INTERVAL          56  /* IEEE Std 802.11r-2008 */
379 #define TAG_RIC_DATA                  57  /* IEEE Std 802.11r-2008 */
380 #define TAG_DSE_REG_LOCATION          58
381 #define TAG_SUPPORTED_OPERATING_CLASSES             59 /* IEEE Std 802.11w-2009 */
382 #define TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT    60 /* IEEE Std 802.11w-2009 */
383 #define TAG_HT_INFO                   61  /* IEEE Stc 802.11n/D2.0 */
384 #define TAG_SECONDARY_CHANNEL_OFFSET  62  /* IEEE Stc 802.11n/D1.10/D2.0 */
385 #define TAG_BSS_AVG_ACCESS_DELAY      63
386 #define TAG_ANTENNA                   64
387 #define TAG_RSNI                      65
388 #define TAG_MEASURE_PILOT_TRANS       66
389 #define TAG_BSS_AVB_ADM_CAPACITY      67
390 #define TAG_IE_68_CONFLICT            68  /* Conflict: WAPI Vs. IEEE */
391 #define TAG_WAPI_PARAM_SET            68
392 #define TAG_BSS_AC_ACCESS_DELAY       68
393 #define TAG_TIME_ADV                  69  /* IEEE Std 802.11p-2010 */
394 #define TAG_RM_ENABLED_CAPABILITY     70
395 #define TAG_MULTIPLE_BSSID            71
396 #define TAG_20_40_BSS_CO_EX           72  /* IEEE P802.11n/D6.0 */
397 #define TAG_20_40_BSS_INTOL_CH_REP    73  /* IEEE P802.11n/D6.0 */
398 #define TAG_OVERLAP_BSS_SCAN_PAR      74  /* IEEE P802.11n/D6.0 */
399 #define TAG_RIC_DESCRIPTOR            75  /* IEEE Std 802.11r-2008 */
400 #define TAG_MMIE                      76  /* IEEE Std 802.11w-2009 */
401 #define TAG_EVENT_REQUEST             78
402 #define TAG_EVENT_REPORT              79
403 #define TAG_DIAGNOSTIC_REQUEST        80
404 #define TAG_DIAGNOSTIC_REPORT         81
405 #define TAG_LOCATION_PARAMETERS       82
406 #define TAG_NO_BSSID_CAPABILITY       83
407 #define TAG_SSID_LIST                 84
408 #define TAG_MULTIPLE_BSSID_INDEX      85
409 #define TAG_FMS_DESCRIPTOR            86
410 #define TAG_FMS_REQUEST               87
411 #define TAG_FMS_RESPONSE              88
412 #define TAG_QOS_TRAFFIC_CAPABILITY    89
413 #define TAG_BSS_MAX_IDLE_PERIOD       90
414 #define TAG_TFS_REQUEST               91
415 #define TAG_TFS_RESPONSE              92
416 #define TAG_WNM_SLEEP_MODE            93
417 #define TAG_TIM_BROADCAST_REQUEST     94
418 #define TAG_TIM_BROADCAST_RESPONSE    95
419 #define TAG_COLLOCATED_INTER_REPORT   96
420 #define TAG_CHANNEL_USAGE             97
421 #define TAG_TIME_ZONE                 98  /* IEEE Std 802.11v-2011 */
422 #define TAG_DMS_REQUEST               99
423 #define TAG_DMS_RESPONSE             100
424 #define TAG_LINK_IDENTIFIER          101  /* IEEE Std 802.11z-2010 */
425 #define TAG_WAKEUP_SCHEDULE          102  /* IEEE Std 802.11z-2010 */
426 #define TAG_CHANNEL_SWITCH_TIMING    104  /* IEEE Std 802.11z-2010 */
427 #define TAG_PTI_CONTROL              105  /* IEEE Std 802.11z-2010 */
428 #define TAG_PU_BUFFER_STATUS         106  /* IEEE Std 802.11z-2010 */
429 #define TAG_INTERWORKING             107  /* IEEE Std 802.11u-2011 */
430 #define TAG_ADVERTISEMENT_PROTOCOL   108  /* IEEE Std 802.11u-2011 */
431 #define TAG_EXPIDITED_BANDWIDTH_REQ  109  /* IEEE Std 802.11u-2011 */
432 #define TAG_QOS_MAP_SET              110  /* IEEE Std 802.11u-2011 */
433 #define TAG_ROAMING_CONSORTIUM       111  /* IEEE Std 802.11u-2011 */
434 #define TAG_EMERGENCY_ALERT_ID       112  /* IEEE Std 802.11u-2011 */
435 #define TAG_MESH_CONFIGURATION       113  /* IEEE Std 802.11s-2011 */
436 #define TAG_MESH_ID                  114  /* IEEE Std 802.11s-2011 */
437 #define TAG_MESH_LINK_METRIC_REPORT  115
438 #define TAG_CONGESTION_NOTIFICATION  116
439 #define TAG_MESH_PEERING_MGMT        117  /* IEEE Std 802.11s-2011 */
440 #define TAG_MESH_CHANNEL_SWITCH      118
441 #define TAG_MESH_AWAKE_WINDOW        119  /* IEEE Std 802.11s-2011 */
442 #define TAG_BEACON_TIMING            120
443 #define TAG_MCCAOP_SETUP_REQUEST     121
444 #define TAG_MCCAOP_SETUP_REPLY       122
445 #define TAG_MCCAOP_ADVERTISEMENT     123
446 #define TAG_MCCAOP_TEARDOWN          124
447 #define TAG_GANN                     125
448 #define TAG_RANN                     126  /* IEEE Std 802.11s-2011 */
449 #define TAG_EXTENDED_CAPABILITIES    127  /* IEEE Stc 802.11n/D1.10/D2.0 */
450 #define TAG_AGERE_PROPRIETARY        128
451 #define TAG_MESH_PREQ                130  /* IEEE Std 802.11s-2011 */
452 #define TAG_MESH_PREP                131  /* IEEE Std 802.11s-2011 */
453 #define TAG_MESH_PERR                132  /* IEEE Std 802.11s-2011 */
454 #define TAG_CISCO_CCX1_CKIP          133  /* Cisco Compatible eXtensions v1 */
455 #define TAG_CISCO_CCX2               136  /* Cisco Compatible eXtensions v2 */
456 #define TAG_PXU                      137
457 #define TAG_PXUC                     138
458 #define TAG_AUTH_MESH_PEERING_EXCH   139
459 #define TAG_MIC                      140
460 #define TAG_DESTINATION_URI          141
461 #define TAG_U_APSD_COEX              142
462 #define TAG_WAKEUP_SCHEDULE_AD       143  /* IEEE Std 802.11ad */
463 #define TAG_EXTENDED_SCHEDULE        144  /* IEEE Std 802.11ad */
464 #define TAG_STA_AVAILABILITY         145  /* IEEE Std 802.11ad */
465 #define TAG_DMG_TSPEC                146  /* IEEE Std 802.11ad */
466 #define TAG_NEXT_DMG_ATI             147  /* IEEE Std 802.11ad */
467 #define TAG_DMG_CAPABILITIES         148  /* IEEE Std 802.11ad */
468 #define TAG_CISCO_CCX3               149  /* Cisco Compatible eXtensions v3 */
469 #define TAG_CISCO_VENDOR_SPECIFIC    150  /* Cisco Compatible eXtensions */
470 #define TAG_DMG_OPERATION            151  /* IEEE Std 802.11ad */
471 #define TAG_DMG_BSS_PARAMETER_CHANGE 152  /* IEEE Std 802.11ad */
472 #define TAG_DMG_BEAM_REFINEMENT      153  /* IEEE Std 802.11ad */
473 #define TAG_CHANNEL_MEASURMENT_FB    154  /* IEEE Std 802.11ad */
474 #define TAG_AWAKE_WINDOW             157  /* IEEE Std 802.11ad */
475 #define TAG_MULTI_BAND               158  /* IEEE Std 802.11ad */
476 #define TAG_ADDBA_EXT                159  /* IEEE Std 802.11ad */
477 #define TAG_NEXTPCP_LIST             160  /* IEEE Std 802.11ad */
478 #define TAG_PCP_HANDOVER             161  /* IEEE Std 802.11ad */
479 #define TAG_DMG_LINK_MARGIN          162  /* IEEE Std 802.11ad */
480 #define TAG_SWITCHING_STREAM         163  /* IEEE Std 802.11ad */
481 #define TAG_SESSION_TRANSMISSION     164  /* IEEE Std 802.11ad */
482 #define TAG_DYN_TONE_PAIR_REP        165  /* IEEE Std 802.11ad */
483 #define TAG_CLUSTER_REP              166  /* IEEE Std 802.11ad */
484 #define TAG_RELAY_CAPABILITIES       167  /* IEEE Std 802.11ad */
485 #define TAG_RELAY_TRANSFER_PARAM     168  /* IEEE Std 802.11ad */
486 #define TAG_BEAMLINK_MAINTENANCE     169  /* IEEE Std 802.11ad */
487 #define TAG_MULTIPLE_MAC_SUBLAYERS   170  /* IEEE Std 802.11ad */
488 #define TAG_U_PID                    171  /* IEEE Std 802.11ad */
489 #define TAG_DMG_LINK_ADAPTION_ACK    172  /* IEEE Std 802.11ad */
490 #define TAG_SYMBOL_PROPRIETARY       173
491 #define TAG_MCCAOP_ADVERTISEMENT_OV  174
492 #define TAG_QUIET_PERIOD_REQ         175  /* IEEE Std 802.11ad */
493 #define TAG_QUIET_PERIOD_RES         177  /* IEEE Std 802.11ad */
494 #define TAG_ECPAC_POLICY             182  /* IEEE Std 802.11ad */
495 #define TAG_CLUSTER_TIME_OFFSET      183  /* IEEE Std 802.11ad */
496 #define TAG_ANTENNA_SECTOR_ID        190  /* IEEE Std 802.11ad */
497 #define TAG_VHT_CAPABILITY           191  /* IEEE Std 802.11ac/D3.1 */
498 #define TAG_VHT_OPERATION            192  /* IEEE Std 802.11ac/D3.1 */
499 #define TAG_EXT_BSS_LOAD             193  /* IEEE Std 802.11ac */
500 #define TAG_WIDE_BW_CHANNEL_SWITCH   194  /* IEEE Std 802.11ac */
501 #define TAG_VHT_TX_PWR_ENVELOPE      195  /* IEEE Std 802.11ac/D5.0 */
502 #define TAG_CHANNEL_SWITCH_WRAPPER   196  /* IEEE Std 802.11ac */
503 #define TAG_OPERATING_MODE_NOTIFICATION 199  /* IEEE Std 802.11ac */
504 #define TAG_VENDOR_SPECIFIC_IE       221
505 #define TAG_ELEMENT_ID_EXTENSION     255  /* IEEE Std 802.11ai */
506
507 static const value_string tag_num_vals[] = {
508   { TAG_SSID,                                 "SSID parameter set" },
509   { TAG_SUPP_RATES,                           "Supported Rates" },
510   { TAG_FH_PARAMETER,                         "FH Parameter set" },
511   { TAG_DS_PARAMETER,                         "DS Parameter set" },
512   { TAG_CF_PARAMETER,                         "CF Parameter set" },
513   { TAG_TIM,                                  "Traffic Indication Map (TIM)" },
514   { TAG_IBSS_PARAMETER,                       "IBSS Parameter set" },
515   { TAG_COUNTRY_INFO,                         "Country Information" },
516   { TAG_FH_HOPPING_PARAMETER,                 "Hopping Pattern Parameters" },
517   { TAG_FH_HOPPING_TABLE,                     "Hopping Pattern Table" },
518   { TAG_REQUEST,                              "Request" },
519   { TAG_QBSS_LOAD,                            "QBSS Load Element" },
520   { TAG_EDCA_PARAM_SET,                       "EDCA Parameter Set" },
521   { TAG_TSPEC,                                "Traffic Specification" },
522   { TAG_TCLAS,                                "Traffic Classification" },
523   { TAG_SCHEDULE,                             "Schedule" },
524   { TAG_CHALLENGE_TEXT,                       "Challenge text" },
525   { TAG_POWER_CONSTRAINT,                     "Power Constraint" },
526   { TAG_POWER_CAPABILITY,                     "Power Capability" },
527   { TAG_TPC_REQUEST,                          "TPC Request" },
528   { TAG_TPC_REPORT,                           "TPC Report" },
529   { TAG_SUPPORTED_CHANNELS,                   "Supported Channels" },
530   { TAG_CHANNEL_SWITCH_ANN,                   "Channel Switch Announcement" },
531   { TAG_MEASURE_REQ,                          "Measurement Request" },
532   { TAG_MEASURE_REP,                          "Measurement Report" },
533   { TAG_QUIET,                                "Quiet" },
534   { TAG_IBSS_DFS,                             "IBSS DFS" },
535   { TAG_ERP_INFO,                             "ERP Information" },
536   { TAG_TS_DELAY,                             "TS Delay" },
537   { TAG_TCLAS_PROCESS,                        "TCLAS Processing" },
538   { TAG_HT_CAPABILITY,                        "HT Capabilities (802.11n D1.10)" },
539   { TAG_QOS_CAPABILITY,                       "QoS Capability" },
540   { TAG_ERP_INFO_OLD,                         "ERP Information" }, /* Reserved... */
541   { TAG_RSN_IE,                               "RSN Information" },
542   { TAG_EXT_SUPP_RATES,                       "Extended Supported Rates" },
543   { TAG_AP_CHANNEL_REPORT,                    "AP Channel Report" },
544   { TAG_NEIGHBOR_REPORT,                      "Neighbor Report" },
545   { TAG_RCPI,                                 "RCPI" },
546   { TAG_MOBILITY_DOMAIN,                      "Mobility Domain" },
547   { TAG_FAST_BSS_TRANSITION,                  "Fast BSS Transition" },
548   { TAG_TIMEOUT_INTERVAL,                     "Timeout Interval" },
549   { TAG_RIC_DATA,                             "RIC Data" },
550   { TAG_DSE_REG_LOCATION,                     "DSE Registered Location" },
551   { TAG_SUPPORTED_OPERATING_CLASSES,          "Supported Operating Classes" },
552   { TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT, "Extended Channel Switch Announcement" },
553   { TAG_HT_INFO,                              "HT Information (802.11n D1.10)" },
554   { TAG_SECONDARY_CHANNEL_OFFSET,             "Secondary Channel Offset (802.11n D1.10)" },
555   { TAG_BSS_AVG_ACCESS_DELAY,                 "BSS Average Access Delay" },
556   { TAG_ANTENNA,                              "Antenna" },
557   { TAG_RSNI,                                 "RSNI" },
558   { TAG_MEASURE_PILOT_TRANS,                  "Measurement Pilot Transmission" },
559   { TAG_BSS_AVB_ADM_CAPACITY,                 "BSS Available Admission Capacity" },
560   { TAG_IE_68_CONFLICT,                       "BSS AC Access Delay/WAPI Parameter Set" },
561   { TAG_TIME_ADV,                             "Time Advertisement" },
562   { TAG_RM_ENABLED_CAPABILITY,                "RM Enabled Capabilities" },
563   { TAG_MULTIPLE_BSSID,                       "Multiple BSSID" },
564   { TAG_20_40_BSS_CO_EX,                      "20/40 BSS Coexistence" },
565   { TAG_20_40_BSS_INTOL_CH_REP,               "20/40 BSS Intolerant Channel Report" },   /* IEEE P802.11n/D6.0 */
566   { TAG_OVERLAP_BSS_SCAN_PAR,                 "Overlapping BSS Scan Parameters" },       /* IEEE P802.11n/D6.0 */
567   { TAG_RIC_DESCRIPTOR,                       "RIC Descriptor" },
568   { TAG_MMIE,                                 "Management MIC" },
569   { TAG_EVENT_REQUEST,                        "Event Request" },
570   { TAG_EVENT_REPORT,                         "Event Report" },
571   { TAG_DIAGNOSTIC_REQUEST,                   "Diagnostic Request" },
572   { TAG_DIAGNOSTIC_REPORT,                    "Diagnostic Report" },
573   { TAG_LOCATION_PARAMETERS,                  "Location Parameters" },
574   { TAG_NO_BSSID_CAPABILITY,                  "Non Transmitted BSSID Capability" },
575   { TAG_SSID_LIST,                            "SSID List" },
576   { TAG_MULTIPLE_BSSID_INDEX,                 "Multiple BSSID Index" },
577   { TAG_FMS_DESCRIPTOR,                       "FMS Descriptor" },
578   { TAG_FMS_REQUEST,                          "FMS Request" },
579   { TAG_FMS_RESPONSE,                         "FMS Response" },
580   { TAG_QOS_TRAFFIC_CAPABILITY,               "QoS Traffic Capability" },
581   { TAG_BSS_MAX_IDLE_PERIOD,                  "BSS Max Idle Period" },
582   { TAG_TFS_REQUEST,                          "TFS Request" },
583   { TAG_TFS_RESPONSE,                         "TFS Response" },
584   { TAG_WNM_SLEEP_MODE,                       "WNM-Sleep Mode" },
585   { TAG_TIM_BROADCAST_REQUEST,                "TIM Broadcast Request" },
586   { TAG_TIM_BROADCAST_RESPONSE,               "TIM Broadcast Response" },
587   { TAG_COLLOCATED_INTER_REPORT,              "Collocated Interference Report" },
588   { TAG_CHANNEL_USAGE,                        "Channel Usage" },
589   { TAG_TIME_ZONE,                            "Time Zone" },
590   { TAG_DMS_REQUEST,                          "DMS Request" },
591   { TAG_DMS_RESPONSE,                         "DMS Response" },
592   { TAG_LINK_IDENTIFIER,                      "Link Identifier" },
593   { TAG_WAKEUP_SCHEDULE,                      "Wakeup Schedule" },
594   { TAG_CHANNEL_SWITCH_TIMING,                "Channel Switch Timing" },
595   { TAG_PTI_CONTROL,                          "PTI Control" },
596   { TAG_PU_BUFFER_STATUS,                     "PU Buffer Status" },
597   { TAG_INTERWORKING,                         "Interworking" },
598   { TAG_ADVERTISEMENT_PROTOCOL,               "Advertisement Protocol"},
599   { TAG_EXPIDITED_BANDWIDTH_REQ,              "Expedited Bandwidth Request" },
600   { TAG_QOS_MAP_SET,                          "QoS Map Set" },
601   { TAG_ROAMING_CONSORTIUM,                   "Roaming Consortium" },
602   { TAG_EMERGENCY_ALERT_ID,                   "Emergency Alert Identifier" },
603   { TAG_MESH_CONFIGURATION,                   "Mesh Configuration" },
604   { TAG_MESH_ID,                              "Mesh ID" },
605   { TAG_MESH_LINK_METRIC_REPORT,              "Mesh Link Metric Report" },
606   { TAG_CONGESTION_NOTIFICATION,              "Congestion Notification" },
607   { TAG_MESH_PEERING_MGMT,                    "Mesh Peering Management" },
608   { TAG_MESH_CHANNEL_SWITCH,                  "Mesh Channel Switch Parameters" },
609   { TAG_MESH_AWAKE_WINDOW,                    "Mesh Awake Window" },
610   { TAG_BEACON_TIMING,                        "Beacon Timing" },
611   { TAG_MCCAOP_SETUP_REQUEST,                 "MCCAOP Setup Request" },
612   { TAG_MCCAOP_SETUP_REPLY,                   "MCCAOP SETUP Reply" },
613   { TAG_MCCAOP_ADVERTISEMENT,                 "MCCAOP Advertisement" },
614   { TAG_MCCAOP_TEARDOWN,                      "MCCAOP Teardown" },
615   { TAG_GANN,                                 "Gate Announcement" },
616   { TAG_RANN,                                 "Root Announcement" },
617   { TAG_EXTENDED_CAPABILITIES,                "Extended Capabilities" },
618   { TAG_AGERE_PROPRIETARY,                    "Agere Proprietary" },
619   { TAG_MESH_PREQ,                            "Path Request" },
620   { TAG_MESH_PREP,                            "Path Reply" },
621   { TAG_MESH_PERR,                            "Path Error" },
622   { TAG_CISCO_CCX1_CKIP,                      "Cisco CCX1 CKIP + Device Name" },
623   { TAG_CISCO_CCX2,                           "Cisco CCX2" },
624   { TAG_PXU,                                  "Proxy Update" },
625   { TAG_PXUC,                                 "Proxy Update Confirmation"},
626   { TAG_AUTH_MESH_PEERING_EXCH,               "Auhenticated Mesh Perring Exchange" },
627   { TAG_MIC,                                  "MIC (Message Integrity Code)" },
628   { TAG_DESTINATION_URI,                      "Destination URI" },
629   { TAG_U_APSD_COEX,                          "U-APSD Coexistence" },
630   { TAG_WAKEUP_SCHEDULE_AD,                   "Wakeup Schedule 802.11ad" },
631   { TAG_EXTENDED_SCHEDULE,                    "Extended Schedule" },
632   { TAG_STA_AVAILABILITY,                     "STA Availability" },
633   { TAG_DMG_TSPEC,                            "DMG TSPEC" },
634   { TAG_NEXT_DMG_ATI,                         "Next DMG ATI" },
635   { TAG_DMG_CAPABILITIES,                     "DMG Capabilities" },
636   { TAG_CISCO_CCX3,                           "Cisco Unknown 95" },
637   { TAG_CISCO_VENDOR_SPECIFIC,                "Vendor Specific" },
638   { TAG_DMG_OPERATION,                        "DMG Operating" },
639   { TAG_DMG_BSS_PARAMETER_CHANGE,             "DMG BSS Parameter Change" },
640   { TAG_DMG_BEAM_REFINEMENT,                  "DMG Beam Refinement" },
641   { TAG_CHANNEL_MEASURMENT_FB,                "Channel Measurement Feedback" },
642   { TAG_AWAKE_WINDOW,                         "Awake Window" },
643   { TAG_MULTI_BAND,                           "Multi Band" },
644   { TAG_ADDBA_EXT,                            "ADDBA Extension" },
645   { TAG_NEXTPCP_LIST,                         "NEXTPCP List" },
646   { TAG_PCP_HANDOVER,                         "PCP Handover" },
647   { TAG_DMG_LINK_MARGIN,                      "DMG Link Margin" },
648   { TAG_SWITCHING_STREAM,                     "Switching Stream" },
649   { TAG_SESSION_TRANSMISSION,                 "Session Transmission" },
650   { TAG_DYN_TONE_PAIR_REP,                    "Dynamic Tone Pairing Report" },
651   { TAG_CLUSTER_REP,                          "Cluster Report" },
652   { TAG_RELAY_CAPABILITIES,                   "Relay Capabilities" },
653   { TAG_RELAY_TRANSFER_PARAM,                 "Relay Transfer Parameter" },
654   { TAG_BEAMLINK_MAINTENANCE,                 "Beamlink Maintenance" },
655   { TAG_MULTIPLE_MAC_SUBLAYERS,               "Multiple MAC Sublayers" },
656   { TAG_U_PID,                                "U-PID" },
657   { TAG_DMG_LINK_ADAPTION_ACK,                "DMG Link Adaption Acknowledgment" },
658   { TAG_SYMBOL_PROPRIETARY,                   "Symbol Proprietary" },
659   { TAG_MCCAOP_ADVERTISEMENT_OV,              "MCCAOP Advertisement Overview" },
660   { TAG_QUIET_PERIOD_REQ,                     "Quiet Period Request" },
661   { TAG_QUIET_PERIOD_RES,                     "Quiet Period Response" },
662   { TAG_ECPAC_POLICY,                         "ECPAC Policy" },
663   { TAG_CLUSTER_TIME_OFFSET,                  "Cluster Time Offset" },
664   { TAG_ANTENNA_SECTOR_ID,                    "Antenna Sector ID" },
665   { TAG_VHT_CAPABILITY,                       "VHT Capabilities" },
666   { TAG_VHT_OPERATION,                        "VHT Operation" },
667   { TAG_EXT_BSS_LOAD,                         "Extended BSS Load" },
668   { TAG_WIDE_BW_CHANNEL_SWITCH,               "Wide Bandwidth Channel Switch" },
669   { TAG_VHT_TX_PWR_ENVELOPE,                  "VHT Tx Power Envelope" },
670   { TAG_CHANNEL_SWITCH_WRAPPER,               "Channel Switch Wrapper" },
671   { TAG_OPERATING_MODE_NOTIFICATION,          "Operating Mode Notification" },
672   { TAG_VENDOR_SPECIFIC_IE,                   "Vendor Specific" },
673   { TAG_ELEMENT_ID_EXTENSION,                 "Element ID Extension" },
674   { 0, NULL }
675 };
676 static value_string_ext tag_num_vals_ext = VALUE_STRING_EXT_INIT(tag_num_vals);
677
678 #define ETAG_ASSOC_DELAY_INFO          1
679 #define ETAG_FILS_REQ_PARAMS           2
680 #define ETAG_FILS_KEY_CONFIRM          3
681 #define ETAG_FILS_SESSION              4
682 #define ETAG_FILS_HLP_CONTAINER        5
683 #define ETAG_FILS_IP_ADDRESS_ASSIGN    6
684 #define ETAG_KEY_DELIVERY              7
685 #define ETAG_FILS_WRAPPED_DATA         8
686 #define ETAG_FTM_SYNC_INFO             9
687 #define ETAG_EXTENDED_REQUEST          10
688 #define ETAG_ESTIMATED_SERVICE_PARAM   11
689 #define ETAG_FILS_PUBLIC_KEY           12
690 #define ETAG_FILS_NONCE                13
691 #define ETAG_FUTURE_CHANNEL_GUIDANCE   14
692
693 /* 802.11AX defined tags */
694 #define ETAG_HE_CAPABILITIES                   35
695 #define ETAG_HE_OPERATION                      36
696 #define ETAG_UORA_PARAMETER_SET                37
697 #define ETAG_MU_EDCA_PARAMETER_SET             38
698 #define ETAG_SPATIAL_REUSE_PARAMETER_SET       39
699 #define ETAG_NDP_FEEDBACK_REPORT_PARAMETER_SET 41
700 #define ETAG_BSS_COLOR_CHANGE_ANNOUNCEMENT     42
701 #define ETAG_QUIET_TIME_PERIOD_SETUP           43
702 #define ETAG_ESS_REPORT                        44
703
704 static const value_string tag_num_vals_eid_ext[] = {
705   { ETAG_ASSOC_DELAY_INFO,                    "Association Delay Info" },
706   { ETAG_FILS_REQ_PARAMS,                     "FILS Request Parameters" },
707   { ETAG_FILS_KEY_CONFIRM,                    "FILS Key Confirmation" },
708   { ETAG_FILS_SESSION,                        "FILS Session" },
709   { ETAG_FILS_HLP_CONTAINER,                  "FILS HLP Container" },
710   { ETAG_FILS_IP_ADDRESS_ASSIGN,              "FILS IP Address Assignment" },
711   { ETAG_KEY_DELIVERY,                        "Key Delivery" },
712   { ETAG_FILS_WRAPPED_DATA,                   "FILS Wrapped Data" },
713   { ETAG_FTM_SYNC_INFO,                       "FTM Synchronization Information" },
714   { ETAG_EXTENDED_REQUEST,                    "Extended Request" },
715   { ETAG_ESTIMATED_SERVICE_PARAM,             "Estimated Service Parameters" },
716   { ETAG_FILS_PUBLIC_KEY,                     "FILS Public Key" },
717   { ETAG_FILS_NONCE,                          "FILS Nonce" },
718   { ETAG_FUTURE_CHANNEL_GUIDANCE,             "Future Channel Guidance" },
719   { ETAG_HE_CAPABILITIES,                     "HE Capabilities (IEEE Std 802.11ax/D2.0)" },
720   { ETAG_HE_OPERATION,                        "HE Operation (IEEE Std 802.11ax/D2.0)" },
721   { ETAG_UORA_PARAMETER_SET,                  "UORA Parameter Set" },
722   { ETAG_MU_EDCA_PARAMETER_SET,               "MU EDCA Parameter Set" },
723   { ETAG_SPATIAL_REUSE_PARAMETER_SET,         "Spatial Reuse Parameter Set" },
724   { ETAG_NDP_FEEDBACK_REPORT_PARAMETER_SET,   "NDP Feedback Report Parameter Set" },
725   { ETAG_BSS_COLOR_CHANGE_ANNOUNCEMENT,       "BSS Color Change Announcement" },
726   { ETAG_QUIET_TIME_PERIOD_SETUP,             "Quiet Time Period Setup" },
727   { ETAG_ESS_REPORT,                          "ESS Report" },
728   { 0, NULL }
729 };
730 static value_string_ext tag_num_vals_eid_ext_ext = VALUE_STRING_EXT_INIT(tag_num_vals_eid_ext);
731
732 static const value_string wfa_subtype_vals[] = {
733   { WFA_SUBTYPE_SUBSCRIPTION_REMEDIATION, "Subscription Remediation" },
734   { WFA_SUBTYPE_DEAUTHENTICATION_IMMINENT, "Deauthentication Imminent" },
735   { WFA_SUBTYPE_P2P, "P2P" },
736   { WFA_SUBTYPE_HS20_INDICATION, "Hotspot 2.0 Indication" },
737   { WFA_SUBTYPE_HS20_ANQP, "Hotspot 2.0 ANQP" },
738   { WFA_SUBTYPE_OSEN, "OSU Server-only l2 Encryption Network" },
739   { WFA_SUBTYPE_DPP, "Device Provisioning Protocol" },
740   { WFA_SUBTYPE_IEEE1905_MULTI_AP, "IEEE1905 Multi-AP" },
741   { 0, NULL }
742 };
743
744 #define DPP_CONFIGURATION_PROTOCOL 0x01
745
746 static const value_string dpp_subtype_vals[] = {
747   { DPP_CONFIGURATION_PROTOCOL, "DPP Configuration Protocol" },
748   { 0, NULL }
749 };
750
751 /* ************************************************************************* */
752 /*              Supported Rates (7.3.2.2)                                    */
753 /* ************************************************************************* */
754
755 static const value_string ieee80211_supported_rates_vals[] = {
756   { 0x02, "1" },
757   { 0x03, "1.5" },
758   { 0x04, "2" },
759   { 0x05, "2.5" },
760   { 0x06, "3" },
761   { 0x09, "4.5" },
762   { 0x0B, "5.5" },
763   { 0x0C, "6" },
764   { 0x12, "9" },
765   { 0x16, "11" },
766   { 0x18, "12" },
767   { 0x1B, "13.5" },
768   { 0x24, "18" },
769   { 0x2C, "22" },
770   { 0x30, "24" },
771   { 0x36, "27" },
772   { 0x42, "33" },
773   { 0x48, "36" },
774   { 0x60, "48" },
775   { 0x6C, "54" },
776   { 0x82, "1(B)" },
777   { 0x83, "1.5(B)" },
778   { 0x84, "2(B)" },
779   { 0x85, "2.5(B)" },
780   { 0x86, "3(B)" },
781   { 0x89, "4.5(B)" },
782   { 0x8B, "5.5(B)" },
783   { 0x8C, "6(B)" },
784   { 0x92, "9(B)" },
785   { 0x96, "11(B)" },
786   { 0x98, "12(B)" },
787   { 0x9B, "13.5(B)" },
788   { 0xA4, "18(B)" },
789   { 0xAC, "22(B)" },
790   { 0xB0, "24(B)" },
791   { 0xB6, "27(B)" },
792   { 0xC2, "33(B)" },
793   { 0xC8, "36(B)" },
794   { 0xE0, "48(B)" },
795   { 0xEC, "54(B)" },
796   { 0xFF, "BSS requires support for mandatory features of HT PHY (IEEE 802.11 - Clause 20)" },
797   { 0,    NULL}
798 };
799 value_string_ext ieee80211_supported_rates_vals_ext = VALUE_STRING_EXT_INIT(ieee80211_supported_rates_vals);
800
801 /* ************************************************************************* */
802 /*                         8.4.1.7 Reason Code field                         */
803 /* ************************************************************************* */
804 static const value_string ieee80211_reason_code[] = {
805   {  1, "Unspecified reason" },
806   {  2, "Previous authentication no longer valid" },
807   {  3, "Deauthenticated because sending STA is leaving (or has left) IBSS or ESS" },
808   {  4, "Disassociated due to inactivity" },
809   {  5, "Disassociated because AP is unable to handle all currently associated STAs" },
810   {  6, "Class 2 frame received from nonauthenticated STA" },
811   {  7, "Class 3 frame received from nonassociated STA" },
812   {  8, "Disassociated because sending STA is leaving (or has left) BSS" },
813   {  9, "STA requesting (re)association is not authenticated with responding STA" },
814   { 10, "Disassociated because the information in the Power Capability element is unacceptable" },
815   { 11, "Disassociated because the information in the Supported Channels element is unacceptable" },
816   { 12, "Reserved" },
817   { 13, "Invalid information element, i.e., an information element defined in this standard for which the content does not meet the specifications in Clause 7" },
818   { 14, "Message integrity code (MIC) failure" },
819   { 15, "4-Way Handshake timeout" },
820   { 16, "Group Key Handshake timeout" },
821   { 17, "Information element in 4-Way Handshake different from (Re)Association Request/Probe Response/Beacon frame" },
822   { 18, "Invalid group cipher" },
823   { 19, "Invalid pairwise cipher" },
824   { 20, "Invalid AKMP" },
825   { 21, "Unsupported RSN information element version" },
826   { 22, "Invalid RSN information element capabilities" },
827   { 23, "IEEE 802.1X authentication failed" },
828   { 24, "Cipher suite rejected because of the security policy" },
829   { 25, "TDLS direct-link teardown due to TDLS peer STA unreachable via the TDLS direct link" },
830   { 26, "TDLS direct-link teardown for unspecified reason" },
831   { 27, "Disassociated because session terminated by SSP request" },
832   { 28, "Disassociated because of lack of SSP roaming agreement" },
833   { 29, "Requested service rejected because of SSP cipher suite or AKM requirement " },
834   { 30, "Requested service not authorized in this location" },
835   { 31, "TS deleted because QoS AP lacks sufficient bandwidth for this QoS STA due to a change in BSS service characteristics or operational mode" },
836   { 32, "Disassociated for unspecified, QoS-related reason" },
837   { 33, "Disassociated because QoS AP lacks sufficient bandwidth for this QoS STA" },
838   { 34, "Disassociated because excessive number of frames need to be acknowledged, but are not acknowledged due to AP transmissions and/or poor channel conditions" },
839   { 35, "Disassociated because STA is transmitting outside the limits of its TXOPs" },
840   { 36, "Requested from peer STA as the STA is leaving the BSS (or resetting)" },
841   { 37, "Requested from peer STA as it does not want to use the mechanism" },
842   { 38, "Requested from peer STA as the STA received frames using the mechanism for which a setup is required" },
843   { 39, "Requested from peer STA due to timeout" },
844   { 45, "Peer STA does not support the requested cipher suite" },
845   { 46, "Disassociated because authorized access limit reached" },
846   { 47, "Disassociated due to external service requirements" },
847   { 48, "Invalid FT Action frame count" },
848   { 49, "Invalid pairwise master key identifier (PMKI)" },
849   { 50, "Invalid MDE" },
850   { 51, "Invalid FTE" },
851   { 52, "SME cancels the mesh peering instance with the reason other than reaching the maximum number of peer mesh STAs" },
852   { 53, "The mesh STA has reached the supported maximum number of peer mesh STAs" },
853   { 54, "The received information violates the Mesh Configuration policy configured in the mesh STA profile" },
854   { 55, "The mesh STA has received a Mesh Peering Close message requesting to close the mesh peering" },
855   { 56, "The mesh STA has re-sent dot11MeshMaxRetries Mesh Peering Open messages, without receiving a Mesh Peering Confirm message" },
856   { 57, "The confirmTimer for the mesh peering instance times out" },
857   { 58, "The mesh STA fails to unwrap the GTK or the values in the wrapped contents do not match" },
858   { 59, "The mesh STA receives inconsistent information about the mesh parameters between Mesh Peering Management frames" },
859   { 60, "The mesh STA fails the authenticated mesh peering exchange because due to failure in selecting either the pairwise ciphersuite or group ciphersuite" },
860   { 61, "The mesh STA does not have proxy information for this external destination" },
861   { 62, "The mesh STA does not have forwarding information for this destination" },
862   { 63, "The mesh STA determines that the link to the next hop of an active path in its forwarding information is no longer usable" },
863   { 64, "The Deauthentication frame was sent because the MAC address of the STA already exists in the mesh BSS. See 11.3.3 (Additional mechanisms for an AP collocated with a mesh STA)" },
864   { 65, "The mesh STA performs channel switch to meet regulatory requirements" },
865   { 66, "The mesh STA performs channel switch with unspecified reason" },
866   { 0,    NULL}
867 };
868 static value_string_ext ieee80211_reason_code_ext = VALUE_STRING_EXT_INIT(ieee80211_reason_code);
869
870 /* ************************************************************************* */
871 /*                         8.4.1.9 Status Code field                         */
872 /* ************************************************************************* */
873 static const value_string ieee80211_status_code[] = {
874   {  0, "Successful" },
875   {  1, "Unspecified failure" },
876   {  2, "TDLS wakeup schedule rejected but alternative schedule provided" },
877   {  3, "TDLS wakeup schedule rejected" },
878   {  4, "Reserved" },
879   {  5, "Security disabled" },
880   {  6, "Unacceptable lifetime" },
881   {  7, "Not in same BSS" },
882   {  8, "Reserved" },
883   {  9, "Reserved" },
884   { 10, "Cannot support all requested capabilities in the Capability Information field" },
885   { 11, "Reassociation denied due to inability to confirm that association exists" },
886   { 12, "Association denied due to reason outside the scope of this standard" },
887   { 13, "Responding STA does not support the specified authentication algorithm" },
888   { 14, "Received an Authentication frame with authentication transaction sequence number out of expected sequence" },
889   { 15, "Authentication rejected because of challenge failure" },
890   { 16, "Authentication rejected due to timeout waiting for next frame in sequence" },
891   { 17, "Association denied because AP is unable to handle additional associated STAs" },
892   { 18, "Association denied due to requesting STA not supporting all of the data rates in the BSSBasicRateSet parameter" },
893   { 19, "Association denied due to requesting STA not supporting the short preamble option" },
894   { 20, "Association denied due to requesting STA not supporting the PBCC modulation option" },
895   { 21, "Association denied due to requesting STA not supporting the Channel Agility option" },
896   { 22, "Association request rejected because Spectrum Management capability is required" },
897   { 23, "Association request rejected because the information in the Power Capability element is unacceptable" },
898   { 24, "Association request rejected because the information in the Supported Channels element is unacceptable" },
899   { 25, "Association denied due to requesting STA not supporting the Short Slot Time option" },
900   { 26, "Association denied due to requesting STA not supporting the DSSS-OFDM option" },
901   { 27, "Reserved Association denied because the requesting STA does not support HT features" },
902   { 28, "R0KH unreachable" },
903   { 29, "Association denied because the requesting STA does not support the phased coexistence operation (PCO) transition time required by the AP" },
904   { 30, "Association request rejected temporarily; try again later" },
905   { 31, "Robust Management frame policy violation" },
906   { 32, "Unspecified, QoS-related failure" },
907   { 33, "Association denied because QoS AP or PCP has insufficient bandwidth to handle another QoS STA" },
908   { 34, "Association denied due to excessive frame loss rates and/or poor conditions on current operating channel" },
909   { 35, "Association (with QoS BSS) denied because the requesting STA does not support the QoS facility" },
910   { 36, "Reserved" },
911   { 37, "The request has been declined" },
912   { 38, "The request has not been successful as one or more parameters have invalid values" },
913   { 39, "The allocation or TS has not been created because the request cannot be honored; however, a suggested TSPEC/DMG TSPEC is provided so that the initiating STA may attempt to set another allocation or TS with the suggested changes to the TSPEC/DMG TSPEC" },
914   { 40, "Invalid information element, i.e., an information element defined in this standard for which the content does not meet the specifications in Clause 7" },
915   { 41, "Invalid group cipher" },
916   { 42, "Invalid pairwise cipher" },
917   { 43, "Invalid AKMP" },
918   { 44, "Unsupported RSN information element version" },
919   { 45, "Invalid RSN information element capabilities" },
920   { 46, "Cipher suite rejected because of security policy" },
921   { 47, "The TS per allocation has not been created; however, the PCP/HC may be capable of creating a TS or allocation, in response to a request, after the time indicated in the TS Delay element" },
922   { 48, "Direct link is not allowed in the BSS by policy" },
923   { 49, "The Destination STA is not present within this BSS" },
924   { 50, "The Destination STA is not a QoS STA" },
925   { 51, "Association denied because the ListenInterval is too large" },
926   { 52, "Invalid FT Action frame count" },
927   { 53, "Invalid pairwise master key identifier (PMKID)" },
928   { 54, "Invalid MDIE" },
929   { 55, "Invalid FTIE" },
930   { 56, "Requested TCLAS processing is not supported by the PCP/AP" },
931   { 57, "The PCP/AP has insufficient TCLAS processing resources to satisfy the request" },
932   { 58, "The TS has not been created because the request cannot be honored; however, the PCP/HC suggests the STA to transition to other BSSs to setup the TS" },
933   { 59, "GAS Advertisement Protocol not supported" },
934   { 60, "No outstanding GAS request" },
935   { 61, "GAS Response not received from the Advertisement Server" },
936   { 62, "STA timed out waiting for GAS Query Response" },
937   { 63, "GAS Response is larger than query response length limit" },
938   { 64, "Request refused because home network does not support request" },
939   { 65, "Advertisement Server in the network is not currently reachable" },
940   { 66, "Reserved" },
941   { 67, "Request refused due to permissions received via SSPN interface" },
942   { 68, "Request refused because PCP/AP does not support unauthenticated access" },
943   { 69, "Reserved" },
944   { 70, "Reserved" },
945   { 71, "Reserved" },
946   { 72, "Invalid contents of RSNIE" },
947   { 73, "U-APSD Coexistence is not supported" },
948   { 74, "Requested U-APSD Coexistence mode is not supported" },
949   { 75, "Requested Interval/Duration value cannot be supported with U-APSD Coexistence" },
950   { 76, "Authentication is rejected because an Anti-Clogging Token is required" },
951   { 77, "Authentication is rejected because the offered finite cyclic group is not supported" },
952   { 78, "The TBTT adjustment request has not been successful because the STA could not find an alternative TBTT" },
953   { 79, "Transmission failure" },
954   { 80, "Requested TCLAS Not Supported" },
955   { 81, "TCLAS Resources Exhausted" },
956   { 82, "Rejected with Suggested BSS Transition" },
957   { 83, "Reject with recommended schedule" },
958   { 84, "Reject because no wakeup schedule specified" },
959   { 85, "Success, the destination STA is in power save mode" },
960   { 86, "FST pending, in process of admitting FST session" },
961   { 87, "performing FST now" },
962   { 88, "FST pending, gap(s) in Block Ack window" },
963   { 89, "Reject because of U-PID setting" },
964   { 92, "(Re)association refused for some external reason" },
965   { 93, "(Re)association refused because of memory limits at the AP" },
966   { 94, "(Re)association refused because emergency services are not supported at the AP" },
967   { 95, "GAS query response not yet received" },
968   { 96, "Reject since the request is for transition to a frequency band subject to DSE procedures and FST initiator is a dependent STA" },
969   { 97, "Reserved" },
970   { 98, "Reserved" },
971   { 99, "The association has been denied; however, one or more Multi-band elements are included that can be used by the receiving STA to join the BSS" },
972   { 100, "The request failed due to a reservation conflict" },
973   { 101, "The request failed due to exceeded MAF limit" },
974   { 102, "The request failed due to exceeded MCCA track limit" },
975   { 103, "Association denied because the information in the Spectrum Management field is unacceptable" },
976   { 104, "Association denied because the requesting STA does not support VHT features" },
977   { 105, "Enablement denied" },
978   { 106, "Enablement denied due to restriction from an authorized GDB" },
979   { 107, "Authorization deenabled" },
980   { 0,    NULL}
981 };
982 static value_string_ext ieee80211_status_code_ext = VALUE_STRING_EXT_INIT(ieee80211_status_code);
983
984 static const value_string ieee80211_transition_reasons[] = {
985   { 0, "Unspecified" },
986   { 1, "Excessive frame loss rates and/or poor conditions" },
987   { 2, "Excessive delay for current traffic streams" },
988   { 3, "Insufficient QoS capacity for current traffic streams (TSPEC rejected)" },
989   { 4, "First association to ESS (the association initiated by an Association Request frame instead of a Reassociation Request frame)" },
990   { 5, "Load balancing" },
991   { 6, "Better AP found" },
992   { 7, "Deauthenticated or Disassociated from the previous AP" },
993   { 8, "AP failed IEEE 802.1X EAP Authentication" },
994   { 9, "AP failed 4-way handshake" },
995   { 10, "Received too many replay counter failures" },
996   { 11, "Received too many data MIC failures" },
997   { 12, "Exceeded maximum number of retransmissions" },
998   { 13, "Received too many broadcast disassociations" },
999   { 14, "Received too many broadcast deauthentications" },
1000   { 15, "Previous transition failed" },
1001   { 16, "Low RSSI" },
1002   { 17, "Roam from a non-IEEE-802.11 system" },
1003   { 18, "Transition due to received BSS Transition Request frame" },
1004   { 19, "Preferred BSS transition candidate list included" },
1005   { 20, "Leaving ESS" },
1006   { 0,    NULL}
1007 };
1008 /* ************************************************************************* */
1009 /*                         Frame types, and their names                      */
1010 /* ************************************************************************* */
1011 static const value_string frame_type_subtype_vals[] = {
1012   {MGT_ASSOC_REQ,             "Association Request"},
1013   {MGT_ASSOC_RESP,            "Association Response"},
1014   {MGT_REASSOC_REQ,           "Reassociation Request"},
1015   {MGT_REASSOC_RESP,          "Reassociation Response"},
1016   {MGT_PROBE_REQ,             "Probe Request"},
1017   {MGT_PROBE_RESP,            "Probe Response"},
1018   {MGT_MEASUREMENT_PILOT,     "Measurement Pilot"},
1019   {MGT_BEACON,                "Beacon frame"},
1020   {MGT_ATIM,                  "ATIM"},
1021   {MGT_DISASS,                "Disassociate"},
1022   {MGT_AUTHENTICATION,        "Authentication"},
1023   {MGT_DEAUTHENTICATION,      "Deauthentication"},
1024   {MGT_ACTION,                "Action"},
1025   {MGT_ACTION_NO_ACK,         "Action No Ack"},
1026   {MGT_ARUBA_WLAN,            "Aruba Management"},
1027
1028   {CTRL_TRIGGER,              "Trigger"},
1029   {CTRL_BEAMFORM_RPT_POLL,    "Beamforming Report Poll"},
1030   {CTRL_VHT_NDP_ANNC,         "VHT NDP Announcement"},
1031   {CTRL_CONTROL_WRAPPER,      "Control Wrapper"},
1032   {CTRL_BLOCK_ACK_REQ,        "802.11 Block Ack Req"},
1033   {CTRL_BLOCK_ACK,            "802.11 Block Ack"},
1034   {CTRL_PS_POLL,              "Power-Save poll"},
1035   {CTRL_RTS,                  "Request-to-send"},
1036   {CTRL_CTS,                  "Clear-to-send"},
1037   {CTRL_ACKNOWLEDGEMENT,      "Acknowledgement"},
1038   {CTRL_CFP_END,              "CF-End (Control-frame)"},
1039   {CTRL_CFP_ENDACK,           "CF-End + CF-Ack (Control-frame)"},
1040
1041   {DATA,                      "Data"},
1042   {DATA_CF_ACK,               "Data + CF-Ack"},
1043   {DATA_CF_POLL,              "Data + CF-Poll"},
1044   {DATA_CF_ACK_POLL,          "Data + CF-Ack + CF-Poll"},
1045   {DATA_NULL_FUNCTION,        "Null function (No data)"},
1046   {DATA_CF_ACK_NOD,           "Acknowledgement (No data)"},
1047   {DATA_CF_POLL_NOD,          "CF-Poll (No data)"},
1048   {DATA_CF_ACK_POLL_NOD,      "CF-Ack/Poll (No data)"},
1049   {DATA_QOS_DATA,             "QoS Data"},
1050   {DATA_QOS_DATA_CF_ACK,      "QoS Data + CF-Acknowledgment"},
1051   {DATA_QOS_DATA_CF_POLL,     "QoS Data + CF-Poll"},
1052   {DATA_QOS_DATA_CF_ACK_POLL, "QoS Data + CF-Ack + CF-Poll"},
1053   {DATA_QOS_NULL,             "QoS Null function (No data)"},
1054   {DATA_QOS_CF_POLL_NOD,      "QoS CF-Poll (No Data)"},
1055   {DATA_QOS_CF_ACK_POLL_NOD,  "QoS CF-Ack + CF-Poll (No data)"},
1056
1057   {EXTENSION_DMG_BEACON,      "DMG Beacon"},
1058
1059   {CTRL_POLL,                 "Poll"},
1060   {CTRL_SPR,                  "Service Period Request"},
1061   {CTRL_GRANT,                "Grant"},
1062   {CTRL_DMG_CTS,              "DMG Clear-to-send"},
1063   {CTRL_DMG_DTS,              "DMG Denial-to-send"},
1064   {CTRL_GRANT_ACK,            "Grant Acknowledgment"},
1065   {CTRL_SSW,                  "Sector Sweep"},
1066   {CTRL_SSW_FEEDBACK,         "Sector Sweep Feedback"},
1067   {CTRL_SSW_ACK,              "Sector Sweep Acknowledgment"},
1068
1069   {0,                         NULL}
1070 };
1071 static value_string_ext frame_type_subtype_vals_ext = VALUE_STRING_EXT_INIT(frame_type_subtype_vals);
1072
1073 /* ************************************************************************* */
1074 /*                 802.1D Tag Name (by WME Access Category Names)            */
1075 /* ************************************************************************* */
1076 static const value_string ieee80211_qos_tags_acs[] = {
1077   { 0, "Best Effort (Best Effort)" },
1078   { 1, "Background (Background)" },
1079   { 2, "Spare (Background)" },
1080   { 3, "Excellent Effort (Best Effort)" },
1081   { 4, "Controlled Load (Video)" },
1082   { 5, "Video (Video)" },
1083   { 6, "Voice (Voice)" },
1084   { 7, "Network Control (Voice)" },
1085   { 0, NULL }
1086 };
1087
1088 /* ************************************************************************* */
1089 /*                   WME Access Category Names (by WME ACI)                  */
1090 /* ************************************************************************* */
1091 static const value_string wme_acs[] = {
1092   { 0, "Best Effort" },
1093   { 1, "Background" },
1094   { 2, "Video" },
1095   { 3, "Voice" },
1096   { 0, NULL }
1097 };
1098
1099 /* ************************************************************************* */
1100 /*                  Aruba Management Type                                    */
1101 /* ************************************************************************* */
1102 static const value_string aruba_mgt_typevals[] = {
1103   { 0x0001,       "Hello" },
1104   { 0x0002,       "Probe" },
1105   { 0x0003,       "MTU" },
1106   { 0x0004,       "Ageout" },
1107   { 0x0005,       "Heartbeat" },
1108   { 0x0006,       "Deauth" },
1109   { 0x0007,       "Disassoc" },
1110   { 0x0008,       "Probe response" },
1111   { 0x0009,       "Tunnel update" },
1112   { 0x000A,       "Laser beam active" },
1113   { 0x000B,       "Client IP" },
1114   { 0x000C,       "Laser beam active v2" },
1115   { 0x000D,       "AP statistics" },
1116   { 0,            NULL }
1117 };
1118 static value_string_ext aruba_mgt_typevals_ext = VALUE_STRING_EXT_INIT(aruba_mgt_typevals);
1119
1120 /*** Begin: Action Fixed Parameter ***/
1121 #define CAT_SPECTRUM_MGMT          0
1122 #define CAT_QOS                    1
1123 #define CAT_DLS                    2
1124 #define CAT_BLOCK_ACK              3
1125 #define CAT_PUBLIC                 4
1126 #define CAT_RADIO_MEASUREMENT      5
1127 #define CAT_FAST_BSS_TRANSITION    6
1128 #define CAT_HT                     7
1129 #define CAT_SA_QUERY               8
1130 #define CAT_PUBLIC_PROTECTED       9
1131 #define CAT_WNM                   10
1132 #define CAT_UNPROTECTED_WNM       11
1133 #define CAT_TDLS                  12
1134 #define CAT_MESH                  13
1135 #define CAT_MULTIHOP              14
1136 #define CAT_SELF_PROTECTED        15
1137 #define CAT_DMG                   16
1138 #define CAT_MGMT_NOTIFICATION     17
1139 #define CAT_FAST_SESSION_TRANSFER 18
1140 #define CAT_ROBUST_AV_STREAMING   19
1141 #define CAT_UNPROTECTED_DMG       20
1142 #define CAT_VHT                   21
1143 #define CAT_HE                    30
1144 #define CAT_PROTECTED_HE          31
1145 #define CAT_VENDOR_SPECIFIC_PROTECTED 126
1146 #define CAT_VENDOR_SPECIFIC     127
1147
1148 #define CAT_MESH_LINK_METRIC               31
1149 #define CAT_MESH_PATH_SELECTION            32
1150 #define CAT_MESH_INTERWORKING              33
1151 #define CAT_MESH_RESOURCE_COORDINATION     34
1152 #define CAT_MESH_SECURITY_ARCHITECTURE     35
1153
1154 #define SM_ACTION_MEASUREMENT_REQUEST   0
1155 #define SM_ACTION_MEASUREMENT_REPORT    1
1156 #define SM_ACTION_TPC_REQUEST           2
1157 #define SM_ACTION_TPC_REPORT            3
1158 #define SM_ACTION_CHAN_SWITCH_ANNC      4
1159 #define SM_ACTION_EXT_CHAN_SWITCH_ANNC  5
1160
1161 #define QOS_ACTION_ADDTS_REQUEST     0
1162 #define QOS_ACTION_ADDTS_RESPONSE    1
1163 #define QOS_ACTION_DELTS             2
1164 #define QOS_ACTION_SCHEDULE      3
1165 #define QOS_ACTION_MAP_CONFIGURE 4
1166
1167 #define DLS_ACTION_REQUEST       0
1168 #define DLS_ACTION_RESPONSE      1
1169 #define DLS_ACTION_TEARDOWN      2
1170
1171 #define BA_ADD_BLOCK_ACK_REQUEST    0
1172 #define BA_ADD_BLOCK_ACK_RESPONSE   1
1173 #define BA_DELETE_BLOCK_ACK         2
1174
1175 /* Keep in sync with PPA_* defines */
1176 #define PA_20_40_BSS_COEXISTENCE_MANAGEMENT 0
1177 #define PA_DSE_ENABLEMENT                   1
1178 #define PA_DSE_DEENABLEMENT                 2
1179 #define PA_DSE_REG_LOC_ANNOUNCEMENT         3
1180 #define PA_EXT_CHANNEL_SWITCH_ANNOUNCEMENT  4
1181 #define PA_DSE_MEASUREMENT_REQUEST          5
1182 #define PA_DSE_MEASUREMENT_REPORT           6
1183 #define PA_MEASUREMENT_PILOT                7
1184 #define PA_DSE_POWER_CONSTRAINT             8
1185 #define PA_VENDOR_SPECIFIC                  9
1186 #define PA_GAS_INITIAL_REQUEST             10
1187 #define PA_GAS_INITIAL_RESPONSE            11
1188 #define PA_GAS_COMEBACK_REQUEST            12
1189 #define PA_GAS_COMEBACK_RESPONSE           13
1190 #define PA_TDLS_DISCOVERY_RESPONSE         14
1191 #define PA_LOCATION_TRACK_NOTIFICATION     15
1192 #define PA_QAB_REQUEST                     16
1193 #define PA_QAB_RESPONSE                    17
1194
1195 /* Keep in sync with PA_* defines */
1196 #define PPA_DSE_ENABLEMENT                   1
1197 #define PPA_DSE_DEENABLEMENT                 2
1198 #define PPA_EXT_CHANNEL_SWITCH_ANNOUNCEMENT  4
1199 #define PPA_DSE_MEASUREMENT_REQUEST          5
1200 #define PPA_DSE_MEASUREMENT_REPORT           6
1201 #define PPA_DSE_POWER_CONSTRAINT             8
1202 #define PPA_VENDOR_SPECIFIC                  9
1203 #define PPA_GAS_INITIAL_REQUEST             10
1204 #define PPA_GAS_INITIAL_RESPONSE            11
1205 #define PPA_GAS_COMEBACK_REQUEST            12
1206 #define PPA_GAS_COMEBACK_RESPONSE           13
1207 #define PPA_QAB_REQUEST                     16
1208 #define PPA_QAB_RESPONSE                    17
1209
1210 #define HT_ACTION_NOTIFY_CHAN_WIDTH           0
1211 #define HT_ACTION_SM_PWR_SAVE                 1
1212 #define HT_ACTION_PSMP_ACTION                 2
1213 #define HT_ACTION_SET_PCO_PHASE               3
1214 #define HT_ACTION_MIMO_CSI                    4
1215 #define HT_ACTION_MIMO_BEAMFORMING            5
1216 #define HT_ACTION_MIMO_COMPRESSED_BEAMFORMING 6
1217 #define HT_ACTION_ANT_SEL_FEEDBACK            7
1218 #define HT_ACTION_HT_INFO_EXCHANGE            8
1219
1220 #define DMG_ACTION_PWR_SAVE_CONFIG_REQ           0
1221 #define DMG_ACTION_PWR_SAVE_CONFIG_RES           1
1222 #define DMG_ACTION_INFO_REQ                      2
1223 #define DMG_ACTION_INFO_RES                      3
1224 #define DMG_ACTION_HANDOVER_REQ                  4
1225 #define DMG_ACTION_HANDOVER_RES                  5
1226 #define DMG_ACTION_DTP_REQ                       6
1227 #define DMG_ACTION_DTP_RES                       7
1228 #define DMG_ACTION_RELAY_SEARCH_REQ              8
1229 #define DMG_ACTION_RELAY_SEARCH_RES              9
1230 #define DMG_ACTION_MUL_RELAY_CHANNEL_MEASURE_REQ 10
1231 #define DMG_ACTION_MUL_RELAY_CHANNEL_MEASURE_RES 11
1232 #define DMG_ACTION_RLS_REQ                       12
1233 #define DMG_ACTION_RLS_RES                       13
1234 #define DMG_ACTION_RLS_ANNOUNCE                  14
1235 #define DMG_ACTION_RLS_TEARDOWN                  15
1236 #define DMG_ACTION_RELAY_ACK_REQ                 16
1237 #define DMG_ACTION_RELAY_ACK_RES                 17
1238 #define DMG_ACTION_TPA_REQ                       18
1239 #define DMG_ACTION_TPA_RES                       19
1240 #define DMG_ACTION_TPA_REP                       20
1241 #define DMG_ACTION_ROC_REQ                       21
1242 #define DMG_ACTION_ROC_RES                       22
1243
1244 #define UNPROTECTED_DMG_ANNOUNCE                 0
1245 #define UNPROTECTED_DMG_BRP                      1
1246
1247 #define FST_SETUP_REQUEST                        0
1248 #define FST_SETUP_RESPONSE                       1
1249 #define FST_TEAR_DOWN                            2
1250 #define FST_ACK_REQUEST                          3
1251 #define FST_ACK_RESPONSE                         4
1252 #define FST_ON_CHANNEL_TUNNEL_REQUEST            5
1253
1254 /* IEEE Std 802.11r-2008, 7.4.8, Table 7-57g */
1255 #define FT_ACTION_REQUEST               1
1256 #define FT_ACTION_RESPONSE              2
1257 #define FT_ACTION_CONFIRM               3
1258 #define FT_ACTION_ACK                   4
1259
1260 /* SA Query Action frame codes (IEEE 802.11w-2009, 7.4.9) */
1261 #define SA_QUERY_REQUEST                0
1262 #define SA_QUERY_RESPONSE               1
1263
1264 /* IEEE Std 802.11z-2010, 7.4.11, Table 7-57v1 */
1265 #define TDLS_SETUP_REQUEST              0
1266 #define TDLS_SETUP_RESPONSE             1
1267 #define TDLS_SETUP_CONFIRM              2
1268 #define TDLS_TEARDOWN                   3
1269 #define TDLS_PEER_TRAFFIC_INDICATION    4
1270 #define TDLS_CHANNEL_SWITCH_REQUEST     5
1271 #define TDLS_CHANNEL_SWITCH_RESPONSE    6
1272 #define TDLS_PEER_PSM_REQUEST           7
1273 #define TDLS_PEER_PSM_RESPONSE          8
1274 #define TDLS_PEER_TRAFFIC_RESPONSE      9
1275 #define TDLS_DISCOVERY_REQUEST          10
1276
1277 /* IEEE Std 802.11-2012, 8.5.7.1, Table 8-206 */
1278 #define RM_ACTION_RADIO_MEASUREMENT_REQUEST         0
1279 #define RM_ACTION_RADIO_MEASUREMENT_REPORT          1
1280 #define RM_ACTION_LINK_MEASUREMENT_REQUEST          2
1281 #define RM_ACTION_LINK_MEASUREMENT_REPORT           3
1282 #define RM_ACTION_NEIGHBOR_REPORT_REQUEST           4
1283 #define RM_ACTION_NEIGHBOR_REPORT_RESPONSE          5
1284
1285 /* 11s draft 12.0, table 7-57v30 */
1286 #define MESH_ACTION_LINK_METRIC_REPORT              0
1287 #define MESH_ACTION_HWMP                            1
1288 #define MESH_ACTION_GATE_ANNOUNCE                   2
1289 #define MESH_ACTION_CONGESTION_CTL                  3
1290 #define MESH_ACTION_MCCA_SETUP_REQUEST              4
1291 #define MESH_ACTION_MCCA_SETUP_REPLY                5
1292 #define MESH_ACTION_MCCA_ADV_REQUEST                6
1293 #define MESH_ACTION_MCCA_ADV                        7
1294 #define MESH_ACTION_MCCA_TEARDOWN                   8
1295 #define MESH_ACTION_TBTT_ADJ_REQUEST                9
1296 #define MESH_ACTION_TBTT_ADJ_RESPONSE              10
1297
1298 /* 11s draft 12.0, table 7-57v42: Multihop Action field values */
1299 #define MULTIHOP_ACTION_PROXY_UPDATE                0
1300 #define MULTIHOP_ACTION_PROXY_UPDATE_CONF           1
1301
1302 /* 11s draft 12.0, table 7-57v24: Self-protected Action field values */
1303 #define SELFPROT_ACTION_MESH_PEERING_OPEN           1
1304 #define SELFPROT_ACTION_MESH_PEERING_CONFIRM        2
1305 #define SELFPROT_ACTION_MESH_PEERING_CLOSE          3
1306 #define SELFPROT_ACTION_MESH_GROUP_KEY_INFORM       4
1307 #define SELFPROT_ACTION_MESH_GROUP_KEY_ACK          5
1308
1309 /* 11s draft 12.0, table 7-43bj6: Mesh Peering Protocol Identifier field values */
1310 #define MESH_PEERING_PROTO_MGMT                     0
1311 #define MESH_PEERING_PROTO_AMPE                     1
1312 #define MESH_PEERING_PROTO_VENDOR                 255
1313
1314 /* Vendor actions */
1315 /* MARVELL */
1316 #define MRVL_ACTION_MESH_MANAGEMENT     1
1317
1318 #define MRVL_MESH_MGMT_ACTION_RREQ      0
1319 #define MRVL_MESH_MGMT_ACTION_RREP      1
1320 #define MRVL_MESH_MGMT_ACTION_RERR      2
1321 #define MRVL_MESH_MGMT_ACTION_PLDM      3
1322
1323 #define ANQP_INFO_ANQP_QUERY_LIST                256
1324 #define ANQP_INFO_ANQP_CAPAB_LIST                257
1325 #define ANQP_INFO_VENUE_NAME_INFO                258
1326 #define ANQP_INFO_EMERGENCY_CALL_NUMBER_INFO     259
1327 #define ANQP_INFO_NETWORK_AUTH_TYPE_INFO         260
1328 #define ANQP_INFO_ROAMING_CONSORTIUM_LIST        261
1329 #define ANQP_INFO_IP_ADDR_TYPE_AVAILABILITY_INFO 262
1330 #define ANQP_INFO_NAI_REALM_LIST                 263
1331 #define ANQP_INFO_3GPP_CELLULAR_NETWORK_INFO     264
1332 #define ANQP_INFO_AP_GEOSPATIAL_LOCATION         265
1333 #define ANQP_INFO_AP_CIVIC_LOCATION              266
1334 #define ANQP_INFO_AP_LOCATION_PUBLIC_ID_URI      267
1335 #define ANQP_INFO_DOMAIN_NAME_LIST               268
1336 #define ANQP_INFO_EMERGENCY_ALERT_ID_URI         269
1337 #define ANQP_INFO_TDLS_CAPAB_INFO                270
1338 #define ANQP_INFO_EMERGENCY_NAI                  271
1339 #define ANQP_INFO_NEIGHBOR_REPORT                272
1340 #define ANQP_INFO_VENUE_URL                      277
1341 #define ANQP_INFO_ADVICE_OF_CHARGE               278
1342 #define ANQP_INFO_LOCAL_CONTENT                  279
1343 #define ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST    56797
1344
1345 /* ANQP information ID - IEEE Std 802.11u-2011 - Table 7-43bk */
1346 static const value_string anqp_info_id_vals[] = {
1347   {ANQP_INFO_ANQP_QUERY_LIST, "ANQP Query list"},
1348   {ANQP_INFO_ANQP_CAPAB_LIST, "ANQP Capability list"},
1349   {ANQP_INFO_VENUE_NAME_INFO, "Venue Name information"},
1350   {ANQP_INFO_EMERGENCY_CALL_NUMBER_INFO, "Emergency Call Number information"},
1351   {ANQP_INFO_NETWORK_AUTH_TYPE_INFO,
1352    "Network Authentication Type information"},
1353   {ANQP_INFO_ROAMING_CONSORTIUM_LIST, "Roaming Consortium list"},
1354   {ANQP_INFO_IP_ADDR_TYPE_AVAILABILITY_INFO,
1355    "IP Address Type Availability information"},
1356   {ANQP_INFO_NAI_REALM_LIST, "NAI Realm list"},
1357   {ANQP_INFO_3GPP_CELLULAR_NETWORK_INFO, "3GPP Cellular Network information"},
1358   {ANQP_INFO_AP_GEOSPATIAL_LOCATION, "AP Geospatial Location"},
1359   {ANQP_INFO_AP_CIVIC_LOCATION, "AP Civic Location"},
1360   {ANQP_INFO_AP_LOCATION_PUBLIC_ID_URI, "AP Location Public Identifier URI"},
1361   {ANQP_INFO_DOMAIN_NAME_LIST, "Domain Name list"},
1362   {ANQP_INFO_EMERGENCY_ALERT_ID_URI, "Emergency Alert Identifier URI"},
1363   {ANQP_INFO_TDLS_CAPAB_INFO, "TDLS Capability information"},
1364   {ANQP_INFO_EMERGENCY_NAI, "Emergency NAI"},
1365   {ANQP_INFO_NEIGHBOR_REPORT, "Neighbor Report"},
1366   {ANQP_INFO_VENUE_URL, "Venue URL"},
1367   {ANQP_INFO_ADVICE_OF_CHARGE, "Advice of Charge"},
1368   {ANQP_INFO_LOCAL_CONTENT, "Local Content"},
1369   {ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST, "ANQP vendor-specific list"},
1370   {0, NULL}
1371 };
1372 static value_string_ext anqp_info_id_vals_ext = VALUE_STRING_EXT_INIT(anqp_info_id_vals);
1373
1374 /* IEEE 802.11v - WNM Action field values */
1375 enum wnm_action {
1376   WNM_EVENT_REQ = 0,
1377   WNM_EVENT_REPORT = 1,
1378   WNM_DIAGNOSTIC_REQ = 2,
1379   WNM_DIAGNOSTIC_REPORT = 3,
1380   WNM_LOCATION_CFG_REQ = 4,
1381   WNM_LOCATION_CFG_RESP = 5,
1382   WNM_BSS_TRANS_MGMT_QUERY = 6,
1383   WNM_BSS_TRANS_MGMT_REQ = 7,
1384   WNM_BSS_TRANS_MGMT_RESP = 8,
1385   WNM_FMS_REQ = 9,
1386   WNM_FMS_RESP = 10,
1387   WNM_COLLOCATED_INTERFERENCE_REQ = 11,
1388   WNM_COLLOCATED_INTERFERENCE_REPORT = 12,
1389   WNM_TFS_REQ = 13,
1390   WNM_TFS_RESP = 14,
1391   WNM_TFS_NOTIFY = 15,
1392   WNM_SLEEP_MODE_REQ = 16,
1393   WNM_SLEEP_MODE_RESP = 17,
1394   WNM_TIM_BROADCAST_REQ = 18,
1395   WNM_TIM_BROADCAST_RESP = 19,
1396   WNM_QOS_TRAFFIC_CAPAB_UPDATE = 20,
1397   WNM_CHANNEL_USAGE_REQ = 21,
1398   WNM_CHANNEL_USAGE_RESP = 22,
1399   WNM_DMS_REQ = 23,
1400   WNM_DMS_RESP = 24,
1401   WNM_TIMING_MEASUREMENT_REQ = 25,
1402   WNM_NOTIFICATION_REQ = 26,
1403   WNM_NOTIFICATION_RESP = 27
1404 };
1405
1406 static const value_string wnm_action_codes[] = {
1407   { WNM_EVENT_REQ, "Event Request" },
1408   { WNM_EVENT_REPORT, "Event Report" },
1409   { WNM_DIAGNOSTIC_REQ, "Diagnostic Request" },
1410   { WNM_DIAGNOSTIC_REPORT, "Diagnostic Report" },
1411   { WNM_LOCATION_CFG_REQ, "Location Configuration Request" },
1412   { WNM_LOCATION_CFG_RESP, "Location Configuration Response" },
1413   { WNM_BSS_TRANS_MGMT_QUERY, "BSS Transition Management Query" },
1414   { WNM_BSS_TRANS_MGMT_REQ, "BSS Transition Management Request" },
1415   { WNM_BSS_TRANS_MGMT_RESP, "BSS Transition Management Response" },
1416   { WNM_FMS_REQ, "FMS Request" },
1417   { WNM_FMS_RESP, "FMS Response" },
1418   { WNM_COLLOCATED_INTERFERENCE_REQ, "Collocated Interference Request" },
1419   { WNM_COLLOCATED_INTERFERENCE_REPORT, "Collocated Interference Report" },
1420   { WNM_TFS_REQ, "TFS Request" },
1421   { WNM_TFS_RESP, "TFS Response" },
1422   { WNM_TFS_NOTIFY, "TFS Notify" },
1423   { WNM_SLEEP_MODE_REQ, "WNM-Sleep Mode Request" },
1424   { WNM_SLEEP_MODE_RESP, "WNM-Sleep Mode Response" },
1425   { WNM_TIM_BROADCAST_REQ, "TIM Broadcast Request" },
1426   { WNM_TIM_BROADCAST_RESP, "TIM Broadcast Response" },
1427   { WNM_QOS_TRAFFIC_CAPAB_UPDATE, "QoS Traffic Capability Update" },
1428   { WNM_CHANNEL_USAGE_REQ, "Channel Usage Request" },
1429   { WNM_CHANNEL_USAGE_RESP, "Channel Usage Response" },
1430   { WNM_DMS_REQ, "DMS Request" },
1431   { WNM_DMS_RESP, "DMS Response" },
1432   { WNM_TIMING_MEASUREMENT_REQ, "Timing Measurement Request" },
1433   { WNM_NOTIFICATION_REQ, "WNM-Notification Request" },
1434   { WNM_NOTIFICATION_RESP, "WNM-Notification Response" },
1435   { 0, NULL }
1436 };
1437 static value_string_ext wnm_action_codes_ext = VALUE_STRING_EXT_INIT(wnm_action_codes);
1438
1439 enum unprotected_wnm_action {
1440   UNPROTECTED_WNM_TIM = 0,
1441   UNPROTECTED_WNM_TIMING_MEASUREMENT = 1
1442 };
1443
1444 static const value_string unprotected_wnm_action_codes[] = {
1445   { UNPROTECTED_WNM_TIM, "TIM" },
1446   { UNPROTECTED_WNM_TIMING_MEASUREMENT, "Timing Measurement" },
1447   { 0, NULL }
1448 };
1449 static value_string_ext unprotected_wnm_action_codes_ext = VALUE_STRING_EXT_INIT(unprotected_wnm_action_codes);
1450
1451 static const value_string wnm_notification_types[] = {
1452   { 0, "Firmware Update Notification" },
1453   { 1, "Reserved for use by WFA" },
1454   { 221, "Vendor Specific" },
1455   { 0, NULL }
1456 };
1457
1458 static value_string_ext wnm_notification_types_ext =
1459   VALUE_STRING_EXT_INIT(wnm_notification_types);
1460
1461 /*** End: Action Fixed Parameter ***/
1462
1463 static const value_string ieee80211_tag_measure_request_type_flags[] = {
1464   {0x00, "Basic Request"},
1465   {0x01, "Clear Channel Assessment (CCA) Request"},
1466   {0x02, "Receive Power Indication (RPI) Histogram Request"},
1467   {0x03, "Channel Load Request"},
1468   {0x04, "Noise Histogram Request"},
1469   {0x05, "Beacon Request"},
1470   {0x06, "Frame Request"},
1471   {0x07, "STA Statistics Request"},
1472   {0x08, "Location Configuration Indication (LCI) Request"},
1473   {0x09, "Transmit Stream Measurement Request"},
1474   {0x0A, "Measurement Pause Request"},
1475   {0x00, NULL}
1476 };
1477 static value_string_ext ieee80211_tag_measure_request_type_flags_ext =
1478   VALUE_STRING_EXT_INIT(ieee80211_tag_measure_request_type_flags);
1479
1480 static const value_string ieee80211_tag_measure_report_type_flags[] = {
1481   { 0x00, "Basic Report" },
1482   { 0x01, "Clear Channel Assessment (CCA) Report" },
1483   { 0x02, "Receive Power Indication (RPI) Histogram Report" },
1484   { 0x03, "Channel Load Report" },
1485   { 0x04, "Noise Histogram Report" },
1486   { 0x05, "Beacon Report" },
1487   { 0x06, "Frame Report" },
1488   { 0x07, "STA Statistics Report" },
1489   { 0x08, "Location Configuration Information (LCI) Report" },
1490   { 0x09, "Transmit Stream Measurement Report" },
1491   { 0x00, NULL }
1492 };
1493 static value_string_ext ieee80211_tag_measure_report_type_flags_ext =
1494   VALUE_STRING_EXT_INIT(ieee80211_tag_measure_report_type_flags);
1495
1496 static const true_false_string ieee80211_tag_measure_report_frame_info_frame_type_flag = {
1497   "Measurement Pilot Frame",
1498   "Beacon/Probe Response Frame"
1499 };
1500
1501 static const true_false_string ieee80211_tag_measure_map_field_bss_flag = {
1502   "At least one MPDU was received by another BSS or IBSS in the measurement period.",
1503   "No MPDUs were received from another BSS or IBSS in the measurement period."
1504 };
1505
1506 static const value_string ieee80211_tag_measure_request_measurement_mode_flags[] = {
1507   { 0x00, "Passive" },
1508   { 0x01, "Active" },
1509   { 0x02, "Beacon Table" },
1510   { 0x00, NULL }
1511 };
1512
1513 #define MEASURE_REQ_BEACON_SUB_SSID 0
1514 #define MEASURE_REQ_BEACON_SUB_BRI 1
1515 #define MEASURE_REQ_BEACON_SUB_RD 2
1516 #define MEASURE_REQ_BEACON_SUB_REQUEST 10
1517 #define MEASURE_REQ_BEACON_SUB_APCP 51
1518 #define MEASURE_REQ_BEACON_SUB_VS 221
1519
1520 static const value_string ieee80211_tag_measure_request_beacon_sub_id_flags[] = {
1521   { MEASURE_REQ_BEACON_SUB_SSID, "SSID" },
1522   { MEASURE_REQ_BEACON_SUB_BRI, "Beacon Reporting Information" },
1523   { MEASURE_REQ_BEACON_SUB_RD, "Reporting Detail" },
1524   { MEASURE_REQ_BEACON_SUB_REQUEST, "Request" },
1525   { MEASURE_REQ_BEACON_SUB_APCP, "AP Channel Report" },
1526   { MEASURE_REQ_BEACON_SUB_VS, "Vendor Specific" },
1527   { 0x00, NULL}
1528 };
1529
1530 static const value_string ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition_flags[] = {
1531   { 0x00, "Report to be issued after each measurement." },
1532   { 0x01, "The measured RCPI level is greater than an absolute threshold." },
1533   { 0x02, "The measured RCPI level is less than an absolute threshold." },
1534   { 0x03, "The measured RSNI level is greater than an absolute threshold." },
1535   { 0x04, "The measured RSNI level is less than an absolute threshold." },
1536   { 0x05, "The measured RCPI level is greater than a threshold defined by an offset from the serving AP's reference RCPI." },
1537   { 0x06, "The measured RCPI level is less than a threshold defined by an offset from the serving AP's reference RCPI." },
1538   { 0x07, "The measured RSNI level is greater than a threshold defined by an offset from the serving AP's reference RSNI." },
1539   { 0x08, "The measured RSNI level is less than a threshold defined by an offset from the serving AP's reference RSNI." },
1540   { 0x09, "The measured RCPI level is in a range bound by the serving AP's reference RCPI and an offset from the serving AP's reference RCPI." },
1541   { 0x0a, "The measured RSNI level is in a range bound by the serving AP's reference RSNI and an offset from the serving AP's reference RSNI." },
1542   { 0xfe, "Report not required to be issued" },
1543   { 0x00, NULL }
1544 };
1545
1546 static const value_string ieee80211_tag_measure_request_beacon_sub_reporting_detail_flags[] = {
1547   { 0, "No fixed length fields or elements" },
1548   { 1, "All fixed length fields and any requested elements in the Request information element if present" },
1549   { 2, "All fixed length fields and elements (default, used when Reporting Detail subelement is not included in Beacon Request" },
1550   { 0x00, NULL }
1551 };
1552
1553 static const value_string ieee80211_tag_measure_request_group_id_flags[] = {
1554   { 0x00, "STA Counters from dot11CountersTable" },
1555   { 0x01, "STA Counters from dot11MacStatistics group" },
1556   { 0x02, "QoS STA Counters for UP0 from dot11QosCountersTable" },
1557   { 0x03, "QoS STA Counters for UP1 from dot11QosCountersTable" },
1558   { 0x04, "QoS STA Counters for UP2 from dot11QosCountersTable" },
1559   { 0x05, "QoS STA Counters for UP3 from dot11QosCountersTable" },
1560   { 0x06, "QoS STA Counters for UP4 from dot11QosCountersTable" },
1561   { 0x07, "QoS STA Counters for UP5 from dot11QosCountersTable" },
1562   { 0x08, "QoS STA Counters for UP6 from dot11QosCountersTable" },
1563   { 0x09, "QoS STA Counters for UP7 from dot11QosCountersTable" },
1564   { 0x0a, "BSS Average Access Delays" },
1565   { 0x0b, "STA Counters from dot11A-MSDU Group" },
1566   { 0x0c, "STA Counters from dot11A-MPDU Group" },
1567   { 0x0d, "STA Counters from dot11 BAR, Channel Width, PSMP Group" },
1568   { 0x0e, "STA Counters from dot11Protection Group" },
1569   { 0x0f, "STBC Group" },
1570   { 0x00, NULL }
1571 };
1572 static value_string_ext ieee80211_tag_measure_request_group_id_flags_ext =
1573   VALUE_STRING_EXT_INIT(ieee80211_tag_measure_request_group_id_flags);
1574
1575 static const value_string ieee80211_tclas_process_flag[] = {
1576   {0x00, "Incoming MSDU's higher layer parameters have to match to the parameters in all associated TCLAS elements."},
1577   {0x01, "Incoming MSDU's higher layer parameters have to match to at least one of the associated TCLAS elements."},
1578   {0x02, "Incoming MSDU's that do not belong to any other TS are classified to the TS for which this TCLAS Processing element is used. In this case, there will not be any associated TCLAS elements."},
1579   {0, NULL}
1580 };
1581
1582
1583 #define MEASURE_REQ_CHANNEL_LOAD_SUB_REPORTING_INFO 1
1584
1585 static const value_string ieee80211_tag_measure_request_channel_load_sub_id_vals[] = {
1586   { MEASURE_REQ_CHANNEL_LOAD_SUB_REPORTING_INFO, "Channel Load Reporting Information" },
1587   { 221, "Vendor Specific" },
1588   { 0x00, NULL}
1589 };
1590
1591 static const value_string ieee80211_tag_measure_request_channel_load_sub_reporting_condition_vals[] = {
1592   { 0x00, "Report to be issued after each measurement (default, used when Channel Load Reporting Information subelement is not included in Channel Load Request)." },
1593   { 0x01, "Report to be issued when measured Channel Load is equal to or greater than the reference value." },
1594   { 0x02, "Report to be issued when measured Channel Load is equal to or less than the reference value." },
1595   { 0x00, NULL}
1596 };
1597
1598 #define MEASURE_REQ_NOISE_HISTOGRAM_SUB_REPORTING_INFO 1
1599
1600 static const value_string ieee80211_tag_measure_request_noise_histogram_sub_id_vals[] = {
1601   { MEASURE_REQ_NOISE_HISTOGRAM_SUB_REPORTING_INFO, "Noise Histogram Reporting Information" },
1602   { 221, "Vendor Specific" },
1603   { 0x00, NULL}
1604 };
1605
1606 static const value_string ieee80211_tag_measure_request_noise_histogram_sub_reporting_condition_vals[] = {
1607   { 0x00, "Report to be issued after each measurement (default, used when Noise Histogram Reporting Information subelement is not included in Noise Histogram Request)." },
1608   { 0x01, "Noise Histogram Report to be issued when measured ANPI is equal to or greater than the reference value." },
1609   { 0x02, "Noise Histogram Report to be issued when measured ANPI is equal to or less than the reference value." },
1610   { 0x00, NULL}
1611 };
1612
1613 #define MEASURE_REP_REPORTED_FRAME_BODY 1
1614
1615 static const value_string ieee80211_tag_measure_report_beacon_sub_id_vals[] = {
1616   { MEASURE_REP_REPORTED_FRAME_BODY, "Reported Frame Body" },
1617   { 221, "Vendor Specific" },
1618   { 0x00, NULL}
1619 };
1620
1621 static const value_string frame_type[] = {
1622   {MGT_FRAME,       "Management frame"},
1623   {CONTROL_FRAME,   "Control frame"},
1624   {DATA_FRAME,      "Data frame"},
1625   {EXTENSION_FRAME, "Extension frame"},
1626   {0,               NULL}
1627 };
1628
1629 static const value_string tofrom_ds[] = {
1630   {0,                     "Not leaving DS or network is operating "
1631     "in AD-HOC mode (To DS: 0 From DS: 0)"},
1632   {FLAG_TO_DS,            "Frame from STA to DS via an AP (To DS: 1 "
1633     "From DS: 0)"},
1634   {FLAG_FROM_DS,          "Frame from DS to a STA via AP(To DS: 0 "
1635     "From DS: 1)"},
1636   {FLAG_TO_DS|FLAG_FROM_DS, "WDS (AP to AP) or Mesh (MP to MP) Frame "
1637     "(To DS: 1 From DS: 1)"},
1638   {0, NULL}
1639 };
1640
1641 static const true_false_string tods_flag = {
1642   "Frame is entering DS",
1643   "Frame is not entering DS"
1644 };
1645
1646 static const true_false_string fromds_flag = {
1647   "Frame is exiting DS",
1648   "Frame is not exiting DS"
1649 };
1650
1651 static const true_false_string more_fragments = {
1652   "More fragments follow",
1653   "This is the last fragment"
1654 };
1655
1656 static const true_false_string retry_flags = {
1657   "Frame is being retransmitted",
1658   "Frame is not being retransmitted"
1659 };
1660
1661 static const true_false_string pm_flags = {
1662   "STA will go to sleep",
1663   "STA will stay up"
1664 };
1665
1666 static const true_false_string md_flags = {
1667   "Data is buffered for STA at AP",
1668   "No data buffered"
1669 };
1670
1671 static const true_false_string protected_flags = {
1672   "Data is protected",
1673   "Data is not protected"
1674 };
1675
1676 static const true_false_string order_flags = {
1677   "Strictly ordered",
1678   "Not strictly ordered"
1679 };
1680
1681 static const true_false_string cf_ess_flags = {
1682   "Transmitter is an AP",
1683   "Transmitter is a STA"
1684 };
1685
1686
1687 static const true_false_string cf_privacy_flags = {
1688   "AP/STA can support WEP",
1689   "AP/STA cannot support WEP"
1690 };
1691
1692 static const true_false_string cf_ibss_flags = {
1693   "Transmitter belongs to an IBSS",
1694   "Transmitter belongs to a BSS"
1695 };
1696
1697 static const true_false_string eosp_flag = {
1698   "End of service period",
1699   "Service period"
1700 };
1701
1702 static const true_false_string bit4_flag = {
1703   "Bits 8-15 of QoS Control field are Queue Size",
1704   "Bits 8-15 of QoS Control field are TXOP Duration Requested"
1705 };
1706
1707 static const true_false_string ieee80211_qos_amsdu_present_flag = {
1708   "A-MSDU",
1709   "MSDU"
1710 };
1711
1712 static const true_false_string csa_txrestrict_flags = {
1713   "Tx Restrict",
1714   "No Tx Restrict"
1715 };
1716
1717 static const true_false_string csa_initiator_flags = {
1718   "Initiator",
1719   "Non Initiator"
1720 };
1721
1722 static const true_false_string mesh_config_cap_power_save_level_flags = {
1723    "One of the peer-specific mesh power modes is deep sleep mode",
1724    "No one is in deep sleep mode"
1725 };
1726
1727 static const value_string sta_cf_pollable[] = {
1728   {0x00, "Station is not CF-Pollable"},
1729   {0x02, "Station is CF-Pollable, not requesting to be placed on the  CF-polling list"},
1730   {0x01, "Station is CF-Pollable, requesting to be placed on the CF-polling list"},
1731   {0x03, "Station is CF-Pollable, requesting never to be polled"},
1732   {0x80, "QSTA requesting association in QBSS"},
1733   {0x81, "Reserved"},
1734   {0x82, "Reserved"},
1735   {0x83, "Reserved"},
1736   {0, NULL}
1737 };
1738
1739 static const value_string ap_cf_pollable[] = {
1740   {0x00, "No point coordinator at AP"},
1741   {0x02, "Point coordinator at AP for delivery only (no polling)"},
1742   {0x01, "Point coordinator at AP for delivery and polling"},
1743   {0x03, "Reserved"},
1744   {0x80, "QAP (HC) does not use CFP for delivery of unicast data type frames"},
1745   {0x82, "QAP (HC) uses CFP for delivery, but does not send CF-Polls to non-QoS STAs"},
1746   {0x81, "QAP (HC) uses CFP for delivery, and sends CF-Polls to non-QoS STAs"},
1747   {0x83, "Reserved"},
1748   {0, NULL}
1749 };
1750
1751
1752 static const value_string auth_alg[] = {
1753   {0x00, "Open System"},
1754   {0x01, "Shared key"},
1755   {0x02, "Fast BSS Transition"},
1756   {0x03, "Simultaneous Authentication of Equals (SAE)"},
1757   {0x04, "FILS Shared Key authentication without PFS"},
1758   {0x05, "FILS Shared Key authentication with PFS"},
1759   {0x06, "FILS Public Key authentication"},
1760   {0x80, "Network EAP"},  /* Cisco proprietary? */
1761   {0, NULL}
1762 };
1763
1764 static const true_false_string ff_block_ack_params_amsdu_permitted_flag = {
1765   "Permitted in QoS Data MPDUs",
1766   "Not Permitted"
1767 };
1768
1769 static const true_false_string ff_block_ack_params_policy_flag = {
1770   "Immediate Block Ack",
1771   "Delayed Block Ack"
1772 };
1773
1774 static const value_string  ff_channel_width_vals[] = {
1775   {0x00, "20 MHz channel width only"},
1776   {0x01, "Any channel width in the STA's Supported Channel Width Set"},
1777   {0, NULL}
1778 };
1779
1780 static const true_false_string ff_qos_info_ap_q_ack_flag = {
1781   "APs MIB attribute dot11QAckOptionImplemented is true",
1782   "APs MIB attribute dot11QAckOptionImplemented is false"
1783 };
1784
1785 static const true_false_string ff_qos_info_ap_queue_req_flag = {
1786   "AP can process a nonzero Queue Size subfield in the QoS Control field in QoS data frames",
1787   "AP cannot process a nonzero Queue Size subfield in the QoS Control field in QoS data frames"
1788 };
1789
1790 static const true_false_string ff_qos_info_ap_txop_request_flag = {
1791   "AP can process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames",
1792   "AP cannot process a nonzero TXOP Duration Requested subfield in the QoS Control field in QoS data frames"
1793 };
1794
1795 static const true_false_string ff_qos_info_sta_ac_flag = {
1796   "Trigger-enabled and Delivery-enabled",
1797   "Neither Trigger-enabled nor Delivery-enabled"
1798 };
1799
1800 static const true_false_string ff_qos_info_sta_q_ack_flag = {
1801   "STAs MIB attribute dot11QAckOptionImplemented is true",
1802   "STAs MIB attribute dot11QAckOptionImplemented is false"
1803 };
1804
1805 static const value_string ff_qos_info_sta_max_sp_len_flags[] = {
1806   {0x00, "AP may deliver all buffered MSDUs, A-MSDUs and MMPDUs"},
1807   {0x01, "AP may deliver a maximum of two MSDUs, A-MSDUs and MMPDUs per SP"},
1808   {0x02, "AP may deliver a maximum of four MSDUs, A-MSDUs and MMPDUs per SP"},
1809   {0x03, "AP may deliver a maximum of six MSDUs, A-MSDUs and MMPDUs per SP"},
1810   {0, NULL}
1811 };
1812
1813 static const true_false_string ff_qos_info_sta_more_data_ack_flag = {
1814   "STA can process ACK frames with the More Data bit in the Frame Control field set to 1 and will remain in the wake state",
1815   "STA cannot process ACK frames with the More Data bit in the Frame Control field set to 1"
1816 };
1817
1818 static const true_false_string ff_sm_pwr_save_sm_mode_flag = {
1819   "Dynamic SM Power Save mode",
1820   "Static SM Power Save mode"
1821 };
1822
1823 static const true_false_string ff_pco_phase_cntrl_flag = {
1824   "40 MHz Phase",
1825   "20 MHz Phase"
1826 };
1827
1828 static const true_false_string ff_psmp_param_set_more_psmp_flag = {
1829   "More PSMP Sequences Follow",
1830   "No PSMP Sequences Follow"
1831 };
1832
1833 static const value_string ff_mimo_cntrl_nc_index_flags[] = {
1834   {0x00, "1 Column"},
1835   {0x01, "2 Columns"},
1836   {0x02, "3 Columns"},
1837   {0x03, "4 Columns"},
1838   {0, NULL}
1839 };
1840
1841 static const value_string ff_mimo_cntrl_nr_index_flags[] = {
1842   {0x00, "1 Row"},
1843   {0x01, "2 Rows"},
1844   {0x02, "3 Rows"},
1845   {0x03, "4 Rows"},
1846   {0, NULL}
1847 };
1848
1849 static const true_false_string ff_mimo_cntrl_channel_width_flag = {
1850   "40 MHz",
1851   "20 MHz"
1852 };
1853
1854 static const true_false_string ff_ht_info_information_request_flag = {
1855   "Requesting HT Information Exchange management action frame",
1856   "Should not send an HT Information Exchange management action frame"
1857 };
1858
1859 static const true_false_string ff_ht_info_40_mhz_intolerant_flag = {
1860   "Transmitting station is intolerant of 40 MHz operation",
1861   "Transmitting station permits 40 MHz operation"
1862 };
1863
1864 static const true_false_string ff_ht_info_sta_chan_width_flag = {
1865   "40 MHz",
1866   "20 MHz"
1867 };
1868
1869 static const value_string ff_ht_action_flags[] = {
1870   {HT_ACTION_NOTIFY_CHAN_WIDTH,           "Notify Channel Width"},
1871   {HT_ACTION_SM_PWR_SAVE,                 "Spatial Multiplexing (SM) Power Save"},
1872   {HT_ACTION_PSMP_ACTION,                 "Power Save Multi-Poll (PSMP) action frame"},
1873   {HT_ACTION_SET_PCO_PHASE,               "Set PCO Phase"},
1874   {HT_ACTION_MIMO_CSI,                    "MIMO CSI Matrices"},
1875   {HT_ACTION_MIMO_BEAMFORMING,            "MIMO Non-compressed Beamforming"},
1876   {HT_ACTION_MIMO_COMPRESSED_BEAMFORMING, "MIMO Compressed Beamforming"},
1877   {HT_ACTION_ANT_SEL_FEEDBACK,            "Antenna Selection Indices Feedback"},
1878   {HT_ACTION_HT_INFO_EXCHANGE,            "HT Information Exchange"},
1879   {0x00, NULL}
1880 };
1881
1882 static const value_string ff_fst_action_flags[] = {
1883   {FST_SETUP_REQUEST,             "FST Setup Request"},
1884   {FST_SETUP_RESPONSE,            "FST Setup Response"},
1885   {FST_TEAR_DOWN,                 "FST Tear Down"},
1886   {FST_ACK_REQUEST,               "FST Ack Request"},
1887   {FST_ACK_RESPONSE,              "FST Ack Response"},
1888   {FST_ON_CHANNEL_TUNNEL_REQUEST, "FST On-channel Tunnel Request"},
1889   {0x00, NULL}
1890 };
1891
1892 static const value_string ff_dmg_action_flags[] = {
1893   {DMG_ACTION_PWR_SAVE_CONFIG_REQ,           "Power Save Configuration Request"},
1894   {DMG_ACTION_PWR_SAVE_CONFIG_RES,           "Power Save Configuration Response"},
1895   {DMG_ACTION_INFO_REQ,                      "Information Request"},
1896   {DMG_ACTION_INFO_RES,                      "Information Response"},
1897   {DMG_ACTION_HANDOVER_REQ,                  "Handover Request"},
1898   {DMG_ACTION_HANDOVER_RES,                  "Handover Response"},
1899   {DMG_ACTION_DTP_REQ,                       "DTP Request"},
1900   {DMG_ACTION_DTP_RES,                       "DTP Response"},
1901   {DMG_ACTION_RELAY_SEARCH_REQ,              "Relay Search Request"},
1902   {DMG_ACTION_RELAY_SEARCH_RES,              "Relay Search Response"},
1903   {DMG_ACTION_MUL_RELAY_CHANNEL_MEASURE_REQ, "Multi Relay Channel Measurement Request"},
1904   {DMG_ACTION_MUL_RELAY_CHANNEL_MEASURE_RES, "Multi Relay Channel Measurement Response"},
1905   {DMG_ACTION_RLS_REQ,                       "RLS Request"},
1906   {DMG_ACTION_RLS_RES,                       "RLS Response"},
1907   {DMG_ACTION_RLS_ANNOUNCE,                  "RLS Announcement"},
1908   {DMG_ACTION_RLS_TEARDOWN,                  "RLS Teardown"},
1909   {DMG_ACTION_RELAY_ACK_REQ,                 "Relay ACK Request"},
1910   {DMG_ACTION_RELAY_ACK_RES,                 "Relay ACK Response"},
1911   {DMG_ACTION_TPA_REQ,                       "TPA Request"},
1912   {DMG_ACTION_TPA_RES,                       "TPA Response"},
1913   {DMG_ACTION_TPA_REP,                       "TPA Report"},
1914   {DMG_ACTION_ROC_REQ,                       "ROC Request"},
1915   {DMG_ACTION_ROC_RES,                       "ROC Response"},
1916   {0x00, NULL}
1917 };
1918
1919 static const value_string ff_unprotected_dmg_action_flags[] = {
1920   {UNPROTECTED_DMG_ANNOUNCE,      "Announce"},
1921   {UNPROTECTED_DMG_BRP,           "BRP"},
1922   {0x00, NULL}
1923 };
1924 static const value_string ff_mimo_cntrl_grouping_flags[] = {
1925   {0x00, "No Grouping"},
1926   {0x01, "Carrier Groups of 2"},
1927   {0x02, "Carrier Groups of 4"},
1928   {0x03, "Reserved"},
1929   {0, NULL}
1930 };
1931
1932 static const value_string ff_mimo_cntrl_coefficient_size_flags[] = {
1933   {0x00, "4 Bits"},
1934   {0x01, "5 Bits"},
1935   {0x02, "6 Bits"},
1936   {0x03, "8 Bits"},
1937   {0, NULL}
1938 };
1939
1940 static const value_string ff_mimo_cntrl_codebook_info_flags[] = {
1941   {0x00, "1 bit for 'Capital Psi', 3 bits for 'Small Psi'"},
1942   {0x01, "2 bit for 'Capital Psi', 4 bits for 'Small Psi'"},
1943   {0x02, "3 bit for 'Capital Psi', 5 bits for 'Small Psi'"},
1944   {0x03, "4 bit for 'Capital Psi', 6 bits for 'Small Psi'"},
1945   {0, NULL}
1946 };
1947
1948 static const value_string ff_ppa_action_codes[] = {
1949   {PPA_DSE_ENABLEMENT,                  "Protected DSE enablement"},
1950   {PPA_DSE_DEENABLEMENT,                "Protected DSE deenablement"},
1951   {PPA_EXT_CHANNEL_SWITCH_ANNOUNCEMENT, "Protected Extended Channel Switch Announcement"},
1952   {PPA_DSE_MEASUREMENT_REQUEST,         "Protected DSE measurement request"},
1953   {PPA_DSE_MEASUREMENT_REPORT,          "Protected DSE measurement report"},
1954   {PPA_DSE_POWER_CONSTRAINT,            "Protected DSE power constraint"},
1955   {PPA_VENDOR_SPECIFIC,                 "Protected Vendor Specific"},
1956   {PPA_GAS_INITIAL_REQUEST,             "Protected GAS Initial Request"},
1957   {PPA_GAS_INITIAL_RESPONSE,            "Protected GAS Initial Response"},
1958   {PPA_GAS_COMEBACK_REQUEST,            "Protected GAS Comeback Request"},
1959   {PPA_GAS_COMEBACK_RESPONSE,           "Protected GAS Comeback Response"},
1960   {PPA_QAB_REQUEST,                     "Protected QAB Request"},
1961   {PPA_QAB_RESPONSE,                    "Protected QAB Response"},
1962   {0x00, NULL}
1963 };
1964 static value_string_ext ff_ppa_action_codes_ext = VALUE_STRING_EXT_INIT(ff_ppa_action_codes);
1965
1966 static const value_string ff_pa_action_codes[] = {
1967   {PA_20_40_BSS_COEXISTENCE_MANAGEMENT, "20/40 BSS Coexistence Management"},
1968   {PA_DSE_ENABLEMENT,                  "DSE enablement"},
1969   {PA_DSE_DEENABLEMENT,                "DSE deenablement"},
1970   {PA_DSE_REG_LOC_ANNOUNCEMENT,        "DSE Registered Location Announcement"},
1971   {PA_EXT_CHANNEL_SWITCH_ANNOUNCEMENT, "Extended Channel Switch Announcement"},
1972   {PA_DSE_MEASUREMENT_REQUEST,         "DSE measurement request"},
1973   {PA_DSE_MEASUREMENT_REPORT,          "DSE measurement report"},
1974   {PA_MEASUREMENT_PILOT,               "Measurement Pilot"},
1975   {PA_DSE_POWER_CONSTRAINT,            "DSE power constraint"},
1976   {PA_VENDOR_SPECIFIC,                 "Vendor Specific"},
1977   {PA_GAS_INITIAL_REQUEST,             "GAS Initial Request"},
1978   {PA_GAS_INITIAL_RESPONSE,            "GAS Initial Response"},
1979   {PA_GAS_COMEBACK_REQUEST,            "GAS Comeback Request"},
1980   {PA_GAS_COMEBACK_RESPONSE,           "GAS Comeback Response"},
1981   {PA_TDLS_DISCOVERY_RESPONSE,         "TDLS Discovery Response"},
1982   {PA_LOCATION_TRACK_NOTIFICATION,     "Location Track Notification"},
1983   {PA_QAB_REQUEST,                     "QAB Request"},
1984   {PA_QAB_RESPONSE,                    "QAB Response"},
1985   {0x00, NULL}
1986 };
1987 static value_string_ext ff_pa_action_codes_ext = VALUE_STRING_EXT_INIT(ff_pa_action_codes);
1988
1989 static const value_string category_codes[] = {
1990   {CAT_SPECTRUM_MGMT,                    "Spectrum Management (SM)"},
1991   {CAT_QOS,                              "Quality of Service (QoS)"},
1992   {CAT_DLS,                              "Direct-Link Setup (DLS)"},
1993   {CAT_BLOCK_ACK,                        "Block Ack"},
1994   {CAT_PUBLIC,                           "Public Action"},
1995   {CAT_RADIO_MEASUREMENT,                "Radio Measurement"},
1996   {CAT_FAST_BSS_TRANSITION,              "Fast BSS Transition"},
1997   {CAT_HT,                               "High Throughput"},
1998   {CAT_SA_QUERY,                         "SA Query"},
1999   {CAT_PUBLIC_PROTECTED,                 "Protected Dual of Public Action"},
2000   {CAT_WNM,                              "WNM"},
2001   {CAT_UNPROTECTED_WNM,                  "Unprotected WNM"},
2002   {CAT_TDLS,                             "TDLS"},
2003   {CAT_MESH,                             "MESH"},
2004   {CAT_MULTIHOP,                         "Multihop"},
2005   {CAT_SELF_PROTECTED,                   "Self-protected"},
2006   {CAT_DMG,                              "DMG"},
2007   {CAT_MGMT_NOTIFICATION,                "Management Notification"},
2008   {CAT_FAST_SESSION_TRANSFER,            "Fast Session Transfer"},
2009   {CAT_ROBUST_AV_STREAMING,              "Robust AV Streaming"},
2010   {CAT_UNPROTECTED_DMG,                  "Unprotected DMG"},
2011   {CAT_VHT,                              "VHT"},
2012   {CAT_HE,                               "HE"},
2013   {CAT_PROTECTED_HE,                     "Protected HE"},
2014   {CAT_VENDOR_SPECIFIC_PROTECTED,        "Vendor-specific Protected"},
2015   {CAT_VENDOR_SPECIFIC,                  "Vendor Specific"},
2016
2017   {0x80 | CAT_SPECTRUM_MGMT,             "Spectrum Management (SM) (error)"},
2018   {0x80 | CAT_QOS,                       "Quality of Service (QoS (error))"},
2019   {0x80 | CAT_DLS,                       "Direct-Link Setup (DLS) (error)"},
2020   {0x80 | CAT_BLOCK_ACK,                 "Block Ack (error)"},
2021   {0x80 | CAT_PUBLIC,                    "Public Action (error)"},
2022   {0x80 | CAT_RADIO_MEASUREMENT,         "Radio Measurement (error)"},
2023   {0x80 | CAT_FAST_BSS_TRANSITION,       "Fast BSS Transition (error)"},
2024   {0x80 | CAT_HT,                        "High Throughput (error)"},
2025   {0x80 | CAT_SA_QUERY,                  "SA Query (error)"},
2026   {0x80 | CAT_PUBLIC_PROTECTED,          "Protected Dual of Public Action (error)"},
2027   {0x80 | CAT_WNM,                       "WNM (error)"},
2028   {0x80 | CAT_UNPROTECTED_WNM,           "Unprotected WNM (error)"},
2029   {0x80 | CAT_TDLS,                      "TDLS (error)"},
2030   {0x80 | CAT_MESH,                      "Mesh (error)"},
2031   {0x80 | CAT_MULTIHOP,                  "Multihop (error)"},
2032   {0x80 | CAT_SELF_PROTECTED,            "Self-protected (error)"},
2033   {0x80 | CAT_DMG,                       "DMG (error)"},
2034   {0x80 | CAT_MGMT_NOTIFICATION,         "Management Notification (error)"},
2035   {0x80 | CAT_FAST_SESSION_TRANSFER,     "Fast Session Transfer (error)"},
2036   {0x80 | CAT_ROBUST_AV_STREAMING,       "Robust AV Streaming (error)"},
2037   {0x80 | CAT_UNPROTECTED_DMG,           "Unprotected DMG (error)"},
2038   {0x80 | CAT_VHT,                       "VHT"},
2039   {0x80 | CAT_VENDOR_SPECIFIC_PROTECTED, "Vendor-specific Protected (error)"},
2040   {0x80 | CAT_VENDOR_SPECIFIC,           "Vendor Specific (error)"},
2041   {0, NULL}
2042 };
2043 static value_string_ext category_codes_ext = VALUE_STRING_EXT_INIT(category_codes);
2044
2045 #define NR_SUB_ID_TSF_INFO                 1
2046 #define NR_SUB_ID_CON_COU_STR              2
2047 #define NR_SUB_ID_BSS_TRN_CAN_PREF         3
2048 #define NR_SUB_ID_BSS_TER_DUR              4
2049 #define NR_SUB_ID_BEARING                  5
2050 #define NR_SUB_ID_WIDE_BW_CHANNEL          6
2051
2052 #define NR_SUB_ID_MEASUREMENT_REPORT       39
2053 #define NR_SUB_ID_HT_CAPABILITIES          45
2054 #define NR_SUB_ID_HT_OPERATION             61
2055 #define NR_SUB_ID_SEC_CHANNEL_OFFSET       62
2056 #define NR_SUB_ID_MEASUREMENT_PILOT_INFO   66
2057 #define NR_SUB_ID_RM_ENABLE_CAP            70
2058 #define NR_SUB_ID_HT_MULTIPLE_BSSID        71
2059 #define NR_SUB_ID_VHT_CAPABILITIES         191
2060 #define NR_SUB_ID_VHT_OPERATION            192
2061 #define NR_SUB_ID_HE_CAPABILITIES          193
2062 #define NR_SUB_ID_HE_OPERATION             194
2063
2064 #define NR_SUB_ID_VENDOR_SPECIFIC          221
2065
2066 static const value_string ieee80211_neighbor_report_subelement_id_vals[] = {
2067   {NR_SUB_ID_TSF_INFO, "TSF Information"},
2068   {NR_SUB_ID_CON_COU_STR, "Condensed Country String"},
2069   {NR_SUB_ID_BSS_TRN_CAN_PREF, "BSS Transition Candidate Preference"},
2070   {NR_SUB_ID_BSS_TER_DUR, "BSS Termination Duration"},
2071   {NR_SUB_ID_BEARING, "Bearing"},
2072   {NR_SUB_ID_WIDE_BW_CHANNEL, "Wide Bandwidth Channel"},
2073   {NR_SUB_ID_MEASUREMENT_REPORT, "Measurement Report"},
2074   {NR_SUB_ID_HT_CAPABILITIES, "HT Capabilities"},
2075   {NR_SUB_ID_HT_OPERATION, "HT Operation"},
2076   {NR_SUB_ID_SEC_CHANNEL_OFFSET, "Secondary Channel Offset"},
2077   {NR_SUB_ID_MEASUREMENT_PILOT_INFO, "Measurement Pilot Transmission"},
2078   {NR_SUB_ID_RM_ENABLE_CAP, "RM Enabled Capabilities"},
2079   {NR_SUB_ID_HT_MULTIPLE_BSSID, "Multiple BSSID"},
2080   {NR_SUB_ID_VHT_CAPABILITIES, "VHT Capabilities"},
2081   {NR_SUB_ID_VHT_OPERATION, "VHT Operation"},
2082   {NR_SUB_ID_HE_CAPABILITIES, "HE Capabilities"},
2083   {NR_SUB_ID_HE_OPERATION, "HE Operation"},
2084   {NR_SUB_ID_VENDOR_SPECIFIC, "Vendor Specific"},
2085   {0, NULL}
2086 };
2087
2088 static const value_string ieee80211_neighbor_report_bssid_info_reachability_vals[] = {
2089   {0, "Reserved"},
2090   {1, "Not Reachable"},
2091   {2, "Unknown"},
2092   {3, "Reachable"},
2093   {0, NULL}
2094 };
2095
2096 static const value_string action_codes[] = {
2097   {SM_ACTION_MEASUREMENT_REQUEST, "Measurement Request"},
2098   {SM_ACTION_MEASUREMENT_REPORT,  "Measurement Report"},
2099   {SM_ACTION_TPC_REQUEST,         "TPC Request"},
2100   {SM_ACTION_TPC_REPORT,          "TPC Report"},
2101   {SM_ACTION_CHAN_SWITCH_ANNC,    "Channel Switch Announcement"},
2102   {0, NULL}
2103 };
2104
2105 static const value_string vendor_action_types_mrvl[] = {
2106   {MRVL_ACTION_MESH_MANAGEMENT, "Mesh Management"},
2107   {0, NULL}
2108 };
2109
2110 static const value_string mesh_mgt_action_codes_mrvl[] = {
2111   {MRVL_MESH_MGMT_ACTION_RREQ, "Route Request"},
2112   {MRVL_MESH_MGMT_ACTION_RREP, "Route Response"},
2113   {MRVL_MESH_MGMT_ACTION_RERR, "Route Error"},
2114   {MRVL_MESH_MGMT_ACTION_PLDM, "Peer Link Down"},
2115   {0, NULL}
2116 };
2117
2118 static const value_string mesh_path_selection_codes[] = {
2119   {0x0, "Hybrid Wireless Mesh Protocol"},
2120   {0, NULL}
2121 };
2122
2123 static const value_string mesh_metric_codes[] = {
2124   {0x0, "Airtime Link Metric"},
2125   {0, NULL}
2126 };
2127
2128 static const value_string wme_action_codes[] = {
2129   {0x00, "Setup request"},
2130   {0x01, "Setup response"},
2131   {0x02, "Teardown"},
2132   {0x00, NULL}
2133 };
2134
2135 static const value_string wme_status_codes[] = {
2136   {0x00, "Admission accepted"},
2137   {0x01, "Invalid parameters"},
2138   {0x03, "Refused"},
2139   {0x00, NULL}
2140 };
2141
2142 static const value_string mesh_action[] = {
2143   {MESH_ACTION_LINK_METRIC_REPORT, "Mesh Link Metric Report"},
2144   {MESH_ACTION_HWMP,               "HWMP Mesh Path Selection"},
2145   {MESH_ACTION_GATE_ANNOUNCE,      "Gate Announcement"},
2146   {MESH_ACTION_CONGESTION_CTL,     "Congestion Control Notification"},
2147   {MESH_ACTION_MCCA_SETUP_REQUEST, "MCCA Setup Request"},
2148   {MESH_ACTION_MCCA_SETUP_REPLY,   "MCCA Setup Reply"},
2149   {MESH_ACTION_MCCA_ADV_REQUEST,   "MCCA Advertisement Request"},
2150   {MESH_ACTION_MCCA_ADV,           "MCCA Advertisement"},
2151   {MESH_ACTION_MCCA_TEARDOWN,      "MCCA Teardown"},
2152   {MESH_ACTION_TBTT_ADJ_REQUEST,   "TBTT Adjustment Request"},
2153   {MESH_ACTION_TBTT_ADJ_RESPONSE,  "TBTT Adjustment Response"},
2154   {0, NULL}
2155 };
2156 static value_string_ext mesh_action_ext = VALUE_STRING_EXT_INIT(mesh_action);
2157
2158 static const value_string multihop_action[] = {
2159   {MULTIHOP_ACTION_PROXY_UPDATE,      "Proxy Update"},
2160   {MULTIHOP_ACTION_PROXY_UPDATE_CONF, "Proxy Update Confirmation"},
2161   {0, NULL}
2162 };
2163
2164 static const value_string selfprot_action[] = {
2165   {SELFPROT_ACTION_MESH_PEERING_OPEN,     "Mesh Peering Open"},
2166   {SELFPROT_ACTION_MESH_PEERING_CONFIRM,  "Mesh Peering Confirm"},
2167   {SELFPROT_ACTION_MESH_PEERING_CLOSE,    "Mesh Peering Close"},
2168   {SELFPROT_ACTION_MESH_GROUP_KEY_INFORM, "Mesh Group Key Inform"},
2169   {SELFPROT_ACTION_MESH_GROUP_KEY_ACK,    "Mesh Group Key Ack"},
2170   {0, NULL}
2171 };
2172
2173 static const value_string mesh_peering_proto_ids[] = {
2174   {MESH_PEERING_PROTO_MGMT,   "Mesh peering management protocol"},
2175   {MESH_PEERING_PROTO_AMPE,   "Authenticated mesh peering exchange protocol"},
2176   {MESH_PEERING_PROTO_VENDOR, "Vendor specific"},
2177   {0, NULL}
2178 };
2179
2180 static const true_false_string hwmp_targ_usn_flags = {
2181   "[USN = 1] Target Sequence Number Unknown at Originator",
2182   "[USN = 0] Target Sequence Number Known at Originator"
2183 };
2184
2185 static const true_false_string hwmp_targ_to_flags = {
2186   "[TO = 1] Only Target Will Respond",
2187   "[TO = 0] Intermediate Nodes May Respond"
2188 };
2189
2190 static const value_string ack_policy[] = {
2191   {0x00, "Normal Ack"},
2192   {0x01, "No Ack"},
2193   {0x02, "No explicit acknowledgment"},
2194   {0x03, "Block Ack"},
2195   {0x00, NULL}
2196 };
2197
2198 static const value_string qos_action_codes[] = {
2199   {QOS_ACTION_ADDTS_REQUEST,  "ADDTS Request"},
2200   {QOS_ACTION_ADDTS_RESPONSE, "ADDTS Response"},
2201   {QOS_ACTION_DELTS,          "DELTS"},
2202   {QOS_ACTION_SCHEDULE,   "Schedule"},
2203   {QOS_ACTION_MAP_CONFIGURE, "QoS Map Configure"},
2204   {0, NULL}
2205 };
2206
2207 static const value_string ba_action_codes[] = {
2208   {BA_ADD_BLOCK_ACK_REQUEST,  "Add Block Ack Request"},
2209   {BA_ADD_BLOCK_ACK_RESPONSE, "Add Block Ack Response"},
2210   {BA_DELETE_BLOCK_ACK,       "Delete Block Ack"},
2211   {0x00, NULL}
2212 };
2213
2214 static const value_string dls_action_codes[] = {
2215   {DLS_ACTION_REQUEST,  "DLS Request"},
2216   {DLS_ACTION_RESPONSE, "DLS Response"},
2217   {DLS_ACTION_TEARDOWN, "DLS Teardown"},
2218   {0, NULL}
2219 };
2220
2221 static const value_string tsinfo_type[] = {
2222   {0x0, "Aperiodic or unspecified Traffic"},
2223   {0x1, "Periodic Traffic"},
2224   {0, NULL}
2225 };
2226
2227 static const value_string tsinfo_direction[] = {
2228   {0x00, "Uplink"},
2229   {0x01, "Downlink"},
2230   {0x02, "Direct link"},
2231   {0x03, "Bidirectional link"},
2232   {0, NULL}
2233 };
2234
2235 static const value_string tsinfo_access[] = {
2236   {0x00, "Reserved"},
2237   {0x01, "EDCA"},
2238   {0x02, "HCCA"},
2239   {0x03, "HEMM"},
2240   {0, NULL}
2241 };
2242
2243 static const value_string qos_up[] = {
2244   {0x00, "Best Effort"},
2245   {0x01, "Background"},
2246   {0x02, "Spare"},
2247   {0x03, "Excellent Effort"},
2248   {0x04, "Controlled Load"},
2249   {0x05, "Video"},
2250   {0x06, "Voice"},
2251   {0x07, "Network Control"},
2252   {0, NULL}
2253 };
2254
2255 static const value_string classifier_type[] = {
2256   {0x00, "Ethernet parameters"},
2257   {0x01, "TCP/UDP IP parameters"},
2258   {0x02, "IEEE 802.1D/Q parameters"},
2259   {0, NULL}
2260 };
2261
2262 static const true_false_string ieee80211_block_ack_control_ack_policy_flag = {
2263     "Sender Does Not Require Immediate Acknowledgement",
2264     "Immediate Acknowledgement Required"
2265 };
2266
2267 static const value_string ft_action_codes[] = {
2268   {FT_ACTION_REQUEST, "FT Request"},
2269   {FT_ACTION_RESPONSE, "FT Response"},
2270   {FT_ACTION_CONFIRM, "FT Confirm"},
2271   {FT_ACTION_ACK, "FT Ack"},
2272   {0, NULL}
2273 };
2274
2275 static const value_string sa_query_action_codes[] = {
2276   {SA_QUERY_REQUEST, "SA Query Request"},
2277   {SA_QUERY_RESPONSE, "SA Query Response"},
2278   {0, NULL}
2279 };
2280
2281 static const value_string ieee80211_data_encap_payload_types[] = {
2282   {1, "Remote Request/Response"},
2283   {2, "TDLS"},
2284   {0, NULL}
2285 };
2286
2287 static const true_false_string rsn_preauth_flags = {
2288   "Transmitter supports pre-authentication",
2289   "Transmitter does not support pre-authentication"
2290 };
2291
2292 static const true_false_string rsn_no_pairwise_flags = {
2293   "Transmitter cannot support WEP default key 0 simultaneously with "
2294   "Pairwise key",
2295   "Transmitter can support WEP default key 0 simultaneously with "
2296   "Pairwise key"
2297 };
2298
2299 static const value_string rsn_cap_replay_counter[] = {
2300   {0x00, "1 replay counter per PTKSA/GTKSA/STAKeySA"},
2301   {0x01, "2 replay counters per PTKSA/GTKSA/STAKeySA"},
2302   {0x02, "4 replay counters per PTKSA/GTKSA/STAKeySA"},
2303   {0x03, "16 replay counters per PTKSA/GTKSA/STAKeySA"},
2304   {0, NULL}
2305 };
2306
2307 static const true_false_string ht_ldpc_coding_flag = {
2308   "Transmitter supports receiving LDPC coded packets",
2309   "Transmitter does not support receiving LDPC coded packets"
2310 };
2311
2312 static const true_false_string ht_chan_width_flag = {
2313   "Transmitter supports 20MHz and 40MHz operation",
2314   "Transmitter only supports 20MHz operation"
2315 };
2316
2317 static const value_string ht_sm_pwsave_flag[] = {
2318   {0x00, "Static SM Power Save mode"},
2319   {0x01, "Dynamic SM Power Save mode"},
2320   {0x02, "Reserved"},
2321   {0x03, "SM Power Save disabled"},
2322   {0x00, NULL}
2323 };
2324
2325 static const true_false_string ht_green_flag = {
2326   "Transmitter is able to receive PPDUs with Green Field (GF) preamble",
2327   "Transmitter is not able to receive PPDUs with Green Field (GF) preamble"
2328 };
2329
2330 static const value_string ht_rx_stbc_flag[] = {
2331   {0x00, "No Rx STBC support"},
2332   {0x01, "Rx support of one spatial stream"},
2333   {0x02, "Rx support of one and two spatial streams"},
2334   {0x03, "Rx support of one, two, and three spatial streams"},
2335   {0x00, NULL}
2336 };
2337
2338   /* IEEE Stc 802.11ac-2013 8.4.2.29 Extended Capabilities element*/
2339 static const value_string vht_max_mpdu_in_amsdu[] = {
2340     {0x00, "No limit"},
2341     {0x01, "32"},
2342     {0x02, "16"},
2343     {0x03, "8"},
2344     {0, NULL}
2345 };
2346
2347   /* IEEE Stc 802.11ac/D3.1 */
2348
2349 static const value_string vht_max_mpdu_length_flag[] = {
2350   {0x00, "3 895"},
2351   {0x01, "7 991"},
2352   {0x02, "11 454"},
2353   {0x03, "Reserved"},
2354   {0x00, NULL}
2355 };
2356
2357 static const value_string vht_supported_chan_width_set_flag[] = {
2358   {0x00, "Neither 160MHz nor 80+80 supported"},
2359   {0x01, "160MHz supported"},
2360   {0x02, "160MHz and 80+80 Supported"},
2361   {0x03, "Reserved"},
2362   {0x00, NULL}
2363 };
2364
2365 static const value_string vht_rx_stbc_flag[] = {
2366   {0x00, "None"},
2367   {0x01, "1 Spatial Stream Supported"},
2368   {0x02, "1 to 2 Spatial Stream Supported"},
2369   {0x03, "1 to 3 Spatial Stream Supported"},
2370   {0x04, "1 to 4 Spatial Stream Supported"},
2371   {0x05, "Reserved"},
2372   {0x06, "Reserved"},
2373   {0x07, "Reserved"},
2374   {0x00, NULL}
2375 };
2376
2377 static const value_string num_plus_one_3bit_flag[] = {
2378   {0x00, "1"},
2379   {0x01, "2"},
2380   {0x02, "3"},
2381   {0x03, "4"},
2382   {0x04, "5"},
2383   {0x05, "6"},
2384   {0x06, "7"},
2385   {0x07, "8"},
2386   {0x00, NULL}
2387 };
2388
2389 static const value_string vht_max_ampdu_flag[] = {
2390   {0x00, "8 191"},
2391   {0x01, "16 383"},
2392   {0x02, "32 767"},
2393   {0x03, "65,535"},
2394   {0x04, "131 071"},
2395   {0x05, "262 143"},
2396   {0x06, "524 287"},
2397   {0x07, "1 048 575"},
2398   {0x00, NULL}
2399 };
2400
2401 static const value_string vht_link_adapt_flag[] = {
2402   {0x00, "No Feedback"},
2403   {0x01, "Reserved (logically only solicited feedback)"},
2404   {0x02, "Unsolicited feedback only"},
2405   {0x03, "Both (can provide unsolicited feedback and respond to VHT MRQ)"},
2406   {0x00, NULL}
2407 };
2408
2409 static const value_string vht_supported_mcs_flag[] = {
2410   {0x00, "MCS 0-7"},
2411   {0x01, "MCS 0-8"},
2412   {0x02, "MCS 0-9"},
2413   {0x03, "Not Supported"},
2414   {0x00, NULL}
2415 };
2416
2417 static const value_string vht_op_channel_width_flag[] = {
2418   {0x00, "20 MHz or 40 MHz"},
2419   {0x01, "80 MHz"},
2420   {0x02, "160 MHz"},
2421   {0x03, "80+80 MHz"},
2422   {0x00, NULL}
2423 };
2424
2425 static const value_string vht_tpe_pwr_units[] = {
2426   {0x00, "EIRP"},
2427   {0x00, NULL}
2428 };
2429
2430 static const true_false_string vht_ndp_annc_sta_info_feedback_type = {
2431   "MU feedback requested",
2432   "SU feedback requested"
2433 };
2434
2435 static const true_false_string ht_delayed_block_ack_flag = {
2436   "Transmitter supports HT-Delayed BlockAck",
2437   "Transmitter does not support HT-Delayed BlockAck"
2438 };
2439
2440 static const true_false_string ht_max_amsdu_flag = {
2441   "7935 bytes",
2442   "3839 bytes"
2443 };
2444
2445 static const true_false_string ht_dss_cck_40_flag = {
2446   "Will/Can use DSSS/CCK in 40 MHz",
2447   "Won't/Can't use of DSSS/CCK in 40 MHz"
2448 };
2449
2450 static const true_false_string ht_psmp_flag = {
2451   "Will/Can support PSMP operation",
2452   "Won't/Can't support PSMP operation"
2453 };
2454
2455 static const true_false_string ht_40_mhz_intolerant_flag = {
2456   "Use of 40 MHz transmissions restricted/disallowed",
2457   "Use of 40 MHz transmissions unrestricted/allowed"
2458 };
2459
2460 static const value_string ampduparam_mpdu_start_spacing_flags[] = {
2461   {0x00, "no restriction"},
2462   {0x01, "1/4 [usec]"},
2463   {0x02, "1/2 [usec]"},
2464   {0x03, "1 [usec]"},
2465   {0x04, "2 [usec]"},
2466   {0x05, "4 [usec]"},
2467   {0x06, "8 [usec]"},
2468   {0x07, "16 [usec]"},
2469   {0x00, NULL}
2470 };
2471
2472 static const true_false_string mcsset_tx_rx_mcs_set_not_equal_flag = {
2473   "Not Equal",
2474   "Equal",
2475 };
2476
2477 static const value_string mcsset_tx_max_spatial_streams_flags[] = {
2478   {0x00, "1 spatial stream"},
2479   {0x01, "2 spatial streams"},
2480   {0x02, "3 spatial streams"},
2481   {0x03, "4 spatial streams"},
2482   {0x04, "TX MCS Set Not Defined"},
2483   {0x00, NULL}
2484 };
2485
2486 static const value_string htex_transtime_flags[] = {
2487   {0x00, "No Transition"},
2488   {0x01, "400 usec"},
2489   {0x02, "1.5 msec"},
2490   {0x03, "5 msec"},
2491   {0x00, NULL}
2492 };
2493
2494 static const value_string htex_mcs_flags[] = {
2495   {0x00, "STA does not provide MCS feedback"},
2496   {0x01, "Reserved"},
2497   {0x02, "STA provides only unsolicited MCS feedback"},
2498   {0x03, "STA can provide MCS feedback in response to MRQ as well as unsolicited MCS feedback"},
2499   {0x00, NULL}
2500 };
2501
2502 static const value_string txbf_calib_flag[] = {
2503   {0x00, "incapable"},
2504   {0x01, "Limited involvement, cannot initiate"},
2505   {0x02, "Limited involvement, can initiate"},
2506   {0x03, "Fully capable"},
2507   {0x00, NULL}
2508 };
2509
2510 static const value_string txbf_feedback_flags[] = {
2511   {0x00, "not supported"},
2512   {0x01, "delayed feedback capable"},
2513   {0x02, "immediate feedback capable"},
2514   {0x03, "delayed and immediate feedback capable"},
2515   {0x00, NULL}
2516 };
2517
2518 static const value_string txbf_antenna_flags[] = {
2519   {0x00, "1 TX antenna sounding"},
2520   {0x01, "2 TX antenna sounding"},
2521   {0x02, "3 TX antenna sounding"},
2522   {0x03, "4 TX antenna sounding"},
2523   {0x00, NULL}
2524 };
2525
2526 static const value_string txbf_csi_max_rows_bf_flags[] = {
2527   {0x00, "1 row of CSI"},
2528   {0x01, "2 rows of CSI"},
2529   {0x02, "3 rows of CSI"},
2530   {0x03, "4 rows of CSI"},
2531   {0x00, NULL}
2532 };
2533
2534 static const value_string txbf_chan_est_flags[] = {
2535   {0x00, "1 space time stream"},
2536   {0x01, "2 space time streams"},
2537   {0x02, "3 space time streams"},
2538   {0x03, "4 space time streams"},
2539   {0x00, NULL}
2540 };
2541
2542 static const value_string txbf_min_group_flags[] = {
2543   {0x00, "No grouping supported"},
2544   {0x01, "Groups of 1, 2 supported"},
2545   {0x02, "Groups of 1, 4 supported"},
2546   {0x03, "Groups of 1, 2, 4 supported"},
2547   {0x00, NULL}
2548 };
2549
2550 static const value_string hta_ext_chan_offset_flag[] = {
2551   {0x00, "No Extension Channel"},
2552   {0x01, "Extension Channel above control channel"},
2553   {0x02, "Undefined"},
2554   {0x03, "Extension Channel below control channel"},
2555   {0x00, NULL}
2556 };
2557
2558 static const true_false_string hta_rec_tx_width_flag = {
2559   "Any channel width enabled",
2560   "Use 20MHz channel (control)"
2561 };
2562
2563 static const true_false_string hta_rifs_mode_flag = {
2564   "Use of RIFS permitted",
2565   "Use of RIFS prohibited"
2566 };
2567
2568 static const true_false_string hta_controlled_access_flag = {
2569   "Not only PSMP",
2570   "PSMP only"
2571 };
2572
2573 static const value_string hta_service_interval_flag[] = {
2574   {0x00, "5ms"},
2575   {0x01, "10ms"},
2576   {0x02, "15ms"},
2577   {0x03, "20ms"},
2578   {0x04, "25ms"},
2579   {0x05, "30ms"},
2580   {0x06, "35ms"},
2581   {0x07, "40ms"},
2582   {0x00, NULL}
2583 };
2584
2585 static const value_string hta_operating_mode_flag[] = {
2586   {0x00, "Pure HT, no protection"},
2587   {0x01, "There may be non-HT devices (control & ext channel)"},
2588   {0x02, "No non-HT is associated, but at least 1 20MHz is. protect on"},
2589   {0x03, "Mixed: no non-HT is associated, protect on"},
2590   {0x00, NULL}
2591 };
2592
2593 static const true_false_string hta_non_gf_devices_flag = {
2594   "All HT devices associated are GF capable",
2595   "One or More HT devices are not GF capable"
2596 };
2597
2598 static const true_false_string hta_dual_stbc_protection_flag = {
2599   "Dual CTS protections is used",
2600   "Regular use of RTS/CTS"
2601 };
2602
2603 static const true_false_string hta_secondary_beacon_flag = {
2604   "Secondary Beacon",
2605   "Primary Beacon"
2606 };
2607
2608 static const true_false_string hta_lsig_txop_protection_flag = {
2609   "Full Support",
2610   "Not full support"
2611 };
2612
2613 static const true_false_string hta_pco_active_flag = {
2614   "PCO is activated in the BSS",
2615   "PCO is not activated in the BSS"
2616 };
2617
2618 static const true_false_string hta_pco_phase_flag = {
2619   "Switch to 20MHz phase/keep 20MHz",
2620   "Switch to 40MHz phase/keep 40MHz"
2621 };
2622
2623 static const value_string ht_info_secondary_channel_offset_flags[] = {
2624   {0x00, "No secondary channel"},
2625   {0x01, "Secondary channel is above the primary channel"},
2626   {0x02, "Reserved"},
2627   {0x03, "Secondary channel is below the primary channel"},
2628   {0x00, NULL}
2629 };
2630
2631 static const true_false_string ht_info_channel_width_flag = {
2632   "Channel of any width supported",
2633   "20 MHz channel width only"
2634 };
2635
2636 static const true_false_string ht_info_rifs_mode_flag = {
2637   "Permitted",
2638   "Prohibited"
2639 };
2640
2641 static const true_false_string ht_info_psmp_stas_only_flag = {
2642   "Association requests are accepted from only PSMP capable STA",
2643   "Association requests are accepted regardless of PSMP capability"
2644 };
2645
2646 static const value_string ht_info_service_interval_granularity_flags[] = {
2647   {0x00, "5 ms"},
2648   {0x01, "10 ms"},
2649   {0x02, "15 ms"},
2650   {0x03, "20 ms"},
2651   {0x04, "25 ms"},
2652   {0x05, "30 ms"},
2653   {0x06, "35 ms"},
2654   {0x07, "40 ms"},
2655   {0x00, NULL}
2656 };
2657
2658 static const value_string ht_info_operating_mode_flags[] = {
2659   {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"},
2660   {0x01, "HT non-member protection mode"},
2661   {0x02, "Only HT STAs in the BSS, however, there exists at least one 20 MHz STA"},
2662   {0x03, "HT mixed mode"},
2663   {0x00, NULL}
2664 };
2665
2666 static const true_false_string ht_info_non_greenfield_sta_present_flag = {
2667   "One or more associated STAs are not greenfield capable",
2668   "All associated STAs are greenfield capable"
2669 };
2670
2671 static const true_false_string ht_info_transmit_burst_limit_flag = {
2672   "2.4 GHz - 6.16 ms | All other bands - 3.08 ms",
2673   "No limit"
2674 };
2675
2676 static const true_false_string ht_info_obss_non_ht_stas_present_flag = {
2677   "Use of protection for non-HT STAs by overlapping BSSs is needed",
2678   "Use of protection for non-HT STAs by overlapping BSSs is not needed"
2679 };
2680
2681 static const true_false_string ht_info_dual_beacon_flag = {
2682   "AP transmits a secondary beacon",
2683   "No second beacon is transmitted"
2684 };
2685
2686 static const true_false_string ht_info_dual_cts_protection_flag = {
2687   "Required",
2688   "Not required"
2689 };
2690
2691 static const true_false_string ht_info_secondary_beacon_flag = {
2692   "Secondary beacon",
2693   "Primary beacon"
2694 };
2695
2696 static const true_false_string ht_info_lsig_txop_protection_full_support_flag = {
2697   "All HT STAs in the BSS support L-SIG TXOP protection",
2698   "One or more HT STAs in the BSS do not support L-SIG TXOP protection"
2699 };
2700
2701 static const true_false_string ht_info_pco_phase_flag = {
2702   "Switch to or continue 40 MHz phase",
2703   "Switch to or continue 20 MHz phase"
2704 };
2705
2706 static const true_false_string htc_lac_trq_flag = {
2707   "Want sounding PPDU",
2708   "Don't want sounding PPDU"
2709 };
2710
2711 static const true_false_string htc_lac_mai_mrq_flag = {
2712   "MCS feedback requested",
2713   "No MCS feedback requested"
2714 };
2715
2716 static const value_string ieee80211_htc_lac_asel_command_flags[] = {
2717   {0x00, "Transmit Antenna Selection Sounding Indication (TXASSI)"},
2718   {0x01, "Transmit Antenna Selection Sounding Request (TXASSR)"},
2719   {0x02, "Receive Antenna Selection Sounding Indication (RXASSI)"},
2720   {0x03, "Receive Antenna Selection Sounding Request (RXASSR)"},
2721   {0x04, "Sounding Label"},
2722   {0x05, "No feedback, ASEL training failure"},
2723   {0x06, "Transmit Antenna Selection Sounding Indication (TXASSI) requesting feedback of explicit CSI"},
2724   {0x07, "Reserved"},
2725   {0x00, NULL}
2726 };
2727
2728 static const value_string ieee80211_htc_cal_pos_flags[] = {
2729   {0x00, "Not a calibration frame"},
2730   {0x01, "Calibration Start"},
2731   {0x02, "Sounding Response"},
2732   {0x03, "Sounding Complete"},
2733   {0x00, NULL}
2734 };
2735
2736 static const value_string ieee80211_htc_csi_steering_flags[] = {
2737   {0x00, "No feedback required"},
2738   {0x01, "CSI"},
2739   {0x02, "Non-compressed Beamforming Feedback Matrix"},
2740   {0x03, "Compressed Beamforming Feedback Matrix"},
2741   {0x00, NULL}
2742 };
2743
2744 static const true_false_string ieee80211_htc_ndp_announcement_flag = {
2745   "NDP will follow",
2746   "No NDP will follow"
2747 };
2748
2749 static const value_string ieee80211_htc_bw_recommended_vht_mcs_vals[] = {
2750   {0, "20 MHz"},
2751   {1, "40 MHz"},
2752   {2, "80 MHz"},
2753   {3, "160 MHz and 80+80 MHz"},
2754   {0, NULL}
2755 };
2756
2757 static const value_string ieee80211_htc_coding_type_vals[] = {
2758   {0, "BCC"},
2759   {1, "LDPC"},
2760   {0, NULL}
2761 };
2762
2763 static const value_string ieee80211_htc_fb_tx_type_vals[] = {
2764   {0, "Not beamformed"},
2765   {1, "Beamformed"},
2766   {0, NULL}
2767 };
2768
2769 static const value_string ieee80211_tag_secondary_channel_offset_flags[] = {
2770   {0x00, "No Secondary Channel"},
2771   {0x01, "Above Primary Channel"},
2772   {0x02, "Reserved"},
2773   {0x03, "Below Primary Channel"},
2774   {0x00, NULL}
2775 };
2776
2777 #define BSS_BITMASK_UP0   0x0001
2778 #define BSS_BITMASK_UP1   0x0002
2779 #define BSS_BITMASK_UP2   0x0004
2780 #define BSS_BITMASK_UP3   0x0008
2781 #define BSS_BITMASK_UP4   0x0010
2782 #define BSS_BITMASK_UP5   0x0020
2783 #define BSS_BITMASK_UP6   0x0040
2784 #define BSS_BITMASK_UP7   0x0080
2785 #define BSS_BITMASK_AC0   0x0100
2786 #define BSS_BITMASK_AC1   0x0200
2787 #define BSS_BITMASK_AC2   0x0400
2788 #define BSS_BITMASK_AC3   0x0800
2789 #define BSS_BITMASK_RSV   0xF000
2790
2791 static const value_string ieee80211_tag_ext_channel_switch_announcement_switch_mode_flags[] = {
2792   {0x00, "Frames may be transmitted before the channel switch has been completed"},
2793   {0x01, "No more frames are to be transmitted until the channel switch has been completed"},
2794   {0x00, NULL}
2795 };
2796
2797 static const value_string service_interval_granularity_vals[] = {
2798   { 0, "5 ms" },
2799   { 1, "10 ms" },
2800   { 2, "15 ms" },
2801   { 3, "20 ms" },
2802   { 4, "25 ms" },
2803   { 5, "30 ms" },
2804   { 6, "35 ms" },
2805   { 7, "40 ms" },
2806   { 0x00, NULL }
2807 };
2808
2809 static const value_string wep_type_vals[] = {
2810   { DOT11DECRYPT_KEY_TYPE_WEP, STRING_KEY_TYPE_WEP },
2811   { DOT11DECRYPT_KEY_TYPE_WPA_PWD, STRING_KEY_TYPE_WPA_PWD },
2812   { DOT11DECRYPT_KEY_TYPE_WPA_PSK, STRING_KEY_TYPE_WPA_PSK },
2813   { 0x00, NULL }
2814 };
2815
2816 static const value_string ieee80211_ht_pren_type_vals[] = {
2817   { 51,  "HT Capabilities (802.11n D1.10)" },
2818   { 52,  "HT Additional Capabilities (802.11n D1.00)" },
2819   { 0, NULL }
2820 };
2821
2822 static const true_false_string ieee80211_cf_ssw_direction = {
2823   "Transmitted by the beamforming responder",
2824   "Transmitted by the beamforming initiator"
2825 };
2826
2827 static const value_string bss_type[] = {
2828   {0x0, "Reserved"},
2829   {0x1, "IBSS"},
2830   {0x2, "PBSS"},
2831   {0x3, "Infrastructure BSS"},
2832   {0,   NULL}
2833 };
2834
2835 static const value_string band_id[] = {
2836   {0x0, "TV white spaces"},
2837   {0x1, "Sub-1 GHZ (excluding TV white spaces)"},
2838   {0x2, "2.4 GHZ"},
2839   {0x3, "3.6 GHZ"},
2840   {0x4, "4.9 and 5 GHZ"},
2841   {0x5, "60 GHZ"},
2842   {0,   NULL}
2843 };
2844
2845 static const value_string allocation_type[] = {
2846   {0x0, "SP Allocation"},
2847   {0x4, "CBAP allocation"},
2848   {0,   NULL}
2849 };
2850
2851 static const value_string vht_operation_info_channel_width[] = {
2852   {0x00, "20MHz or 40MHz"},
2853   {0x01, "80MHZ"},
2854   {0x10, "160MHz"},
2855   {0x11, "80MHz+80MHz"},
2856   {0, NULL}
2857 };
2858 static const value_string operating_mode_field_channel_width[] = {
2859   {0x00, "20MHz"},
2860   {0x01, "40MHZ"},
2861   {0x02, "80MHz"},
2862   {0x03, "160MHz or 80MHz+80MHz"},
2863   {0, NULL}
2864 };
2865
2866 static const value_string operat_mode_field_rxnss[] = {
2867   {0x0, "1Nss"},
2868   {0x1, "2Nss"},
2869   {0x2, "3Nss"},
2870   {0x3, "4Nss"},
2871   {0x4, "5Nss"},
2872   {0x5, "6Nss"},
2873   {0x6, "7Nss"},
2874   {0x7, "8Nss"},
2875   {0, NULL}
2876 };
2877
2878 #define VHT_ACT_VHT_COMPRESSED_BEAMFORMING  0
2879 #define VHT_ACT_GROUP_ID_MANAGEMENT         1
2880 #define VHT_ACT_OPERATION_MODE_NOTIFICATION 2
2881
2882 static const value_string vht_action_vals[] = {
2883   {VHT_ACT_VHT_COMPRESSED_BEAMFORMING, "VHT Compressed Beamforming"},
2884   {VHT_ACT_GROUP_ID_MANAGEMENT, "Group ID Management"},
2885   {VHT_ACT_OPERATION_MODE_NOTIFICATION, "Operating Mode Notification"},
2886   {0,   NULL}
2887 };
2888
2889 static const value_string ff_vht_mimo_cntrl_nc_index_vals[] = {
2890   {0x00, "1 Column"},
2891   {0x01, "2 Columns"},
2892   {0x02, "3 Columns"},
2893   {0x03, "4 Columns"},
2894   {0x04, "5 Columns"},
2895   {0x05, "6 Columns"},
2896   {0x06, "7 Columns"},
2897   {0x07, "8 Columns"},
2898   {0, NULL}
2899 };
2900
2901 static const value_string ff_vht_mimo_cntrl_nr_index_vals[] = {
2902   {0x00, "1 Row"},
2903   {0x01, "2 Rows"},
2904   {0x02, "3 Rows"},
2905   {0x03, "4 Rows"},
2906   {0x04, "5 Rows"},
2907   {0x05, "6 Rows"},
2908   {0x06, "7 Rows"},
2909   {0x07, "8 Rows"},
2910   {0, NULL}
2911 };
2912
2913 static const value_string ff_vht_mimo_cntrl_channel_width_vals[] = {
2914   {0x00, "20 MHz"},
2915   {0x01, "40 MHz"},
2916   {0x02, "80 MHz"},
2917   {0x03, "160 MHz / 80+80 MHz"},
2918   {0, NULL}
2919 };
2920
2921 static const value_string ff_vht_mimo_cntrl_grouping_vals[] = {
2922   {0x00, "1 (No Grouping)"},
2923   {0x01, "2"},
2924   {0x02, "4"},
2925   {0x03, "Reserved"},
2926   {0, NULL}
2927 };
2928
2929 static const value_string ff_vht_mimo_cntrl_feedback_vals[] = {
2930   {0x00, "SU"},
2931   {0x01, "MU"},
2932   {0, NULL}
2933 };
2934
2935 static int proto_wlan = -1;
2936 static int proto_centrino = -1;
2937 static int proto_aggregate = -1;
2938 static gboolean ieee80211_tvb_invalid = FALSE;
2939
2940 /* ************************************************************************* */
2941 /*                Header field info values for FC-field                      */
2942 /* ************************************************************************* */
2943 static int hf_ieee80211_fc_field = -1;
2944 static int hf_ieee80211_fc_proto_version = -1;
2945 static int hf_ieee80211_fc_frame_type = -1;
2946 static int hf_ieee80211_fc_frame_subtype = -1;
2947 static int hf_ieee80211_fc_frame_extension = -1;
2948 static int hf_ieee80211_fc_frame_type_subtype = -1;
2949
2950 static int hf_ieee80211_fc_flags = -1;
2951 static int hf_ieee80211_fc_to_ds = -1;
2952 static int hf_ieee80211_fc_from_ds = -1;
2953 static int hf_ieee80211_fc_data_ds = -1;
2954
2955 static int hf_ieee80211_fc_more_frag = -1;
2956 static int hf_ieee80211_fc_retry = -1;
2957 static int hf_ieee80211_fc_pwr_mgt = -1;
2958 static int hf_ieee80211_fc_more_data = -1;
2959 static int hf_ieee80211_fc_protected = -1;
2960 static int hf_ieee80211_fc_order = -1;
2961
2962 typedef struct retransmit_key {
2963   guint8  bssid[6];
2964   guint8  src[6];
2965   guint16 seq_control;
2966   guint   fnum;
2967 } retransmit_key;
2968
2969 static GHashTable *fc_analyse_retransmit_table = NULL;
2970 static GHashTable *fc_first_frame_table = NULL;
2971
2972 static int hf_ieee80211_fc_analysis_retransmission = -1;
2973 static int hf_ieee80211_fc_analysis_retransmission_frame = -1;
2974
2975 /* ************************************************************************* */
2976 /*                   Header values for Duration/ID field                     */
2977 /* ************************************************************************* */
2978 static int hf_ieee80211_did_duration = -1;
2979 static int hf_ieee80211_assoc_id = -1;
2980
2981 /* ************************************************************************* */
2982 /*         Header values for different address-fields (all 4 of them)        */
2983 /* ************************************************************************* */
2984 static int hf_ieee80211_addr_da = -1;  /* Destination address subfield */
2985 static int hf_ieee80211_addr_da_resolved = -1;  /* Dst addr subfield resolved*/
2986 static int hf_ieee80211_addr_sa = -1;  /* Source address subfield */
2987 static int hf_ieee80211_addr_sa_resolved = -1;  /* Src addr subfield resolved*/
2988 static int hf_ieee80211_addr_ra = -1;  /* Receiver address subfield */
2989 static int hf_ieee80211_addr_ra_resolved = -1;  /* Rcv addr subfield resolved*/
2990 static int hf_ieee80211_addr_ta = -1;  /* Transmitter address subfield */
2991 static int hf_ieee80211_addr_ta_resolved = -1;  /* Txm addr subfield resolved*/
2992 static int hf_ieee80211_addr_bssid = -1;  /* address is bssid */
2993 static int hf_ieee80211_addr_bssid_resolved = -1;  /* bssid resolved*/
2994 static int hf_ieee80211_addr_staa = -1;  /* address is station address */
2995 static int hf_ieee80211_addr_staa_resolved = -1;  /* station address resolved*/
2996
2997 static int hf_ieee80211_addr = -1;  /* Source or destination address subfield */
2998 static int hf_ieee80211_addr_resolved = -1;/*Src/dst address subfield resolved*/
2999
3000 /* ************************************************************************* */
3001 /*                Header values for QoS control field                        */
3002 /* ************************************************************************* */
3003 static int hf_ieee80211_qos = -1;
3004 static int hf_ieee80211_qos_tid = -1;
3005 static int hf_ieee80211_qos_priority = -1;
3006 static int hf_ieee80211_qos_ack_policy = -1;
3007 static int hf_ieee80211_qos_amsdu_present = -1;
3008 static int hf_ieee80211_qos_eosp = -1;
3009 static int hf_ieee80211_qos_bit4 = -1;
3010 static int hf_ieee80211_qos_txop_limit = -1;
3011 static int hf_ieee80211_qos_ps_buf_state = -1;
3012 static int hf_ieee80211_qos_buf_state_indicated = -1;
3013 static int hf_ieee80211_qos_highest_pri_buf_ac = -1;
3014 static int hf_ieee80211_qos_qap_buf_load = -1;
3015 static int hf_ieee80211_qos_txop_dur_req = -1;
3016 static int hf_ieee80211_qos_queue_size = -1;
3017
3018 /* ************************************************************************* */
3019 /*                Header values for HT control field (+HTC) and HE control   */
3020 /* ************************************************************************* */
3021 /* 802.11-2012 and 802.11ac-2013 8.2.4.6 */
3022 static int hf_ieee80211_htc = -1;
3023 static int hf_ieee80211_htc_vht = -1;
3024 static int hf_ieee80211_htc_he = -1;
3025 static int hf_ieee80211_htc_he_ctrl_id = -1;
3026 static int hf_ieee80211_he_umrs_he_tb_ppdu_len = -1;
3027 static int hf_ieee80211_he_umrs_ru_allocation = -1;
3028 static int hf_ieee80211_he_dl_tx_power = -1;
3029 static int hf_ieee80211_he_ul_target_rssi = -1;
3030 static int hf_ieee80211_he_ul_mcs = -1;
3031 static int hf_ieee80211_he_om_rx_nss = -1;
3032 static int hf_ieee80211_he_om_channel_width = -1;
3033 static int hf_ieee80211_he_om_ul_mu_disable = -1;
3034 static int hf_ieee80211_he_om_tx_nsts = -1;
3035 static int hf_ieee80211_he_hla_unsolicited_mfb = -1;
3036 static int hf_ieee80211_he_hla_mrq = -1;
3037 static int hf_ieee80211_he_hla_nss = -1;
3038 static int hf_ieee80211_he_hla_he_mcs = -1;
3039 static int hf_ieee80211_he_hla_dcm = -1;
3040 static int hf_ieee80211_he_hla_ru = -1;
3041 static int hf_ieee80211_he_hla_bw = -1;
3042 static int hf_ieee80211_he_hla_msi_ppdu_type = -1;
3043 static int hf_ieee80211_he_hla_tx_bf = -1;
3044 static int hf_ieee80211_he_bsr_aci_bitmap = -1;
3045 static int hf_ieee80211_he_bsr_delta_tid = -1;
3046 static int hf_ieee80211_he_bsr_aci_high = -1;
3047 static int hf_ieee80211_he_bsr_scaling_factor = -1;
3048 static int hf_ieee80211_he_bsr_queue_size_high = -1;
3049 static int hf_ieee80211_he_bsr_queue_size_all = -1;
3050 static int hf_ieee80211_he_uph_ul_power_headroom = -1;
3051 static int hf_ieee80211_he_uph_ul_min_transmit_power_flag = -1;
3052 static int hf_ieee80211_he_cci_ac_constraint = -1;
3053 static int hf_ieee80211_he_cci_rdg_more_ppdu = -1;
3054 static int hf_ieee80211_he_cci_sr_ppdu_indic = -1;
3055 static int hf_ieee80211_he_btc_avail_chan = -1;
3056 static int hf_ieee80211_he_btc_reserved = -1;
3057 static int hf_ieee80211_he_trigger_common_info = -1;
3058 static int hf_ieee80211_he_trigger_type = -1;
3059 static int hf_ieee80211_he_trigger_length = -1;
3060 static int hf_ieee80211_he_trigger_cascade_indication = -1;
3061 static int hf_ieee80211_he_trigger_cs_required = -1;
3062 static int hf_ieee80211_he_trigger_bw = -1;
3063 static int hf_ieee80211_he_trigger_gi_and_ltf_type = -1;
3064 static int hf_ieee80211_he_trigger_mu_mimo_ltf_mode = -1;
3065 static int hf_ieee80211_he_trigger_num_he_ltf_syms_etc = -1;
3066 static int hf_ieee80211_he_trigger_stbc = -1;
3067 static int hf_ieee80211_he_trigger_ldpc_extra_sym_seg = -1;
3068 static int hf_ieee80211_he_trigger_ap_tx_power = -1;
3069 static int hf_ieee80211_he_trigger_packet_extension = -1;
3070 static int hf_ieee80211_he_trigger_spatial_reuse = -1;
3071 static int hf_ieee80211_he_trigger_doppler = -1;
3072 static int hf_ieee80211_he_trigger_he_sig_a_reserved = -1;
3073 static int hf_ieee80211_he_trigger_reserved = -1;
3074 static int hf_ieee80211_he_trigger_bar_ctrl = -1;
3075 static int hf_ieee80211_he_trigger_bar_ctrl_ba_ack_policy = -1;
3076 static int hf_ieee80211_he_trigger_bar_ctrl_ba_type = -1;
3077 static int hf_ieee80211_he_trigger_bar_ctrl_reserved = -1;
3078 static int hf_ieee80211_he_trigger_bar_ctrl_tid_info = -1;
3079 static int hf_ieee80211_he_trigger_bar_info = -1;
3080 static int hf_ieee80211_he_trigger_bar_info_blk_ack_seq_ctrl = -1;
3081 static int hf_ieee80211_he_trigger_mpdu_mu_spacing = -1;
3082 static int hf_ieee80211_he_trigger_tid_aggregation_limit = -1;
3083 static int hf_ieee80211_he_trigger_dependent_reserved1 = -1;
3084 static int hf_ieee80211_he_trigger_preferred_ac = -1;
3085 static int hf_ieee80211_he_trigger_user_info = -1;
3086 static int hf_ieee80211_he_trigger_starting_aid = -1;
3087 static int hf_ieee80211_he_trigger_dependent_reserved2 = -1;
3088 static int hf_ieee80211_he_trigger_feedback_type = -1;
3089 static int hf_ieee80211_he_trigger_dependent_reserved3 = -1;
3090 static int hf_ieee80211_he_trigger_nfrp_target_rssi = -1;
3091 static int hf_ieee80211_he_trigger_multiplexing_flag = -1;
3092 static int hf_ieee80211_he_trigger_dep_nfrp_user_info = -1;
3093 static int hf_ieee80211_he_trigger_feedback_seg_retrans_bm = -1;
3094 static int hf_ieee80211_he_trigger_aid12 = -1;
3095 static int hf_ieee80211_he_trigger_ru_allocation = -1;
3096 static int hf_ieee80211_he_trigger_coding_type = -1;
3097 static int hf_ieee80211_he_trigger_mcs = -1;
3098 static int hf_ieee80211_he_trigger_dcm = -1;
3099 static int hf_ieee80211_he_trigger_ss_allocation = -1;
3100 static int hf_ieee80211_he_trigger_target_rssi = -1;
3101 static int hf_ieee80211_he_trigger_user_reserved = -1;
3102 static int hf_ieee80211_he_trigger_dep_basic_user_info = -1;
3103 static int hf_ieee80211_he_ndp_annc_token = -1;
3104 static int hf_ieee80211_he_ndp_annc_sta = -1;
3105 static int hf_he_ndp_sounding_dialog_token_number = -1;
3106 static int hf_he_ndp_annc_he_subfield = -1;
3107 static int hf_he_ndp_annc_reserved = -1;
3108 static int hf_he_ndp_annc_aid11 = -1;
3109 static int hf_he_ndp_annc_partial_bw_info = -1;
3110 static int hf_he_ndp_annc_feedback_type_and_ng = -1;
3111 static int hf_he_ndp_annc_disambiguation = -1;
3112 static int hf_he_ndp_annc_codebook_size = -1;
3113 static int hf_he_ndp_annc_nc = -1;
3114 static int hf_ieee80211_htc_ht_lac = -1;
3115 static int hf_ieee80211_htc_lac_trq = -1;
3116 static int hf_ieee80211_htc_lac_mai_aseli = -1;
3117 static int hf_ieee80211_htc_lac_mai_mrq = -1;
3118 static int hf_ieee80211_htc_lac_mai_msi = -1;
3119 static int hf_ieee80211_htc_lac_mai_reserved = -1;
3120 static int hf_ieee80211_htc_lac_mfsi = -1;
3121 static int hf_ieee80211_htc_lac_mfb = -1;
3122 static int hf_ieee80211_htc_lac_asel_command = -1;
3123 static int hf_ieee80211_htc_lac_asel_data = -1;
3124 static int hf_ieee80211_htc_cal_pos = -1;
3125 static int hf_ieee80211_htc_cal_seq = -1;
3126 static int hf_ieee80211_htc_reserved1 = -1;
3127 static int hf_ieee80211_htc_csi_steering = -1;
3128 static int hf_ieee80211_htc_ndp_announcement = -1;
3129 static int hf_ieee80211_htc_reserved2 = -1;
3130 static int hf_ieee80211_htc_mrq = -1;
3131 static int hf_ieee80211_htc_msi = -1;
3132 static int hf_ieee80211_htc_msi_stbc_reserved = -1;
3133 static int hf_ieee80211_htc_compressed_msi = -1;
3134 static int hf_ieee80211_htc_ppdu_stbc_encoded = -1;
3135 static int hf_ieee80211_htc_mfsi = -1;
3136 static int hf_ieee80211_htc_gid_l = -1;
3137 static int hf_ieee80211_htc_mfb = -1;
3138 static int hf_ieee80211_htc_num_sts = -1;
3139 static int hf_ieee80211_htc_vht_mcs = -1;
3140 static int hf_ieee80211_htc_bw = -1;
3141 static int hf_ieee80211_htc_snr = -1;
3142 static int hf_ieee80211_htc_reserved3 = -1;
3143 static int hf_ieee80211_htc_gid_h = -1;
3144 static int hf_ieee80211_htc_coding_type = -1;
3145 static int hf_ieee80211_htc_fb_tx_type = -1;
3146 static int hf_ieee80211_htc_unsolicited_mfb = -1;
3147 static int hf_ieee80211_htc_ac_constraint = -1;
3148 static int hf_ieee80211_htc_rdg_more_ppdu = -1;
3149
3150 /* ************************************************************************* */
3151 /*                Header values for sequence number field                    */
3152 /* ************************************************************************* */
3153 static int hf_ieee80211_frag_number = -1;
3154 static int hf_ieee80211_seq_number = -1;
3155
3156 /* ************************************************************************* */
3157 /*                   Header values for Frame Check field                     */
3158 /* ************************************************************************* */
3159 static int hf_ieee80211_fcs = -1;
3160 static int hf_ieee80211_fcs_status = -1;
3161
3162 /* ************************************************************************* */
3163 /*                   Header values for reassembly                            */
3164 /* ************************************************************************* */
3165 static int hf_ieee80211_fragments = -1;
3166 static int hf_ieee80211_fragment = -1;
3167 static int hf_ieee80211_fragment_overlap = -1;
3168 static int hf_ieee80211_fragment_overlap_conflict = -1;
3169 static int hf_ieee80211_fragment_multiple_tails = -1;
3170 static int hf_ieee80211_fragment_too_long_fragment = -1;
3171 static int hf_ieee80211_fragment_error = -1;
3172 static int hf_ieee80211_fragment_count = -1;
3173 static int hf_ieee80211_reassembled_in = -1;
3174 static int hf_ieee80211_reassembled_length = -1;
3175
3176 static int proto_wlan_ext = -1;
3177
3178 /* ************************************************************************* */
3179 /*                      Fixed fields found in mgt frames                     */
3180 /* ************************************************************************* */
3181 static int hf_ieee80211_fixed_parameters = -1;  /* Protocol payload for management frames */
3182
3183 static int hf_ieee80211_ff_auth_alg = -1;            /* Authentication algorithm field            */
3184 static int hf_ieee80211_ff_auth_seq = -1;            /* Authentication transaction sequence       */
3185 static int hf_ieee80211_ff_current_ap = -1;          /* Current AP MAC address                    */
3186 static int hf_ieee80211_ff_listen_ival = -1;         /* Listen interval fixed field               */
3187 static int hf_ieee80211_ff_timestamp = -1;           /* 64 bit timestamp                          */
3188 static int hf_ieee80211_ff_beacon_interval = -1;     /* 16 bit Beacon interval                    */
3189 static int hf_ieee80211_ff_assoc_id = -1;            /* 16 bit AID field                          */
3190 static int hf_ieee80211_ff_reason = -1;              /* 16 bit reason code                        */
3191 static int hf_ieee80211_ff_status_code = -1;         /* Status code                               */
3192 static int hf_ieee80211_ff_category_code = -1;       /* 8 bit Category code */
3193 static int hf_ieee80211_ff_action_code = -1;         /* 8 bit Action code */
3194 static int hf_ieee80211_ff_dialog_token = -1;        /* 8 bit Dialog token */
3195 static int hf_ieee80211_ff_followup_dialog_token = -1;
3196 static int hf_ieee80211_ff_wme_action_code = -1;     /* Management notification action code */
3197 static int hf_ieee80211_ff_wme_status_code = -1;     /* Management notification setup response status code */
3198 static int hf_ieee80211_ff_qos_action_code = -1;
3199 static int hf_ieee80211_ff_dls_action_code = -1;
3200 static int hf_ieee80211_ff_dst_mac_addr = -1;        /* DLS destination MAC addressi */
3201 static int hf_ieee80211_ff_src_mac_addr = -1;        /* DLS source MAC addressi */
3202 static int hf_ieee80211_ff_req_ap_addr = -1;
3203 static int hf_ieee80211_ff_res_ap_addr = -1;
3204 static int hf_ieee80211_ff_check_beacon = -1;
3205 static int hf_ieee80211_ff_dls_timeout = -1;         /* DLS timeout value */
3206 static int hf_ieee80211_ff_ft_action_code = -1; /* 8 bit FT Action code */
3207 static int hf_ieee80211_ff_sta_address = -1;
3208 static int hf_ieee80211_ff_target_ap_address = -1;
3209 static int hf_ieee80211_ff_gas_comeback_delay = -1;
3210 static int hf_ieee80211_ff_gas_fragment_id = -1;
3211 static int hf_ieee80211_ff_more_gas_fragments = -1;
3212 static int hf_ieee80211_ff_query_request_length = -1;
3213 static int hf_ieee80211_ff_query_request = -1;
3214 static int hf_ieee80211_ff_query_response_length = -1;
3215 static int hf_ieee80211_ff_query_response = -1;
3216 static int hf_ieee80211_ff_anqp_info_id = -1;
3217 static int hf_ieee80211_ff_anqp_info_length = -1;
3218 static int hf_ieee80211_ff_anqp_info = -1;
3219 static int hf_ieee80211_ff_anqp_query_id = -1;
3220 static int hf_ieee80211_ff_anqp_capability = -1;
3221 static int hf_ieee80211_ff_anqp_capability_vlen = -1;
3222 static int hf_ieee80211_ff_anqp_capability_vendor = -1;
3223 static int hf_ieee80211_ff_venue_info_group = -1;
3224 static int hf_ieee80211_ff_venue_info_type = -1;
3225 static int hf_ieee80211_ff_anqp_venue_length = -1;
3226 static int hf_ieee80211_ff_anqp_venue_language = -1;
3227 static int hf_ieee80211_ff_anqp_venue_name = -1;
3228 static int hf_ieee80211_ff_anqp_nw_auth_type_indicator = -1;
3229 static int hf_ieee80211_ff_anqp_nw_auth_type_url_len = -1;
3230 static int hf_ieee80211_ff_anqp_nw_auth_type_url = -1;
3231 static int hf_ieee80211_ff_anqp_roaming_consortium_oi_len = -1;
3232 static int hf_ieee80211_ff_anqp_roaming_consortium_oi = -1;
3233 static int hf_ieee80211_ff_anqp_ip_addr_avail_ipv6 = -1;
3234 static int hf_ieee80211_ff_anqp_ip_addr_avail_ipv4 = -1;
3235 static int hf_ieee80211_ff_anqp_nai_realm_count = -1;
3236 static int hf_ieee80211_ff_anqp_nai_field_len = -1;
3237 static int hf_ieee80211_ff_anqp_nai_realm_encoding = -1;
3238 static int hf_ieee80211_ff_anqp_nai_realm_length = -1;
3239 static int hf_ieee80211_ff_anqp_nai_realm = -1;
3240 static int hf_ieee80211_ff_anqp_nai_realm_eap_count = -1;
3241 static int hf_ieee80211_ff_anqp_nai_realm_eap_len = -1;
3242 static int hf_ieee80211_ff_anqp_nai_realm_eap_method = -1;
3243 static int hf_ieee80211_ff_anqp_nai_realm_auth_param_count = -1;
3244 static int hf_ieee80211_ff_anqp_nai_realm_auth_param_id = -1;
3245 static int hf_ieee80211_ff_anqp_nai_realm_auth_param_len = -1;
3246 static int hf_ieee80211_ff_anqp_nai_realm_auth_param_value = -1;
3247 static int hf_ieee80211_3gpp_gc_gud = -1;
3248 static int hf_ieee80211_3gpp_gc_udhl = -1;
3249 static int hf_ieee80211_3gpp_gc_iei = -1;
3250 static int hf_ieee80211_3gpp_gc_num_plmns = -1;
3251 static int hf_ieee80211_3gpp_gc_plmn = -1;
3252 static int hf_ieee80211_3gpp_gc_plmn_len = -1;
3253 static int hf_ieee80211_ff_anqp_domain_name_len = -1;
3254 static int hf_ieee80211_ff_anqp_domain_name = -1;
3255 static int hf_ieee80211_ff_anqp_venue_url_len = -1;