aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2007-04-20 17:40:13 +0000
committerGerald Combs <gerald@wireshark.org>2007-04-20 17:40:13 +0000
commit24b3b66ba8b2e2d85b4737657c82b8b81b20bd37 (patch)
treeaa8fbd52a0d0cd88dbbb09315eba9617dd65afee /epan/dissectors
parentdef734249e0beb9a7e1580a598bce7ead5f264c8 (diff)
More .11n-related updates and additions from Dustin Johnson and myself:
- MIMO Control frame support - Control Wrapper frame support - Measurement Pilot - Action No Ack - Block Ack Action - PCO Phase Control - PSMP Parameter Set - Antenna Selection - Extended Channel Switch Announcement - HT Information - HT Action - MIMO CSI Matrices Report - Fill in and update a bunch of hf strings Fixup(?) whitespace. svn path=/trunk/; revision=21482
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-ieee80211.c2796
1 files changed, 1838 insertions, 958 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 48e75eacbf..706332e2b6 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -137,6 +137,22 @@ static int weak_iv(guchar *iv);
static char *wep_keystr[MAX_ENCRYPTION_KEYS];
#endif
+typedef struct mimo_control
+ {
+ guint8 nc;
+ guint8 nr;
+ gboolean chan_width;
+ guint8 grouping;
+ guint8 coefficient_size;
+ guint8 codebook_info;
+ guint8 remaining_matrix_segment;
+ } mimo_control_t;
+
+mimo_control_t get_mimo_control (tvbuff_t *tvb, int offset);
+int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl);
+int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl);
+int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl);
+
/* ************************************************************************* */
/* Miscellaneous Constants */
/* ************************************************************************* */
@@ -147,6 +163,14 @@ static char *wep_keystr[MAX_ENCRYPTION_KEYS];
/* ************************************************************************* */
/*
+ * Fetch the frame control field and swap it if needed. "fcf" and "tvb"
+ * must be valid variables.
+ */
+#define FETCH_FCF(off) (wlan_broken_fc ? \
+ BSWAP16(tvb_get_letohs(tvb, off)) : \
+ tvb_get_letohs(tvb, off))
+
+/*
* Extract the protocol version from the frame control field
*/
#define FCF_PROT_VERSION(x) ((x) & 0x3)
@@ -413,6 +437,14 @@ static char *wep_keystr[MAX_ENCRYPTION_KEYS];
#define FIELD_DS_PARAM_SET 0x26
#define FIELD_CHANNEL_WIDTH 0x27
#define FIELD_SM_PWR_CNTRL 0x28
+#define FIELD_PCO_PHASE_CNTRL 0x29
+#define FIELD_PSMP_PARAM_SET 0x2A
+#define FIELD_PSMP_STA_INFO 0x2B
+#define FIELD_MIMO_CNTRL 0x2C
+#define FIELD_ANT_SELECTION 0x2D
+#define FIELD_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT 0x2E
+#define FIELD_HT_INFORMATION 0x2F
+#define FIELD_HT_ACTION_CODE 0x30
/* ************************************************************************* */
/* Logical field codes (IEEE 802.11 encoding of tags) */
@@ -484,16 +516,16 @@ static const value_string frame_type_subtype_vals[] = {
{MGT_REASSOC_RESP, "Reassociation Response"},
{MGT_PROBE_REQ, "Probe Request"},
{MGT_PROBE_RESP, "Probe Response"},
- {MGT_MEASUREMENT_PILOT,"Measurement Pilot"},
+ {MGT_MEASUREMENT_PILOT,"Measurement Pilot"},
{MGT_BEACON, "Beacon frame"},
{MGT_ATIM, "ATIM"},
{MGT_DISASS, "Dissassociate"},
{MGT_AUTHENTICATION, "Authentication"},
{MGT_DEAUTHENTICATION, "Deauthentication"},
{MGT_ACTION, "Action"},
- {MGT_ACTION_NO_ACK, "Action No Ack"},
+ {MGT_ACTION_NO_ACK, "Action No Ack"},
- {CTRL_CONTROL_WRAPPER, "Control Wrapper"},
+ {CTRL_CONTROL_WRAPPER, "Control Wrapper"},
{CTRL_BLOCK_ACK_REQ, "802.11 Block Ack Req"},
{CTRL_BLOCK_ACK, "802.11 Block Ack"},
{CTRL_PS_POLL, "Power-Save poll"},
@@ -573,6 +605,7 @@ static const char *wme_acs[4] = {
#define SM_ACTION_TPC_REQUEST 2
#define SM_ACTION_TPC_REPORT 3
#define SM_ACTION_CHAN_SWITCH_ANNC 4
+#define SM_ACTION_EXT_CHAN_SWITCH_ANNC 5
#define SM_ACTION_ADDTS_REQUEST 0
#define SM_ACTION_ADDTS_RESPONSE 1
@@ -586,6 +619,16 @@ static const char *wme_acs[4] = {
#define BA_ADD_BLOCK_ACK_REQUEST 0
#define BA_ADD_BLOCK_ACK_RESPONSE 1
#define BA_DELETE_BLOCK_ACK 2
+
+#define HT_ACTION_NOTIFY_CHAN_WIDTH 0
+#define HT_ACTION_SM_PWR_SAVE 1
+#define HT_ACTION_PSMP_ACTION 2
+#define HT_ACTION_SET_PCO_PHASE 3
+#define HT_ACTION_MIMO_CSI 4
+#define HT_ACTION_MIMO_BEAMFORMING 5
+#define HT_ACTION_MIMO_COMPRESSED_BEAMFORMING 6
+#define HT_ACTION_ANT_SEL_FEEDBACK 7
+#define HT_ACTION_HT_INFO_EXCHANGE 8
/*** End: Action Fixed Parameter ***/
static int proto_wlan = -1;
@@ -729,6 +772,10 @@ static int ff_dst_mac_addr = -1; /* DLS destination MAC addressi */
static int ff_src_mac_addr = -1; /* DLS source MAC addressi */
static int ff_dls_timeout = -1; /* DLS timeout value */
+/*** Begin: Block Ack Action Fixed Field - Dustin Johnson ***/
+static int ff_ba_action = -1;
+/*** End: Block Ack Action Fixed Field - Dustin Johnson ***/
+
/*** Begin: Block Ack Params Fixed Field - Dustin Johnson ***/
static int ff_block_ack_params = -1;
static int ff_block_ack_params_amsdu_premitted = -1;
@@ -809,7 +856,72 @@ static int ff_sm_pwr_save_sm_mode = -1;
static int ff_sm_pwr_save_reserved = -1;
/*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
-
+/*** End: PCO Phase Control Fixed Field - Dustin Johnson ***/
+static int ff_pco_phase_cntrl = -1;
+/*** End: PCO Phase Control Fixed Field - Dustin Johnson ***/
+
+/*** Begin: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+static int ff_psmp_param_set = -1;
+static int ff_psmp_param_set_n_sta = -1;
+static int ff_psmp_param_set_more_psmp = -1;
+static int ff_psmp_param_set_psmp_sequence_duration = -1;
+/*** End: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+
+/*** Begin: MIMO Control Fixed Field - Dustin Johnson ***/
+static int ff_mimo_cntrl_nc_index = -1;
+static int ff_mimo_cntrl_nr_index = -1;
+static int ff_mimo_cntrl_channel_width = -1;
+static int ff_mimo_cntrl_grouping = -1;
+static int ff_mimo_cntrl_coefficient_size = -1;
+static int ff_mimo_cntrl_codebook_info = -1;
+static int ff_mimo_cntrl_remaining_matrix_segment = -1;
+static int ff_mimo_cntrl_reserved = -1;
+static int ff_mimo_cntrl_sounding_timestamp = -1;
+/*** End: MIMO Control Fixed Field - Dustin Johnson ***/
+
+/*** Begin: Antenna Selection Fixed Field - Dustin Johnson ***/
+static int ff_ant_selection = -1;
+static int ff_ant_selection_0 = -1;
+static int ff_ant_selection_1 = -1;
+static int ff_ant_selection_2 = -1;
+static int ff_ant_selection_3 = -1;
+static int ff_ant_selection_4 = -1;
+static int ff_ant_selection_5 = -1;
+static int ff_ant_selection_6 = -1;
+static int ff_ant_selection_7 = -1;
+/*** End: Antenna Selection Fixed Field - Dustin Johnson ***/
+
+/*** Begin: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+static int ff_ext_channel_switch_announcement = -1;
+/*** End: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+
+/*** Begin: HT Information Fixed Field - Dustin Johnson ***/
+static int ff_ht_info = -1;
+static int ff_ht_info_information_request = -1;
+static int ff_ht_info_40_mhz_intolerant = -1;
+static int ff_ht_info_sta_chan_width = -1;
+static int ff_ht_info_reserved = -1;
+/*** End: HT Information Fixed Field - Dustin Johnson ***/
+
+/*** Begin: HT Action Fixed Field - Dustin Johnson ***/
+static int ff_ht_action = -1;
+/*** End: HT Action Fixed Field - Dustin Johnson ***/
+
+/*** Begin: PSMP Station Information Fixed Field - Dustin Johnson ***/
+static int ff_psmp_sta_info = -1;
+static int ff_psmp_sta_info_dtt_start_offset = -1;
+static int ff_psmp_sta_info_dtt_duration = -1;
+static int ff_psmp_sta_info_sta_id = -1;
+static int ff_psmp_sta_info_utt_start_offset = -1;
+static int ff_psmp_sta_info_utt_duration = -1;
+static int ff_psmp_sta_info_reserved_small= -1;
+static int ff_psmp_sta_info_reserved_large = -1;
+static int ff_psmp_sta_info_psmp_multicast_id = -1;
+/*** End: PSMP Station Information Fixed Field - Dustin Johnson ***/
+
+/*** Begin: MIMO CSI Matrices Report - Dustin Johnson ***/
+static int ff_mimo_csi_snr = -1;
+/*** End: MIMO CSI Matrices Report - Dustin Johnson ***/
/* ************************************************************************* */
/* Flags found in the capability field (fixed field) */
@@ -1241,6 +1353,34 @@ static gint ett_ff_qos_info = -1;
static gint ett_ff_sm_pwr_save = -1;
/*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+/*** Begin: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+static gint ett_ff_psmp_param_set = -1;
+/*** End: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+
+/*** Begin: MIMO Control Fixed Field - Dustin Johnson ***/
+static gint ett_ff_mimo_cntrl = -1;
+/*** End: MIMO Control Fixed Field - Dustin Johnson ***/
+
+/*** Begin: Antenna Selection Fixed Field - Dustin Johnson ***/
+static gint ett_ff_ant_sel = -1;
+/*** End: Antenna Selection Fixed Field - Dustin Johnson ***/
+
+/*** Begin: MIMO Reports - Dustin Johnson ***/
+static gint ett_mimo_report = -1;
+/*** End: MIMO Reports - Dustin Johnson ***/
+
+/*** Begin: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+static gint ett_ff_chan_switch_announce = -1;
+/*** End: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+
+/*** Begin: HT Information Fixed Field - Dustin Johnson ***/
+static gint ett_ff_ht_info = -1;
+/*** End: HT Information Fixed Field - Dustin Johnson ***/
+
+/*** Begin: PSMP Station Information Fixed Field - Dustin Johnson ***/
+static gint ett_ff_psmp_sta_info = -1;
+/*** End: PSMP Station Information Fixed Field - Dustin Johnson ***/
+
static gint ett_80211_mgt_ie = -1;
static gint ett_tsinfo_tree = -1;
static gint ett_sched_tree = -1;
@@ -1289,9 +1429,10 @@ int airpdcap_ctx;
/* Return the length of the current header (in bytes) */
/* ************************************************************************* */
static int
-find_header_length (guint16 fcf)
+find_header_length (guint16 fcf, guint16 ctrl_fcf)
{
int len;
+ guint16 cw_fcf;
switch (FCF_FRAME_TYPE (fcf)) {
@@ -1299,11 +1440,18 @@ find_header_length (guint16 fcf)
return MGT_FRAME_HDR_LEN;
case CONTROL_FRAME:
- switch (COMPOSE_FRAME_TYPE (fcf)) {
+ if (COMPOSE_FRAME_TYPE(fcf) == CTRL_CONTROL_WRAPPER) {
+ len = 6;
+ cw_fcf = ctrl_fcf;
+ } else {
+ len = 0;
+ cw_fcf = fcf;
+ }
+ switch (COMPOSE_FRAME_TYPE (cw_fcf)) {
case CTRL_CTS:
case CTRL_ACKNOWLEDGEMENT:
- return 10;
+ return len + 10;
case CTRL_RTS:
case CTRL_PS_POLL:
@@ -1311,13 +1459,13 @@ find_header_length (guint16 fcf)
case CTRL_CFP_ENDACK:
case CTRL_BLOCK_ACK_REQ:
case CTRL_BLOCK_ACK:
- return 16;
+ return len + 16;
}
- return 4; /* XXX */
+ return len + 4; /* XXX */
case DATA_FRAME:
- len = (FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T4) ? DATA_LONG_HDR_LEN :
- DATA_SHORT_HDR_LEN;
+ len = (FCF_ADDR_SELECTOR(fcf) ==
+ DATA_ADDR_T4) ? DATA_LONG_HDR_LEN : DATA_SHORT_HDR_LEN;
if (DATA_FRAME_IS_QOS(COMPOSE_FRAME_TYPE(fcf))) {
len += 2;
@@ -1330,6 +1478,213 @@ find_header_length (guint16 fcf)
}
}
+mimo_control_t get_mimo_control (tvbuff_t *tvb, int offset)
+{
+ guint16 mimo;
+ mimo_control_t output;
+
+ mimo = tvb_get_letohs (tvb, offset);
+
+ output.nc = (mimo & 0x0003) + 1;
+ output.nr = ((mimo & 0x000C) >> 2) + 1;
+ output.chan_width = (mimo & 0x0010) >> 4;
+
+ switch ((mimo & 0x0060) >> 5)
+ {
+ case 0:
+ output.grouping = 1;
+ break;
+
+ case 1:
+ output.grouping = 2;
+ break;
+
+ case 2:
+ output.grouping = 4;
+ break;
+
+ default:
+ output.grouping = 1;
+ break;
+ }
+
+ switch ((mimo & 0x0180) >> 7)
+ {
+ case 0:
+ output.coefficient_size = 4;
+ break;
+
+ case 1:
+ output.coefficient_size = 5;
+ break;
+
+ case 2:
+ output.coefficient_size = 6;
+ break;
+
+ case 3:
+ output.coefficient_size = 8;
+ break;
+ }
+
+ output.codebook_info = (mimo & 0x0600) >> 9;
+ output.remaining_matrix_segment = (mimo & 0x3800) >> 11;
+
+ return output;
+}
+
+int get_mimo_na (guint8 nr, guint8 nc)
+{
+ if (nr == 2 && nc == 1){
+ return 2;
+ }else if (nr == 2 && nc == 2){
+ return 2;
+ }else if (nr == 3 && nc == 1){
+ return 4;
+ }else if (nr == 3 && nc == 2){
+ return 6;
+ }else if (nr == 3 && nc == 3){
+ return 6;
+ }else if (nr == 4 && nc == 1){
+ return 6;
+ }else if (nr == 4 && nc == 2){
+ return 10;
+ }else if (nr == 4 && nc == 3){
+ return 12;
+ }else if (nr == 4 && nc == 4){
+ return 12;
+ }else{
+ return 0;
+ }
+}
+
+int get_mimo_ns (gboolean chan_width, guint8 output_grouping)
+{
+ int ns = 0;
+
+ if (chan_width)
+ {
+ switch (output_grouping)
+ {
+ case 1:
+ ns = 114;
+ break;
+
+ case 2:
+ ns = 58;
+ break;
+
+ case 4:
+ ns = 30;
+ break;
+
+ default:
+ ns = 0;
+ }
+ } else {
+ switch (output_grouping)
+ {
+ case 1:
+ ns = 56;
+ break;
+
+ case 2:
+ ns = 30;
+ break;
+
+ case 4:
+ ns = 16;
+ break;
+
+ default:
+ ns = 0;
+ }
+ }
+
+ return ns;
+}
+
+int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
+{
+ proto_item *snr_item;
+ proto_tree *snr_tree;
+ int csi_matrix_size, start_offset;
+ int ns, i;
+
+ start_offset = offset;
+ snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
+ snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ for (i=1; i <= mimo_cntrl.nr; i++)
+ {
+ guint8 snr;
+
+ snr = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(snr_tree, ff_mimo_csi_snr, tvb, offset, 1, snr, "Channel %d - Signal to Noise Ratio: 0x%02X", i, snr);
+ offset++;
+ }
+
+ ns = get_mimo_ns(mimo_cntrl.chan_width, mimo_cntrl.grouping);
+ csi_matrix_size = ns*(3+(2*mimo_cntrl.nc*mimo_cntrl.nr*mimo_cntrl.coefficient_size));
+ csi_matrix_size = roundup2(csi_matrix_size, 8) / 8;
+ proto_tree_add_text(tree, tvb, offset, csi_matrix_size, "CSI Matrices");
+ offset += csi_matrix_size;
+ return offset - start_offset;
+}
+
+int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
+{
+ proto_item *snr_item;
+ proto_tree *snr_tree;
+ int csi_matrix_size, start_offset;
+ int ns, i;
+
+ start_offset = offset;
+ snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
+ snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ for (i=1; i <= mimo_cntrl.nc; i++)
+ {
+ guint8 snr;
+
+ snr = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(snr_tree, ff_mimo_csi_snr, tvb, offset, 1, snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr);
+ offset++;
+ }
+
+ ns = get_mimo_ns(mimo_cntrl.chan_width, mimo_cntrl.grouping);
+ csi_matrix_size = ns*(2*mimo_cntrl.nc*mimo_cntrl.nr*mimo_cntrl.coefficient_size);
+ csi_matrix_size = roundup2(csi_matrix_size, 8) / 8;
+ proto_tree_add_text(tree, tvb, offset, csi_matrix_size, "Beamforming Feedback Matrices");
+ offset += csi_matrix_size;
+ return offset - start_offset;
+}
+
+int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
+{
+ proto_item *snr_item;
+ proto_tree *snr_tree;
+ int csi_matrix_size, start_offset;
+ int ns, na, i;
+
+ start_offset = offset;
+ snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
+ snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ for (i=1; i <= mimo_cntrl.nc; i++)
+ {
+ guint8 snr;
+
+ snr = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint_format(snr_tree, ff_mimo_csi_snr, tvb, offset, 1, snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr);
+ offset++;
+ }
+
+ na = get_mimo_na(mimo_cntrl.nr, mimo_cntrl.nc);
+ ns = get_mimo_ns(mimo_cntrl.chan_width, mimo_cntrl.grouping);
+ csi_matrix_size = ns*(na*((mimo_cntrl.codebook_info+1)*2 + 2)/2);
+ csi_matrix_size = roundup2(csi_matrix_size, 8) / 8;
+ proto_tree_add_text(tree, tvb, offset, csi_matrix_size, "Compressed Beamforming Feedback Matrices");
+ offset += csi_matrix_size;
+ return offset - start_offset;
+}
/* ************************************************************************* */
/* This is the capture function used to update packet counts */
@@ -1365,7 +1720,7 @@ capture_ieee80211_common (const guchar * pd, int offset, int len,
if (fixed_length_header)
hdr_length = DATA_LONG_HDR_LEN;
else
- hdr_length = find_header_length (fcf);
+ hdr_length = find_header_length (fcf, 0);
if (datapad)
hdr_length = roundup2(hdr_length, 4);
/* I guess some bridges take Netware Ethernet_802_3 frames,
@@ -1519,10 +1874,8 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
"Capability Information: 0x%04X",
capability);
cap_tree = proto_item_add_subtree (cap_item, ett_cap_tree);
- proto_tree_add_boolean (cap_tree, ff_cf_ess, tvb, offset, 2,
- capability);
- proto_tree_add_boolean (cap_tree, ff_cf_ibss, tvb, offset, 2,
- capability);
+ proto_tree_add_boolean (cap_tree, ff_cf_ess, tvb, offset, 2, capability);
+ proto_tree_add_boolean (cap_tree, ff_cf_ibss, tvb, offset, 2, capability);
if (ESS_SET (capability) != 0) /* This is an AP */
proto_tree_add_uint (cap_tree, ff_cf_ap_poll, tvb, offset, 2,
capability);
@@ -1620,6 +1973,13 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
length += 1;
break;
+ /*** Begin: Block Ack Action Fixed Field - Dustin Johnson ***/
+ case FIELD_BLOCK_ACK_ACTION_CODE:
+ proto_tree_add_item (tree, ff_ba_action, tvb, offset, 1, TRUE);
+ length += 1;
+ break;
+ /*** End: Block Ack Action Fixed Field - Dustin Johnson ***/
+
/*** Begin: Block Ack Params Fixed Field - Dustin Johnson ***/
case FIELD_BLOCK_ACK_PARAM:
{
@@ -1632,13 +1992,15 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
param_item = proto_tree_add_uint(tree, ff_block_ack_params, tvb, offset, 2, params);
param_tree = proto_item_add_subtree (param_item, ett_ff_ba_param_tree);
- proto_tree_add_uint(param_tree, ff_block_ack_params_amsdu_premitted, tvb, offset, 2, params);
- proto_tree_add_uint(param_tree, ff_block_ack_params_policy, tvb, offset, 2, params);
- proto_tree_add_uint(param_tree, ff_block_ack_params_tid, tvb, offset, 2, params);
+ proto_tree_add_boolean(param_tree, ff_block_ack_params_amsdu_premitted, tvb, offset, 1, params);
+ proto_tree_add_boolean(param_tree, ff_block_ack_params_policy, tvb, offset, 1, params);
+ proto_tree_add_uint(param_tree, ff_block_ack_params_tid, tvb, offset, 1, params);
proto_tree_add_uint(param_tree, ff_block_ack_params_buffer_size, tvb, offset, 2, params);
+ length += 2;
break;
}
/*** End: Block Ack Params Fixed Field - Dustin Johnson ***/
+
/*** Begin: Block Ack Timeout Fixed Field - Dustin Johnson ***/
case FIELD_BLOCK_ACK_TIMEOUT:
{
@@ -1646,7 +2008,7 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
timeout = tvb_get_letohs (tvb, offset);
proto_tree_add_uint(tree, ff_block_ack_timeout, tvb, offset, 2, timeout);
- length += 1;
+ length += 2;
break;
}
/*** End: Block Ack Timeout Fixed Field - Dustin Johnson ***/
@@ -1741,8 +2103,8 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
param_tree = proto_item_add_subtree (param_item, ett_ff_ba_param_tree);
proto_tree_add_uint(param_tree, ff_delba_param_reserved, tvb, offset, 2, params);
- proto_tree_add_uint(param_tree, ff_delba_param_init, tvb, offset, 2, params);
- proto_tree_add_uint(param_tree, ff_delba_param_tid, tvb, offset, 2, params);
+ proto_tree_add_boolean(param_tree, ff_delba_param_init, tvb, offset+1, 1, params);
+ proto_tree_add_uint(param_tree, ff_delba_param_tid, tvb, offset+1, 1, params);
length +=2;
break;
}
@@ -1815,9 +2177,9 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
proto_tree_add_uint(info_tree, ff_qos_info_ap_edca_param_set_counter, tvb, offset, 1, info);
proto_tree_add_uint(info_tree, ff_qos_info_ap_q_ack, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_ap_queue_req, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_ap_txop_request, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_ap_reserved, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_ap_queue_req, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_ap_txop_request, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_ap_reserved, tvb, offset, 1, info);
length +=1;
break;
}
@@ -1835,20 +2197,20 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
info_item = proto_tree_add_uint(tree, ff_qos_info_sta, tvb, offset, 1, info);
info_tree = proto_item_add_subtree (info_item, ett_ff_qos_info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_ac_vo, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_ac_vi, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_ac_bk, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_ac_be, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_q_ack, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_ac_vo, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_ac_vi, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_ac_bk, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_ac_be, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_q_ack, tvb, offset, 1, info);
proto_tree_add_uint(info_tree, ff_qos_info_sta_max_sp_len, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_qos_info_sta_more_data_ack, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_qos_info_sta_more_data_ack, tvb, offset, 1, info);
length +=1;
break;
}
/*** End: QoS Inforamtion STA Fixed Field - Dustin Johnson ***/
- /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
case FIELD_SM_PWR_CNTRL:
{
guint8 info;
@@ -1860,14 +2222,207 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
info_item = proto_tree_add_uint(tree, ff_sm_pwr_save, tvb, offset, 1, info);
info_tree = proto_item_add_subtree (info_item, ett_ff_sm_pwr_save);
- proto_tree_add_uint(info_tree, ff_sm_pwr_save_enabled, tvb, offset, 1, info);
- proto_tree_add_uint(info_tree, ff_sm_pwr_save_sm_mode, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_sm_pwr_save_enabled, tvb, offset, 1, info);
+ proto_tree_add_boolean(info_tree, ff_sm_pwr_save_sm_mode, tvb, offset, 1, info);
proto_tree_add_uint(info_tree, ff_sm_pwr_save_reserved, tvb, offset, 1, info);
length +=1;
break;
}
/*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ /*** Begin: PCO Phase Control Fixed Field - Dustin Johnson ***/
+ case FIELD_PCO_PHASE_CNTRL:
+ proto_tree_add_uint(tree, ff_pco_phase_cntrl, tvb, offset, 1, tvb_get_guint8 (tvb, offset));
+ length +=1;
+ break;
+ /*** End: PCO Phase Control Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+ case FIELD_PSMP_PARAM_SET:
+ {
+ guint16 params;
+ proto_item *param_item;
+ proto_tree *param_tree;
+
+ params = tvb_get_letohs (tvb, offset);
+
+ param_item = proto_tree_add_uint(tree, ff_psmp_param_set, tvb, offset, 2, params);
+ param_tree = proto_item_add_subtree (param_item, ett_ff_psmp_param_set);
+
+ proto_tree_add_uint(param_tree, ff_psmp_param_set_n_sta, tvb, offset, 1, params & 0x000F);
+ proto_tree_add_boolean(param_tree, ff_psmp_param_set_more_psmp, tvb, offset, 1, (params & 0x0010) >> 4);
+ proto_tree_add_uint_format(param_tree, ff_psmp_param_set_psmp_sequence_duration, tvb, offset, 2,
+ (params & 0xFFE0) >> 5, "PSMP Sequence Duration: 0x%04X * 8 us", (params & 0xFFE0) >> 5);
+ length +=2;
+ break;
+ }
+ /*** End: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: MIMO Control Fixed Field - Dustin Johnson ***/
+ case FIELD_MIMO_CNTRL:
+ {
+ guint16 mimo;
+ guint32 time;
+ proto_item *mimo_item;
+ proto_tree *mimo_tree;
+
+ mimo = tvb_get_letohs (tvb, offset);
+
+ mimo_item = proto_tree_add_text(tree, tvb, offset, 2, "MIMO Control");
+ mimo_tree = proto_item_add_subtree (mimo_item, ett_ff_mimo_cntrl);
+
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_nc_index, tvb, offset, 1, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_nr_index, tvb, offset, 1, mimo);
+ proto_tree_add_boolean(mimo_tree, ff_mimo_cntrl_channel_width, tvb, offset, 1, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_grouping, tvb, offset, 1, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_coefficient_size, tvb, offset, 2, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_codebook_info, tvb, offset+1, 1, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_remaining_matrix_segment, tvb, offset+1, 1, mimo);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_reserved, tvb, offset+1, 1, mimo);
+
+ offset+=2;
+ time = tvb_get_letohl (tvb, offset);
+ proto_tree_add_uint(mimo_tree, ff_mimo_cntrl_sounding_timestamp, tvb, offset, 4, time);
+ length +=6;
+ break;
+ }
+ /*** End: MIMO Control Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: Antenna Selection Fixed Field - Dustin Johnson ***/
+ case FIELD_ANT_SELECTION:
+ {
+ guint8 ant;
+ proto_item *ant_item;
+ proto_tree *ant_tree;
+
+ ant = tvb_get_guint8 (tvb, offset);
+
+ ant_item = proto_tree_add_uint(tree, ff_ant_selection, tvb, offset, 1, ant);
+ ant_tree = proto_item_add_subtree (ant_item, ett_ff_ant_sel);
+
+ proto_tree_add_uint(ant_tree, ff_ant_selection_0, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_1, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_2, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_3, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_4, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_5, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_6, tvb, offset, 1, ant);
+ proto_tree_add_uint(ant_tree, ff_ant_selection_7, tvb, offset, 1, ant);
+
+ length +=1;
+ break;
+ }
+ /*** End: Antenna Selection Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+ case FIELD_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT:
+ {
+ guint32 ext_chan;
+ proto_item *chan_item;
+ proto_tree *chan_tree;
+
+ ext_chan = tvb_get_letohl (tvb, offset);
+
+ chan_item = proto_tree_add_uint(tree, ff_ext_channel_switch_announcement, tvb, offset, 1, ext_chan);
+ chan_tree = proto_item_add_subtree (chan_item, ett_ff_chan_switch_announce);
+
+ proto_tree_add_uint(chan_tree, hf_tag_ext_channel_switch_announcement_switch_mode, tvb, offset++, 1, (ext_chan & 0x000000FF));
+ proto_tree_add_uint(chan_tree, hf_tag_ext_channel_switch_announcement_new_reg_class, tvb, offset++, 1, (ext_chan & 0x0000FF00) >> 8);
+ proto_tree_add_uint(chan_tree, hf_tag_ext_channel_switch_announcement_new_chan_number, tvb, offset++, 1, (ext_chan & 0x00FF0000) >> 16);
+ proto_tree_add_uint(chan_tree, hf_tag_ext_channel_switch_announcement_switch_count, tvb, offset++, 1, (ext_chan & 0xFF000000) >> 24);
+ length += 4;
+ break;
+ }
+ /*** End: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: HT Information Fixed Field - Dustin Johnson ***/
+ case FIELD_HT_INFORMATION:
+ {
+ guint8 info;
+ proto_item *ht_item;
+ proto_tree *ht_tree;
+
+ info = tvb_get_guint8 (tvb, offset);
+
+ ht_item = proto_tree_add_uint(tree, ff_ht_info, tvb, offset, 1, info);
+ ht_tree = proto_item_add_subtree (ht_item, ett_ff_ht_info);
+
+ proto_tree_add_boolean(ht_tree, ff_ht_info_information_request, tvb, offset, 1, info);
+ proto_tree_add_boolean(ht_tree, ff_ht_info_40_mhz_intolerant, tvb, offset, 1, info);
+ proto_tree_add_boolean(ht_tree, ff_ht_info_sta_chan_width, tvb, offset, 1, info);
+ proto_tree_add_uint(ht_tree, ff_ht_info_reserved, tvb, offset, 1, info);
+ length += 1;
+ break;
+ }
+ /*** End: HT Information Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: HT Action Fixed Field - Dustin Johnson ***/
+ case FIELD_HT_ACTION_CODE:
+ proto_tree_add_uint(tree, ff_ht_action, tvb, offset, 1, tvb_get_guint8 (tvb, offset));
+ length +=1;
+ break;
+ /*** End: HT Action Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: PSMP Station Information Fixed Field - Dustin Johnson ***/
+ case FIELD_PSMP_STA_INFO:
+ {
+ #define BROADCAST 0
+ #define MULTICAST 1
+ #define INDIVIDUALLY_ADDRESSED 2
+
+ guint64 info_large;
+ guint32 info_medium;
+ guint16 info_small;
+ guint8 type;
+ proto_item *psmp_item;
+ proto_tree *psmp_tree;
+
+ info_medium = tvb_get_letohl (tvb, offset);
+ type = info_medium & 0x3;
+
+ psmp_item = proto_tree_add_uint(tree, ff_psmp_sta_info, tvb, offset, 8, type);
+ psmp_tree = proto_item_add_subtree (psmp_item, ett_ff_psmp_sta_info);
+
+ switch (type)
+ {
+ case BROADCAST:
+ {
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_start_offset, tvb, offset, 2, (info_medium & 0x00001FFC) >> 2);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_duration, tvb, offset+1, 2, (info_medium & 0x001FE000) >> 13);
+ info_large = tvb_get_letoh64 (tvb, offset);
+ proto_tree_add_uint64(psmp_tree, ff_psmp_sta_info_reserved_large, tvb, offset, 6, (info_large & 0xFFFFFFFFFFE00000) >> 21);
+ break;
+ }
+
+ case MULTICAST:
+ {
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_start_offset, tvb, offset, 2, (info_medium & 0x00001FFC) >> 2);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_duration, tvb, offset+1, 2, (info_medium & 0x001FE000) >> 13);
+ info_large = tvb_get_letoh64 (tvb, offset);
+ proto_tree_add_uint64(psmp_tree, ff_psmp_sta_info_psmp_multicast_id, tvb, offset, 6, (info_large & 0xFFFFFFFFFFE00000) >> 21);
+ break;
+ }
+
+ case INDIVIDUALLY_ADDRESSED:
+ {
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_start_offset, tvb, offset, 2, (info_medium & 0x00001FFC) >> 2);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_dtt_duration, tvb, offset+1, 2, (info_medium & 0x001FE000) >> 13);
+ offset+=2;
+ info_medium = tvb_get_letohl (tvb, offset);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_sta_id, tvb, offset, 3, (info_medium & 0x001FFFE0) >> 5);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_utt_start_offset, tvb, offset+2, 2, (info_medium & 0xFFE00000) >> 21);
+ offset+=4;
+ info_small = tvb_get_letohs (tvb, offset);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_utt_duration, tvb, offset, 2, info_small & 0x03FF);
+ proto_tree_add_uint(psmp_tree, ff_psmp_sta_info_reserved_small, tvb, offset+1, 1, (info_small & 0xFC00) >> 10);
+ break;
+ }
+ }
+ length +=8;
+ break;
+ }
+ /*** End: PSMP Station Information Fixed Field - Dustin Johnson ***/
+
case FIELD_SCHEDULE_INFO:
{
proto_item *sched_item;
@@ -1891,202 +2446,263 @@ add_fixed_field(proto_tree * tree, tvbuff_t * tvb, int offset, int lfcode)
length += 2;
break;
}
- case FIELD_ACTION:
- {
- proto_item *action_item;
- proto_tree *action_tree;
-
- action_item = proto_tree_add_item(tree, hf_action,
- tvb, offset, 2, TRUE);
- action_tree = proto_item_add_subtree(action_item, ett_sched_tree);
- switch (tvb_get_guint8(tvb, offset))
- {
- case CAT_SPECTRUM_MGMT:
- {
- switch (tvb_get_guint8(tvb, offset+1))
- {
- case SM_ACTION_MEASUREMENT_REQUEST:
- case SM_ACTION_MEASUREMENT_REPORT:
- case SM_ACTION_TPC_REQUEST:
- case SM_ACTION_TPC_REPORT:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
- length += 3; /* Size of fixed fields */
- break;
-
- case SM_ACTION_CHAN_SWITCH_ANNC:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- length += 2; /* Size of fixed fields */
- break;
-
- default:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- length += 2; /* Size of fixed fields */
- break;
- }
- break;
- }
-
- case CAT_QOS:
- {
- switch (tvb_get_guint8(tvb, offset+1))
- {
- case SM_ACTION_ADDTS_REQUEST:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
- length += 3;
- break;
-
- case SM_ACTION_ADDTS_RESPONSE:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
- add_fixed_field(action_tree, tvb, offset+3, FIELD_STATUS_CODE);
- length += 5;
- break;
-
- case SM_ACTION_DELTS:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_QOS_TS_INFO);
- add_fixed_field(action_tree, tvb, offset+5, FIELD_REASON_CODE);
- length += 7;
- break;
-
- case SM_ACTION_QOS_SCHEDULE:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
- length += 2;
- break;
-
- default:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- length += 2; /* Size of fixed fields */
- break;
- }
- break;
- }
-
- case CAT_DLS:
- {
- switch (tvb_get_guint8(tvb, offset+1))
- {
- case SM_ACTION_DLS_REQUEST:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_DST_MAC_ADDR);
- add_fixed_field(action_tree, tvb, offset+8, FIELD_SRC_MAC_ADDR);
- add_fixed_field(action_tree, tvb, offset+14, FIELD_CAP_INFO);
- add_fixed_field(action_tree, tvb, offset+16, FIELD_DLS_TIMEOUT);
- length += 18;
- break;
-
- case SM_ACTION_DLS_RESPONSE:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_STATUS_CODE);
- add_fixed_field(action_tree, tvb, offset+4, FIELD_DST_MAC_ADDR);
- add_fixed_field(action_tree, tvb, offset+10, FIELD_SRC_MAC_ADDR);
- length += 16;
- if (!ff_status_code)
- add_fixed_field(action_tree, tvb, offset+16, FIELD_CAP_INFO);
- break;
-
- case SM_ACTION_DLS_TEARDOWN:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
- add_fixed_field(action_tree, tvb, offset+2, FIELD_DST_MAC_ADDR);
- add_fixed_field(action_tree, tvb, offset+8, FIELD_SRC_MAC_ADDR);
- add_fixed_field(action_tree, tvb, offset+14, FIELD_REASON_CODE);
- length += 16;
- break;
-
- default:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- length += 2; /* Size of fixed fields */
- break;
- }
- break;
- }
-
- case CAT_BLOCK_ACK:
- {
- switch (tvb_get_guint8(tvb, offset+1))
- {
- case BA_ADD_BLOCK_ACK_REQUEST:
- {
- guint start = 0;
- start = offset;
-
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_PARAM);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_TIMEOUT);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- length = offset - start; /* Size of fixed fields */
- break;
- }
- case BA_ADD_BLOCK_ACK_RESPONSE:
- {
- guint start = 0;
- start = offset;
-
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_STATUS_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_PARAM);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_TIMEOUT);
- length = offset - start; /* Size of fixed fields */
- break;
- }
- case BA_DELETE_BLOCK_ACK:
- {
- guint start = 0;
- start = offset;
-
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_DELBA_PARAM_SET);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_REASON_CODE);
- length = offset - start; /* Size of fixed fields */
- break;
- }
- }
- break;
- }
-
- case CAT_MGMT_NOTIFICATION: /* Management notification frame */
- {
- guint start = 0;
- start = offset;
-
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_WME_ACTION_CODE);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
- offset += add_fixed_field(action_tree, tvb, offset, FIELD_WME_STATUS_CODE);
- length = offset - start; /* Size of fixed fields */
- break;
- }
-
- case CAT_HT:
- { /* TODO - All this stuff */
- switch (tvb_get_guint8(tvb, offset+1))
- {
- case 0:
- break;
- }
- break;
- }
-
- default:
- add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
- length += 1; /* Size of fixed fields */
- break;
- }
+ case FIELD_ACTION:
+ {
+ proto_item *action_item;
+ proto_tree *action_tree;
+
+ action_item = proto_tree_add_item(tree, hf_action, tvb, offset, 1, TRUE);
+ action_tree = proto_item_add_subtree(action_item, ett_sched_tree);
+
+ switch (tvb_get_guint8(tvb, offset))
+ {
+ case CAT_SPECTRUM_MGMT:
+ {
+ switch (tvb_get_guint8(tvb, offset+1))
+ {
+ case SM_ACTION_MEASUREMENT_REQUEST:
+ case SM_ACTION_MEASUREMENT_REPORT:
+ case SM_ACTION_TPC_REQUEST:
+ case SM_ACTION_TPC_REPORT:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
+ length += 3; /* Size of fixed fields */
+ break;
+
+ case SM_ACTION_CHAN_SWITCH_ANNC:
+ case SM_ACTION_EXT_CHAN_SWITCH_ANNC:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_ACTION_CODE);
+ length += 2; /* Size of fixed fields */
+ break;
+
+ default:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_ACTION_CODE);
+ length += 2; /* Size of fixed fields */
+ break;
+ }
+ break;
+ }
+
+ case CAT_QOS:
+ {
+ switch (tvb_get_guint8(tvb, offset+1))
+ {
+ case SM_ACTION_ADDTS_REQUEST:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
+ length += 3;
+ break;
+
+ case SM_ACTION_ADDTS_RESPONSE:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_DIALOG_TOKEN);
+ add_fixed_field(action_tree, tvb, offset+3, FIELD_STATUS_CODE);
+ length += 5;
+ break;
+
+ case SM_ACTION_DELTS:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_QOS_TS_INFO);
+ add_fixed_field(action_tree, tvb, offset+5, FIELD_REASON_CODE);
+ length += 7;
+ break;
+
+ case SM_ACTION_QOS_SCHEDULE:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_QOS_ACTION_CODE);
+ length += 2;
+ break;
+
+ default:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ length += 2; /* Size of fixed fields */
+ break;
+ }
+ break;
+ }
+
+ case CAT_DLS:
+ {
+ switch (tvb_get_guint8(tvb, offset+1))
+ {
+ case SM_ACTION_DLS_REQUEST:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_DST_MAC_ADDR);
+ add_fixed_field(action_tree, tvb, offset+8, FIELD_SRC_MAC_ADDR);
+ add_fixed_field(action_tree, tvb, offset+14, FIELD_CAP_INFO);
+ add_fixed_field(action_tree, tvb, offset+16, FIELD_DLS_TIMEOUT);
+ length += 18;
+ break;
+
+ case SM_ACTION_DLS_RESPONSE:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_STATUS_CODE);
+ add_fixed_field(action_tree, tvb, offset+4, FIELD_DST_MAC_ADDR);
+ add_fixed_field(action_tree, tvb, offset+10, FIELD_SRC_MAC_ADDR);
+ length += 16;
+ if (!ff_status_code)
+ add_fixed_field(action_tree, tvb, offset+16, FIELD_CAP_INFO);
+ break;
+
+ case SM_ACTION_DLS_TEARDOWN:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ add_fixed_field(action_tree, tvb, offset+1, FIELD_DLS_ACTION_CODE);
+ add_fixed_field(action_tree, tvb, offset+2, FIELD_DST_MAC_ADDR);
+ add_fixed_field(action_tree, tvb, offset+8, FIELD_SRC_MAC_ADDR);
+ add_fixed_field(action_tree, tvb, offset+14, FIELD_REASON_CODE);
+ length += 16;
+ break;
+
+ default:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ length += 2; /* Size of fixed fields */
+ break;
+ }
+ break;
+ }
+
+ case CAT_BLOCK_ACK:
+ {
+ switch (tvb_get_guint8(tvb, offset+1))
+ {
+ case BA_ADD_BLOCK_ACK_REQUEST:
+ {
+ guint start = 0;
+ start = offset;
+
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_PARAM);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_TIMEOUT);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
+ length = offset - start; /* Size of fixed fields */
+ break;
+ }
+ case BA_ADD_BLOCK_ACK_RESPONSE:
+ {
+ guint start = 0;
+ start = offset;
+
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_STATUS_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_PARAM);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_TIMEOUT);
+ length = offset - start; /* Size of fixed fields */
+ break;
+ }
+ case BA_DELETE_BLOCK_ACK:
+ {
+ guint start = 0;
+ start = offset;
+
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_BLOCK_ACK_ACTION_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_DELBA_PARAM_SET);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_REASON_CODE);
+ length = offset - start; /* Size of fixed fields */
+ break;
+ }
+ }
+ break;
+ }
+
+ case CAT_MGMT_NOTIFICATION: /* Management notification frame */
+ {
+ guint start = 0;
+ start = offset;
+
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_WME_ACTION_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_DIALOG_TOKEN);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_WME_STATUS_CODE);
+ length = offset - start; /* Size of fixed fields */
+ break;
+ }
+
+ case CAT_HT:
+ { /* TODO - All this stuff */
+ guint start = 0;
+ start = offset;
+
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_HT_ACTION_CODE);
+ switch (tvb_get_guint8(tvb, offset+1))
+ {
+ case HT_ACTION_NOTIFY_CHAN_WIDTH:
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_CHANNEL_WIDTH);
+ break;
+ case HT_ACTION_SM_PWR_SAVE:
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_SM_PWR_CNTRL);
+ break;
+ case HT_ACTION_PSMP_ACTION:
+ {
+ guint8 n_sta, i;
+
+ n_sta = tvb_get_guint8(tvb, offset);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_PSMP_PARAM_SET);
+
+ for (i=0; i< (n_sta & 0x1F); i++){
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_PSMP_STA_INFO);
+ }
+ break;
+ }
+ case HT_ACTION_SET_PCO_PHASE:
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_PCO_PHASE_CNTRL);
+ break;
+ case HT_ACTION_MIMO_CSI:
+ {
+ mimo_control_t mimo_cntrl;
+ mimo_cntrl = get_mimo_control (tvb, offset);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_MIMO_CNTRL);
+ offset += add_mimo_csi_matrices_report (action_tree, tvb, offset, mimo_cntrl);
+ break;
+ }
+ case HT_ACTION_MIMO_BEAMFORMING:
+ {
+ mimo_control_t mimo_cntrl;
+ mimo_cntrl = get_mimo_control (tvb, offset);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_MIMO_CNTRL);
+ offset += add_mimo_beamforming_feedback_report (action_tree, tvb, offset, mimo_cntrl);
+ break;
+ }
+ case HT_ACTION_MIMO_COMPRESSED_BEAMFORMING:
+ {
+ mimo_control_t mimo_cntrl;
+ mimo_cntrl = get_mimo_control (tvb, offset);
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_MIMO_CNTRL);
+ offset += add_mimo_compressed_beamforming_feedback_report (action_tree, tvb, offset, mimo_cntrl);
+ break;
+ }
+ case HT_ACTION_ANT_SEL_FEEDBACK:
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_ANT_SELECTION);
+ break;
+ case HT_ACTION_HT_INFO_EXCHANGE:
+ offset += add_fixed_field(action_tree, tvb, offset, FIELD_HT_INFORMATION);
+ break;
+ default:
+ /* Unkown */
+ break;
+ }
+ break;
+ length = offset - start;
+ }
+
+ default:
+ add_fixed_field(action_tree, tvb, offset, FIELD_CATEGORY_CODE);
+ length += 1; /* Size of fixed fields */
+ break;
+ }
}
}
return length;
@@ -2223,17 +2839,16 @@ dissect_vendor_ie_wpawme(proto_tree * ietree, proto_tree * tree, tvbuff_t * tag_
guint16 ts_info, msdu_size, surplus_bandwidth;
const char *direction[] = { "Uplink", "Downlink", "Reserved", "Bi-directional" };
const value_string fields[] = {
- {13, "Minimum Service Interval"},
- {17, "Maximum Service Interval"},
- {21, "Inactivity Interval"},
- {25, "Suspension Interval"},
- {29, "Service Start Time"},
- {33, "Minimum Data Rate"},
- {37, "Mean Data Rate"},
- {41, "Peak Data Rate"},
- {45, "Maximum Burst Size"},
- {49, "Delay Bound"},
- {53, "Minimum PHY Rate"},
+ {12, "Minimum Service Interval"},
+ {16, "Maximum Service Interval"},
+ {20, "Inactivity Interval"},
+ {24, "Service Start Time"},
+ {28, "Minimum Data Rate"},
+ {32, "Mean Data Rate"},
+ {36, "Maximum Burst Size"},
+ {40, "Minimum PHY Rate"},
+ {44, "Peak Data Rate"},
+ {48, "Delay Bound"},
{0, NULL}
};
const char *field;
@@ -2253,9 +2868,9 @@ dissect_vendor_ie_wpawme(proto_tree * ietree, proto_tree * tree, tvbuff_t * tag_
byte1, qos_tags[byte1], qos_acs[byte1],
(ts_info & 0x0080) ? "" : "not ",
direction[(ts_info >> 5) & 0x3]);
- proto_tree_add_string(tree, tag_interpretation, tag_tvb, tag_off, 3,
+ proto_tree_add_string(tree, tag_interpretation, tag_tvb, tag_off, 2,
out_buff);
- tag_off += 3;
+ tag_off += 2;
msdu_size = tvb_get_letohs(tag_tvb, tag_off);
g_snprintf(out_buff, SHORT_STR,
@@ -2277,7 +2892,7 @@ dissect_vendor_ie_wpawme(proto_tree * ietree, proto_tree * tree, tvbuff_t * tag_
proto_tree_add_string(tree, tag_interpretation, tag_tvb, tag_off, 4,
out_buff);
tag_off += 4;
- if (tag_off == 57)
+ if (tag_off == 52)
break;
}
@@ -2351,7 +2966,7 @@ dissect_vendor_ie_aironet(proto_item * aironet_item, proto_tree * ietree,
case AIRONET_IE_VERSION:
proto_tree_add_item (ietree, hf_aironet_ie_version, tvb, offset, 1, TRUE);
proto_item_append_text(aironet_item, ": Aironet CCX version = %d",
- tvb_get_guint8(tvb, offset));
+ tvb_get_guint8(tvb, offset));
dont_change = TRUE;
break;
case AIRONET_IE_QOS:
@@ -2932,11 +3547,9 @@ dissect_ht_info_ie_1_0(proto_tree * tree, tvbuff_t * tvb, int offset,
* information from the PHY (which would be monumentally silly)?
*
* At any rate, it doesn't look like any equipment we have produces
- * +HTC frames, so the code is #if 0'ed out (and completely untested)
- * for now.
+ * +HTC frames, so the code is completely untested.
*/
-#if 0
static void
dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset)
{
@@ -2974,7 +3587,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset)
HTC_CAL_POS(htc));
proto_tree_add_uint(htc_subtree, hf_htc_cal_seq, tvb, offset + 2, 1,
HTC_CAL_SEQ(htc));
- proto_tree_add_uint(htc_subtree, hf_htc_csi_steering, tvb, offset + 2, 1
+ proto_tree_add_uint(htc_subtree, hf_htc_csi_steering, tvb, offset + 2, 1,
HTC_CSI_STEERING(htc));
proto_tree_add_boolean(htc_subtree, hf_htc_ndp_announcement, tvb,
@@ -2984,7 +3597,6 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset)
proto_tree_add_boolean(htc_subtree, hf_htc_rdg_more_ppdu, tvb,
offset + 3, 1, HTC_RDG_MORE_PPDU(htc));
}
-#endif
static void
dissect_frame_control(proto_tree * tree, tvbuff_t * tvb, gboolean wlan_broken_fc,
@@ -2994,13 +3606,9 @@ dissect_frame_control(proto_tree * tree, tvbuff_t * tvb, gboolean wlan_broken_fc
proto_tree *fc_tree, *flag_tree;
proto_item *fc_item, *flag_item;
- fcf = tvb_get_letohs (tvb, offset);
- if (wlan_broken_fc) {
- /* Swap bytes */
- fcf = ((fcf & 0xff) << 8) | (((fcf & 0xff00) >> 8) & 0xff);
- }
+ fcf = FETCH_FCF(offset);
- flags = FCF_FLAGS (fcf);
+ flags = FCF_FLAGS(fcf);
frame_type_subtype = COMPOSE_FRAME_TYPE(fcf);
proto_tree_add_uint (tree, hf_fc_frame_type_subtype,
@@ -3091,7 +3699,7 @@ static const value_string tag_num_vals[] = {
{ TAG_FH_PARAMETER, "FH Parameter set" },
{ TAG_DS_PARAMETER, "DS Parameter set" },
{ TAG_CF_PARAMETER, "CF Parameter set" },
- { TAG_TIM, "(TIM) Traffic Indication Map" },
+ { TAG_TIM, "Traffic Indication Map (TIM)" },
{ TAG_IBSS_PARAMETER, "IBSS Parameter set" },
{ TAG_COUNTRY_INFO, "Country Information" },
{ TAG_FH_HOPPING_PARAMETER, "Hopping Pattern Parameters" },
@@ -3114,7 +3722,7 @@ static const value_string tag_num_vals[] = {
{ TAG_SCHEDULE, "Schedule"},
{ TAG_TS_DELAY, "TS Delay"},
{ TAG_TCLAS_PROCESS, "TCLAS Processing"},
- { TAG_HT_CAPABILITY, "HT Capabilities (802.11n D1.10)"},
+ { TAG_HT_CAPABILITY, "HT Capabilities (802.11n D1.10)"},
{ TAG_NEIGHBOR_REPORT, "Neighbor Report"},
{ TAG_HT_INFO, "HT Information (802.11n D1.10)"},
{ TAG_SECONDARY_CHANNEL_OFFSET, "Secondary Channel Offset (802.11n D1.10)"},
@@ -3768,7 +4376,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
proto_tree_add_uint_format(sub_tree, hf_tag_measure_request_channel_number, tvb, offset, 1, channel_number, "Measurement Channel Number: 0x%02X", channel_number);
start_time = tvb_get_letoh64 (tvb, offset);
- proto_tree_add_uint64_format(sub_tree, hf_tag_measure_request_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016" PRIX64, start_time);
+ proto_tree_add_uint64_format(sub_tree, hf_tag_measure_request_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016llX", start_time);
offset += 8;
duration = tvb_get_letohs (tvb, offset);
@@ -3979,7 +4587,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
offset++;
start_time = tvb_get_letoh64 (tvb, offset);
- proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016" PRIX64, start_time);
+ proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016llX", start_time);
offset += 8;
duration = tvb_get_letohs (tvb, offset);
@@ -3995,7 +4603,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
offset++;
start_time = tvb_get_letoh64 (tvb, offset);
- proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016" PRIX64, start_time);
+ proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016llX", start_time);
offset += 8;
duration = tvb_get_letohs (tvb, offset);
@@ -4021,7 +4629,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
proto_tree_add_uint_format(sub_tree, hf_tag_measure_rpi_histogram_report_6, tvb, offset, 1, info, "RPI 6 Density: 0x%02X", info);
info = tvb_get_guint8 (tvb, ++offset);
proto_tree_add_uint_format(sub_tree, hf_tag_measure_rpi_histogram_report_7, tvb, offset, 1, info, "RPI 7 Density: 0x%02X", info);
- break;
+ break;
case 3: /* Channel Load Report */
{
guint8 regulatory_class, channel_load;
@@ -4035,7 +4643,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
offset++;
start_time = tvb_get_letoh64 (tvb, offset);
- proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016" PRIX64, start_time);
+ proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016llX", start_time);
offset += 8;
duration = tvb_get_letohs (tvb, offset);
@@ -4066,7 +4674,7 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
offset++;
start_time = tvb_get_letoh64 (tvb, offset);
- proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016" PRIX64, start_time);
+ proto_tree_add_uint64_format(sub_tree, hf_tag_measure_report_start_time, tvb, offset, 8, start_time, "Measurement Start Time: 0x%016llX", start_time);
offset += 8;
duration = tvb_get_letohs (tvb, offset);
@@ -4262,7 +4870,6 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
case TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT:
{
guint tag_offset;
- guint8 current_field;
if (tag_len != 4)
{
@@ -4274,22 +4881,8 @@ add_tagged_field (packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int of
offset+=2;
tag_offset = offset;
- current_field = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint(tree, hf_tag_ext_channel_switch_announcement_switch_mode, tvb, offset, 1, current_field);
+ offset+= add_fixed_field(tree, tvb, offset, FIELD_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT);
- offset++;
- current_field = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint(tree, hf_tag_ext_channel_switch_announcement_new_reg_class, tvb, offset, 1, current_field);
-
- offset++;
- current_field = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint(tree, hf_tag_ext_channel_switch_announcement_new_chan_number, tvb, offset, 1, current_field);
-
- offset++;
- current_field = tvb_get_guint8 (tvb, offset);
- proto_tree_add_uint(tree, hf_tag_ext_channel_switch_announcement_switch_count, tvb, offset, 1, current_field);
-
- offset++;
if (tag_len > (offset - tag_offset))
{
proto_tree_add_text (tree, tvb, offset, tag_len - (offset - tag_offset), "Unkown Data");
@@ -4494,7 +5087,7 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t * tvb, packet_info * pinfo,
offset += add_fixed_field(fixed_tree, tvb, offset, FIELD_TRANSCEIVER_NOISE_FLOOR);
/* TODO DS Parameter Set ??? */
- tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
+ tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset);
tagged_tree = get_tagged_parameter_tree (mgt_tree, tvb, offset, tagged_parameter_tree_len);
ieee_80211_add_tagged_parameters (tvb, offset, pinfo, tagged_tree, tagged_parameter_tree_len);
break;
@@ -4509,9 +5102,9 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t * tvb, packet_info * pinfo,
tagged_parameter_tree_len =
tvb_reported_length_remaining(tvb, offset);
tagged_tree = get_tagged_parameter_tree (mgt_tree, tvb, offset,
- tagged_parameter_tree_len);
+ tagged_parameter_tree_len);
ieee_80211_add_tagged_parameters (tvb, offset, pinfo, tagged_tree,
- tagged_parameter_tree_len);
+ tagged_parameter_tree_len);
break;
case MGT_ATIM:
@@ -4635,16 +5228,26 @@ typedef enum {
ENCAP_ETHERNET
} encap_t;
+
/* ************************************************************************* */
/* Dissect 802.11 frame */
/* ************************************************************************* */
+
+/*
+ * The 802.11n specification makes some fairly significant changes to the
+ * layout of the MAC header. The first two bits of the MAC header are the
+ * protocol version. You'd think that the 802.11 committee would have
+ * bumped the version to indicate a different MAC layout, but NOOOO -- we
+ * have to go digging for bits in various locations instead.
+ */
+
static void
dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
proto_tree * tree, gboolean fixed_length_header,
gboolean has_radio_information, gint fcs_len,
gboolean wlan_broken_fc, gboolean datapad)
{
- guint16 fcf, flags, frame_type_subtype;
+ guint16 fcf, flags, frame_type_subtype, ctrl_fcf, ctrl_type_subtype;
guint16 seq_control;
guint32 seq_number, frag_number;
gboolean more_frags;
@@ -4652,9 +5255,11 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
const guint8 *dst = NULL;
const guint8 *bssid = NULL;
proto_item *ti = NULL;
- proto_item *fcs_item;
+ proto_item *fcs_item = NULL;
+ proto_item *cw_item = NULL;
proto_tree *hdr_tree = NULL;
- proto_tree *fcs_tree;
+ proto_tree *fcs_tree = NULL;
+ proto_tree *cw_tree = NULL;
guint16 hdr_len, ohdr_len;
gboolean has_fcs, fcs_good, fcs_bad;
gint len, reported_len, ivlen;
@@ -4667,9 +5272,12 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
char out_buff[SHORT_STR];
gint is_iv_bad;
guchar iv_buff[4];
+ char *addr1_str = NULL;
+ int addr1_hf = -1;
+ guint offset;
+
wlan_hdr *volatile whdr;
static wlan_hdr whdrs[4];
-
whdr= &whdrs[0];
if (check_col (pinfo->cinfo, COL_PROTOCOL))
@@ -4691,19 +5299,20 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
}
}
- fcf = tvb_get_letohs (tvb, 0);
- if (wlan_broken_fc) {
- /* Swap bytes */
- fcf = ((fcf & 0xff) << 8) | (((fcf & 0xff00) >> 8) & 0xff);
- }
+ fcf = FETCH_FCF(0);
+ frame_type_subtype = COMPOSE_FRAME_TYPE(fcf);
+ if (frame_type_subtype == CTRL_CONTROL_WRAPPER)
+ ctrl_fcf = FETCH_FCF(10);
+ else
+ ctrl_fcf = 0;
+
if (fixed_length_header)
hdr_len = DATA_LONG_HDR_LEN;
else
- hdr_len = find_header_length (fcf);
+ hdr_len = find_header_length (fcf, ctrl_fcf);
ohdr_len = hdr_len;
if (datapad)
hdr_len = roundup2(hdr_len, 4);
- frame_type_subtype = COMPOSE_FRAME_TYPE(fcf);
if (check_col (pinfo->cinfo, COL_INFO))
col_set_str (pinfo->cinfo, COL_INFO,
@@ -4740,7 +5349,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
pinfo->pseudo_header->ieee_802_11.signal_level);
}
- dissect_frame_control(hdr_tree, tvb, wlan_broken_fc, 0);
+ dissect_frame_control(hdr_tree, tvb, wlan_broken_fc, 0);
if (frame_type_subtype == CTRL_PS_POLL)
proto_tree_add_uint(hdr_tree, hf_assoc_id,tvb,2,2,
@@ -4759,8 +5368,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
frag_number = 0;
seq_number = 0;
- switch (FCF_FRAME_TYPE (fcf))
- {
+ switch (FCF_FRAME_TYPE (fcf)) {
case MGT_FRAME:
/*
@@ -4814,273 +5422,249 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
}
break;
- case CONTROL_FRAME:
- switch (frame_type_subtype)
- {
+ case CONTROL_FRAME:
+ /*
+ * Control Wrapper frames insert themselves between address 1
+ * and address 2 in a normal control frame. Process address 1
+ * first, then handle the rest of the frame in dissect_control.
+ */
+ if (frame_type_subtype == CTRL_CONTROL_WRAPPER) {
+ offset = 16; /* FC + D/ID + Address 1 + CFC + HTC */
+ ctrl_fcf = FETCH_FCF(10);
+ ctrl_type_subtype = COMPOSE_FRAME_TYPE(ctrl_fcf);
+ } else {
+ offset = 10; /* FC + D/ID + Address 1 */
+ ctrl_fcf = fcf;
+ ctrl_type_subtype = frame_type_subtype;
+ }
+ switch (ctrl_type_subtype) {
case CTRL_PS_POLL:
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
-
- set_src_addr_cols(pinfo, src, "BSSID");
- set_dst_addr_cols(pinfo, dst, "BSSID");
-
- if (tree)
- {
- proto_tree_add_ether (hdr_tree, hf_addr_bssid, tvb, 4, 6, dst);
-
- proto_tree_add_ether (hdr_tree, hf_addr_ta, tvb, 10, 6, src);
- }
+ addr1_str = "BSSID";
+ addr1_hf = hf_addr_bssid;
break;
-
-
case CTRL_RTS:
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
-
- set_src_addr_cols(pinfo, src, "TA");
- set_dst_addr_cols(pinfo, dst, "RA");
-
- if (tree)
- {
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, dst);
-
- proto_tree_add_ether (hdr_tree, hf_addr_ta, tvb, 10, 6, src);
- }
+ case CTRL_CTS:
+ case CTRL_ACKNOWLEDGEMENT:
+ case CTRL_CFP_END:
+ case CTRL_CFP_ENDACK:
+ case CTRL_BLOCK_ACK_REQ:
+ case CTRL_BLOCK_ACK:
+ addr1_str = "RA";
+ addr1_hf = hf_addr_ra;
break;
+ default:
+ break;
+ }
+ if (!addr1_str) /* XXX - Should we throw some sort of error? */
+ break;
- case CTRL_CTS:
- dst = tvb_get_ptr (tvb, 4, 6);
-
- set_dst_addr_cols(pinfo, dst, "RA");
+ /* Add address 1 */
+ dst = tvb_get_ptr(tvb, 4, 6);
+ set_dst_addr_cols(pinfo, dst, addr1_str);
+ if (tree) {
+ proto_tree_add_item(hdr_tree, addr1_hf, tvb, 4, 6, FALSE);
+ }
- if (tree)
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, dst);
- break;
+ /*
+ * Start shoving in other fields if needed.
+ */
+ if (frame_type_subtype == CTRL_CONTROL_WRAPPER && tree) {
+ cw_item = proto_tree_add_text(hdr_tree, tvb, offset, 2,
+ "Contained Frame Control");
+ cw_tree = proto_item_add_subtree (cw_item, ett_cntrl_wrapper_fc);
+ dissect_frame_control(cw_tree, tvb, FALSE, offset);
+ dissect_ht_control(cw_tree, tvb, offset + 2);
+ }
+ switch (ctrl_type_subtype) {
- case CTRL_ACKNOWLEDGEMENT:
- dst = tvb_get_ptr (tvb, 4, 6);
+ case CTRL_PS_POLL:
+ case CTRL_CFP_END:
+ case CTRL_CFP_ENDACK:
+ src = tvb_get_ptr (tvb, offset, 6);
+ set_src_addr_cols(pinfo, src, "BSSID");
+ if (tree) {
+ proto_tree_add_item(hdr_tree, hf_addr_ta, tvb, offset, 6, FALSE);
+ }
+ break;
- set_dst_addr_cols(pinfo, dst, "RA");
+ case CTRL_RTS:
+ src = tvb_get_ptr (tvb, offset, 6);
+ set_src_addr_cols(pinfo, src, "TA");
+ if (tree) {
+ proto_tree_add_item(hdr_tree, hf_addr_ta, tvb, offset, 6, FALSE);
+ }
+ break;
- if (tree)
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, dst);
+ case CTRL_CONTROL_WRAPPER:
+ /* XXX - We shouldn't see this. Should we throw an error? */
break;
+ /*** Begin: Block Ack Request - Dustin Johnson ***/
+ case CTRL_BLOCK_ACK_REQ:
+ src = tvb_get_ptr (tvb, offset, 6);
+ set_src_addr_cols(pinfo, src, "TA");
- case CTRL_CFP_END:
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
+ if (tree) {
+ guint16 bar_control;
+ guint8 block_ack_type;
+ proto_item *bar_parent_item;
+ proto_tree *bar_sub_tree;
+
+ proto_tree_add_item(hdr_tree, hf_addr_ra, tvb, offset, 6, FALSE);
+ offset += 6;
+
+ bar_control = tvb_get_letohs(tvb, offset);
+ block_ack_type = (bar_control & 0x0006) >> 1;
+ proto_tree_add_uint(hdr_tree, hf_block_ack_request_type, tvb,
+ offset, 1, block_ack_type);
+ bar_parent_item = proto_tree_add_uint_format(hdr_tree,
+ hf_block_ack_request_control, tvb, offset, 2, bar_control,
+ "Block Ack Request Control: 0x%04X", bar_control);
+ bar_sub_tree = proto_item_add_subtree(bar_parent_item,
+ ett_block_ack);
+ proto_tree_add_boolean(bar_sub_tree,
+ hf_block_ack_control_ack_policy, tvb, offset, 1, bar_control);
+ proto_tree_add_boolean(bar_sub_tree, hf_block_ack_control_multi_tid,
+ tvb, offset, 1, bar_control);
+ proto_tree_add_boolean(bar_sub_tree,
+ hf_block_ack_control_compressed_bitmap, tvb, offset, 1,
+ bar_control);
+ proto_tree_add_uint(bar_sub_tree, hf_block_ack_control_reserved,
+ tvb, offset, 2, bar_control);
+
+ switch (block_ack_type) {
+ case 0: /*Basic BlockAckReq */
+ proto_tree_add_uint(bar_sub_tree,
+ hf_block_ack_control_basic_tid_info, tvb, offset+1, 1,
+ bar_control);
+ offset += 2;
- set_src_addr_cols(pinfo, src, "BSSID");
- set_dst_addr_cols(pinfo, dst, "RA");
+ offset += add_fixed_field(hdr_tree, tvb, offset,
+ FIELD_BLOCK_ACK_SSC);
+ break;
+ case 2: /* Compressed BlockAckReq */
+ proto_tree_add_uint(bar_sub_tree,
+ hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1,
+ bar_control);
+ offset += 2;
- if (tree)
- {
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, dst);
- proto_tree_add_ether (hdr_tree, hf_addr_bssid, tvb, 10, 6, src);
- }
- break;
+ offset += add_fixed_field(hdr_tree, tvb, offset,
+ FIELD_BLOCK_ACK_SSC);
+ break;
+ case 3: {/* Multi-TID BlockAckReq */
+ guint8 tid_count, i;
+ proto_tree *bar_mtid_tree, *bar_mtid_sub_tree;
+ tid_count = ((bar_control & 0xF000) >> 12) + 1;
+ proto_tree_add_uint_format(bar_sub_tree, hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1, bar_control,
+ decode_numeric_bitfield(bar_control, 0xF000, 16,"Number of TIDs Present: 0x%%X"), tid_count);
+ offset += 2;
- case CTRL_CFP_ENDACK:
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
+ bar_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
+ bar_mtid_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
+ for (i = 1; i <= tid_count; i++) {
+ bar_parent_item = proto_tree_add_uint(bar_mtid_tree, hf_block_ack_multi_tid_info, tvb, offset, 4, i);
+ bar_mtid_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
- set_src_addr_cols(pinfo, src, "BSSID");
- set_dst_addr_cols(pinfo, dst, "RA");
+ bar_control = tvb_get_letohs(tvb, offset);
+ proto_tree_add_uint(bar_mtid_sub_tree, hf_block_ack_multi_tid_reserved, tvb, offset, 2, bar_control);
+ proto_tree_add_uint(bar_mtid_sub_tree, hf_block_ack_multi_tid_value, tvb, offset+1, 1, bar_control);
+ offset += 2;
- if (tree)
- {
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, dst);
- proto_tree_add_ether (hdr_tree, hf_addr_bssid, tvb, 10, 6, src);
+ offset += add_fixed_field(bar_mtid_sub_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
+ }
+ break;
+ }
}
+ }
break;
- /*** Begin: Control Wrapper - Dustin Johnson ***/
- case CTRL_CONTROL_WRAPPER:
- {
- const guint8 *addr1 = NULL;
- proto_tree *cntrl_wrap_tree;
- proto_item *cntrl_wrap_item;
- guint32 offset = 4;
-
- fcs_len = 4;
- if (tree)
- {
- addr1 = tvb_get_ptr (tvb, 4, 6);
- offset += 6;
+ /*** End: Block Ack Request - Dustin Johnson ***/
- proto_tree_add_ether (hdr_tree, hf_addr_addr1, tvb, 4, 6, addr1);
- cntrl_wrap_item = proto_tree_add_text(hdr_tree, tvb, offset, 2, "Contained Frame Control");
- cntrl_wrap_tree = proto_item_add_subtree (cntrl_wrap_item, ett_cntrl_wrapper_fc);
- dissect_frame_control(cntrl_wrap_tree, tvb, FALSE, offset);
- offset += 2;
+ /*** Begin: Block Ack - Dustin Johnson ***/
+ case CTRL_BLOCK_ACK:
+ src = tvb_get_ptr (tvb, offset, 6);
+ set_src_addr_cols(pinfo, src, "TA");
- /*dissect_ht_control(hdr_tree, tvb, offset);*/
- /* TODO: Complete this crap - Grrarr asdgadsfgadagdsfg!!!*/
- }
- break;
- }
- /*** End: Control Wrapper - Dustin Johnson ***/
- /*** Begin: Block Ack Request - Dustin Johnson ***/
- case CTRL_BLOCK_ACK_REQ:
- {
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
+ if (tree) {
+ guint16 ba_control;
+ guint8 block_ack_type;
+ proto_item *ba_parent_item;
+ proto_tree *ba_sub_tree;
+
+ proto_tree_add_item(hdr_tree, hf_addr_ta, tvb, offset, 6, FALSE);
+ offset += 6;
+
+ ba_control = tvb_get_letohs(tvb, offset);
+ block_ack_type = (ba_control & 0x0006) >> 1;
+ proto_tree_add_uint(hdr_tree, hf_block_ack_type, tvb, offset, 1, block_ack_type);
+ ba_parent_item = proto_tree_add_uint_format(hdr_tree,
+ hf_block_ack_request_control, tvb, offset, 2, ba_control,
+ "Block Ack Control: 0x%04X", ba_control);
+ ba_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
+ proto_tree_add_boolean(ba_sub_tree, hf_block_ack_control_ack_policy,
+ tvb, offset, 1, ba_control);
+ proto_tree_add_boolean(ba_sub_tree, hf_block_ack_control_multi_tid,
+ tvb, offset, 1, ba_control);
+ proto_tree_add_boolean(ba_sub_tree,
+ hf_block_ack_control_compressed_bitmap, tvb, offset, 1,
+ ba_control);
+ proto_tree_add_uint(ba_sub_tree, hf_block_ack_control_reserved, tvb,
+ offset, 2, ba_control);
+
+ switch (block_ack_type) {
+ case 0: /*Basic BlockAck */
+ proto_tree_add_uint(ba_sub_tree,
+ hf_block_ack_control_basic_tid_info, tvb, offset+1, 1,
+ ba_control);
+ offset += 2;
- set_src_addr_cols(pinfo, src, "TA");
- set_dst_addr_cols(pinfo, dst, "RA");
+ offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
+ proto_tree_add_text(hdr_tree, tvb, offset, 128, "Block Ack Bitmap");
+ offset += 128;
+ break;
+ case 2: /* Compressed BlockAck */
+ proto_tree_add_uint(ba_sub_tree, hf_block_ack_control_basic_tid_info, tvb, offset+1, 1, ba_control);
+ offset += 2;
- if (tree)
- {
- guint16 bar_control;
- guint8 block_ack_type;
- gint offset;
- proto_item *bar_parent_item;
- proto_tree *bar_sub_tree;
-
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, src);
- proto_tree_add_ether (hdr_tree, hf_addr_ta, tvb, 10, 6, dst);
- offset = 16;
-
- bar_control = tvb_get_letohs(tvb, offset);
- block_ack_type = (bar_control & 0x0006) >> 1;
- proto_tree_add_uint(hdr_tree, hf_block_ack_request_type, tvb, offset, 1, block_ack_type);
- bar_parent_item = proto_tree_add_uint_format(hdr_tree, hf_block_ack_request_control, tvb,
- offset, 2, bar_control, "Block Ack Request Control: 0x%04X", bar_control);
- bar_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
- proto_tree_add_boolean(bar_sub_tree, hf_block_ack_control_ack_policy, tvb, offset, 1, bar_control);
- proto_tree_add_boolean(bar_sub_tree, hf_block_ack_control_multi_tid, tvb, offset, 1, bar_control);
- proto_tree_add_boolean(bar_sub_tree, hf_block_ack_control_compressed_bitmap, tvb, offset, 1, bar_control);
- proto_tree_add_uint(bar_sub_tree, hf_block_ack_control_reserved, tvb, offset, 2, bar_control);
-
- switch(block_ack_type){
- case 0: /*Basic BlockAckReq */
- proto_tree_add_uint(bar_sub_tree, hf_block_ack_control_basic_tid_info, tvb, offset+1, 1, bar_control);
- offset += 2;
-
- offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- break;
- case 2: /* Compressed BlockAckReq */
- proto_tree_add_uint(bar_sub_tree, hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1, bar_control);
- offset += 2;
+ offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
+ proto_tree_add_text(hdr_tree, tvb, offset, 8, "Block Ack Bitmap");
+ offset += 8;
+ break;
+ case 3: { /* Multi-TID BlockAck */
+ guint8 tid_count, i;
+ proto_tree *ba_mtid_tree, *ba_mtid_sub_tree;
+
+ tid_count = ((ba_control & 0xF000) >> 12) + 1;
+ proto_tree_add_uint_format(ba_sub_tree,
+ hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1,
+ ba_control, decode_numeric_bitfield(ba_control, 0xF000,
+ 16,"Number of TIDs Present: 0x%%X"), tid_count);
+ offset += 2;
- offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- break;
- case 3: /* Multi-TID BlockAckReq */
- {
- guint8 tid_count, i;
- proto_tree *bar_mtid_tree, *bar_mtid_sub_tree;
-
- tid_count = ((bar_control & 0xF000) >> 12) + 1;
- proto_tree_add_uint_format(bar_sub_tree, hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1, bar_control,
- decode_numeric_bitfield(bar_control, 0xF000, 16,"Number of TIDs Present: 0x%%X"), tid_count);
- offset += 2;
-
- bar_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
- bar_mtid_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
- for(i=1; i<=tid_count; i++){
- bar_parent_item = proto_tree_add_uint(bar_mtid_tree, hf_block_ack_multi_tid_info, tvb, offset, 4, i);
- bar_mtid_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
-
- bar_control = tvb_get_letohs(tvb, offset);
- proto_tree_add_uint(bar_mtid_sub_tree, hf_block_ack_multi_tid_reserved, tvb, offset, 2, bar_control);
- proto_tree_add_uint(bar_mtid_sub_tree, hf_block_ack_multi_tid_value, tvb, offset+1, 1, bar_control);
- offset += 2;
-
- offset += add_fixed_field(bar_mtid_sub_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- }
- break;
- }
- }
- }
- break;
- }
- /*** End: Block Ack Request - Dustin Johnson ***/
- /*** Begin: Block Ack - Dustin Johnson ***/
- case CTRL_BLOCK_ACK:
- {
- src = tvb_get_ptr (tvb, 10, 6);
- dst = tvb_get_ptr (tvb, 4, 6);
+ ba_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
+ ba_mtid_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
+ for (i=1; i<=tid_count; i++) {
+ ba_parent_item = proto_tree_add_uint(ba_mtid_tree, hf_block_ack_multi_tid_info, tvb, offset, 4, i);
+ ba_mtid_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
- set_src_addr_cols(pinfo, src, "TA");
- set_dst_addr_cols(pinfo, dst, "RA");
+ ba_control = tvb_get_letohs(tvb, offset);
+ proto_tree_add_uint(ba_mtid_sub_tree, hf_block_ack_multi_tid_reserved, tvb, offset, 2, ba_control);
+ proto_tree_add_uint(ba_mtid_sub_tree, hf_block_ack_multi_tid_value, tvb, offset+1, 1, ba_control);
+ offset += 2;
- if (tree)
- {
- guint16 ba_control;
- guint8 block_ack_type;
- gint offset;
- proto_item *ba_parent_item;
- proto_tree *ba_sub_tree;
-
- proto_tree_add_ether (hdr_tree, hf_addr_ra, tvb, 4, 6, src);
- proto_tree_add_ether (hdr_tree, hf_addr_ta, tvb, 10, 6, dst);
- offset = 16;
-
- ba_control = tvb_get_letohs(tvb, offset);
- block_ack_type = (ba_control & 0x0006) >> 1;
- proto_tree_add_uint(hdr_tree, hf_block_ack_type, tvb, offset, 1, block_ack_type);
- ba_parent_item = proto_tree_add_uint_format(hdr_tree, hf_block_ack_request_control, tvb,
- offset, 2, ba_control, "Block Ack Control: 0x%04X", ba_control);
- ba_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
- proto_tree_add_boolean(ba_sub_tree, hf_block_ack_control_ack_policy, tvb, offset, 1, ba_control);
- proto_tree_add_boolean(ba_sub_tree, hf_block_ack_control_multi_tid, tvb, offset, 1, ba_control);
- proto_tree_add_boolean(ba_sub_tree, hf_block_ack_control_compressed_bitmap, tvb, offset, 1, ba_control);
- proto_tree_add_uint(ba_sub_tree, hf_block_ack_control_reserved, tvb, offset, 2, ba_control);
-
- switch(block_ack_type){
- case 0: /*Basic BlockAck */
- proto_tree_add_uint(ba_sub_tree, hf_block_ack_control_basic_tid_info, tvb, offset+1, 1, ba_control);
- offset += 2;
-
- offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- proto_tree_add_text(hdr_tree, tvb, offset, 128, "Block Ack Bitmap");
- offset += 128;
- break;
- case 2: /* Compressed BlockAck */
- proto_tree_add_uint(ba_sub_tree, hf_block_ack_control_basic_tid_info, tvb, offset+1, 1, ba_control);
- offset += 2;
-
- offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- proto_tree_add_text(hdr_tree, tvb, offset, 8, "Block Ack Bitmap");
- offset += 8;
- break;
- case 3: /* Multi-TID BlockAck */
- {
- guint8 tid_count, i;
- proto_tree *ba_mtid_tree, *ba_mtid_sub_tree;
-
- tid_count = ((ba_control & 0xF000) >> 12) + 1;
- proto_tree_add_uint_format(ba_sub_tree, hf_block_ack_control_compressed_tid_info, tvb, offset+1, 1, ba_control,
- decode_numeric_bitfield(ba_control, 0xF000, 16,"Number of TIDs Present: 0x%%X"), tid_count);
- offset += 2;
-
- ba_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
- ba_mtid_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
- for(i=1; i<=tid_count; i++){
- ba_parent_item = proto_tree_add_uint(ba_mtid_tree, hf_block_ack_multi_tid_info, tvb, offset, 4, i);
- ba_mtid_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
-
- ba_control = tvb_get_letohs(tvb, offset);
- proto_tree_add_uint(ba_mtid_sub_tree, hf_block_ack_multi_tid_reserved, tvb, offset, 2, ba_control);
- proto_tree_add_uint(ba_mtid_sub_tree, hf_block_ack_multi_tid_value, tvb, offset+1, 1, ba_control);
- offset += 2;
-
- offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
- proto_tree_add_text(ba_mtid_sub_tree, tvb, offset, 8, "Block Ack Bitmap");
- offset += 8;
- }
- break;
- }
- }
- }
+ offset += add_fixed_field(hdr_tree, tvb, offset, FIELD_BLOCK_ACK_SSC);
+ proto_tree_add_text(ba_mtid_sub_tree, tvb, offset, 8, "Block Ack Bitmap");
+ offset += 8;
+ }
+ break;
+ }
+ }
break;
}
/*** End: Block Ack - Dustin Johnson ***/
- }
break;
case DATA_FRAME:
@@ -5221,6 +5805,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
}
break;
}
+ }
len = tvb_length_remaining(tvb, hdr_len);
reported_len = tvb_reported_length_remaining(tvb, hdr_len);
@@ -5554,7 +6139,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo,
tvb_get_guint8(tvb, hdr_len + 2));
proto_tree_add_string(wep_tree, hf_tkip_extiv, tvb, hdr_len,
EXTIV_LEN, out_buff);
- } else if (algorithm==PROTECTION_ALG_CCMP) {
+ } else if (algorithm==PROTECTION_ALG_CCMP) {
g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
tvb_get_letohl(tvb, hdr_len + 4),
tvb_get_guint8(tvb, hdr_len + 1),
@@ -6234,18 +6819,120 @@ proto_register_ieee80211 (void)
};
/*** End: QoS Inforamtion STA Fixed Field - Dustin Johnson ***/
- /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
- static const true_false_string ff_sm_pwr_save_enabled_flag = {
+ /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ static const true_false_string ff_sm_pwr_save_enabled_flag = {
"Enabled",
"Disabled"
};
- static const true_false_string ff_sm_pwr_save_sm_mode_flag = {
+ static const true_false_string ff_sm_pwr_save_sm_mode_flag = {
"Dynamic SM Power Save mode",
"Static SM Power Save mode"
};
- /*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ /*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+
+ /*** Begin: PCO Phase Control Fixed Field - Dustin Johnson ***/
+ static const true_false_string ff_pco_phase_cntrl_flag = {
+ "40 MHz Phase",
+ "20 MHz Phase"
+ };
+ /*** End: PCO Phase Control Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+ static const true_false_string ff_psmp_param_set_more_psmp_flag = {
+ "More PSMP Sequences Follow",
+ "No PSMP Sequences Follow"
+ };
+ /*** End: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: MIMO Control Fixed Field - Dustin Johnson ***/
+ static const value_string ff_mimo_cntrl_nc_index_flags[] = {
+ {0x00, "1 Column"},
+ {0x01, "2 Columns"},
+ {0x02, "3 Columns"},
+ {0x03, "4 Columns"},
+ {0, NULL}
+ };
+
+ static const value_string ff_mimo_cntrl_nr_index_flags[] = {
+ {0x00, "1 Row"},
+ {0x01, "2 Rows"},
+ {0x02, "3 Rows"},
+ {0x03, "4 Rows"},
+ {0, NULL}
+ };
+
+ static const true_false_string ff_mimo_cntrl_channel_width_flag = {
+ "40 MHz",
+ "20 MHz"
+ };
+
+ /*** Begin: HT Information Fixed Field - Dustin Johnson ***/
+ static const true_false_string ff_ht_info_information_request_flag = {
+ "Requesting HT Information Exchange management action frame",
+ "Should not send an HT Information Exchange management action frame"
+ };
+
+ static const true_false_string ff_ht_info_40_mhz_intolerant_flag = {
+ "Transmitting station is intolerant of 40 MHz operation",
+ "Transmitting station permits 40 MHz operation"
+ };
+
+ static const true_false_string ff_ht_info_sta_chan_width_flag = {
+ "40 MHz",
+ "20 MHz"
+ };
+ /*** End: HT Information Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: HT Category Fixed Field - Dustin Johnson ***/
+ static const value_string ff_ht_action_flags[] = {
+ {0x00, "Notify Channel Width"},
+ {0x01, "SM Power Save"},
+ {0x02, "PSMP action frame"},
+ {0x03, "Set PCO Phase"},
+ {0x04, "MIMO CSI Matrices"},
+ {0x05, "MIMO Non-compressed Beamforming"},
+ {0x06, "MIMO Compressed Beamforming"},
+ {0x07, "Antenna Selection Indices Feedback"},
+ {0x08, "HT Information Exchange"},
+ {0x00, NULL}
+ };
+ /*** Begin: HT Category Fixed Field - Dustin Johnson ***/
+
+ static const value_string ff_mimo_cntrl_grouping_flags[] = {
+ {0x00, "No Grouping"},
+ {0x01, "Carrier Groups of 2"},
+ {0x02, "Carrier Groups of 4"},
+ {0x03, "Reserved"},
+ {0, NULL}
+ };
+
+ static const value_string ff_mimo_cntrl_coefficient_size_flags[] = {
+ {0x00, "4 Bits"},
+ {0x01, "5 Bits"},
+ {0x02, "6 Bits"},
+ {0x03, "8 Bits"},
+ {0, NULL}
+ };
+
+ static const value_string ff_mimo_cntrl_codebook_info_flags[] = {
+ {0x00, "1 bit for 'Capital Psi', 3 bits for 'Small Psi'"},
+ {0x01, "2 bit for 'Capital Psi', 4 bits for 'Small Psi'"},
+ {0x02, "3 bit for 'Capital Psi', 5 bits for 'Small Psi'"},
+ {0x03, "4 bit for 'Capital Psi', 6 bits for 'Small Psi'"},
+ {0, NULL}
+ };
+ /*** End: MIMO Control Fixed Field - Dustin Johnson ***/
+ /*** Begin: PSMP Station Information Fixed Field - Dustin Johnson ***/
+ static const value_string ff_psmp_sta_info_flags[] = {
+ {0x00, "Broadcast"},
+ {0x01, "Multicast"},
+ {0x02, "Individually Addressed"},
+ {0x03, "Unkown"},
+ {0, NULL}
+ };
+ /*** End: PSMP Station Information Fixed Field - Dustin Johnson ***/
static const value_string reason_codes[] = {
{0x00, "Reserved"},
@@ -6410,6 +7097,15 @@ proto_register_ieee80211 (void)
{0, NULL}
};
+ /*** Begin: Block Ack Action Fixed Field - Dustin Johnson ***/
+ static const value_string ba_action_codes[] = {
+ {BA_ADD_BLOCK_ACK_REQUEST, "Add Block Ack Request"},
+ {BA_ADD_BLOCK_ACK_RESPONSE, "Add Block Ack Response"},
+ {BA_DELETE_BLOCK_ACK, "Delete Block Ack"},
+ {0x00, NULL}
+ };
+ /*** End: Block Ack Action Fixed Field - Dustin Johnson ***/
+
static const value_string dls_action_codes[] = {
{SM_ACTION_DLS_REQUEST, "DLS Request"},
{SM_ACTION_DLS_RESPONSE, "DLS Response"},
@@ -6496,7 +7192,7 @@ proto_register_ieee80211 (void)
{&hf_signal_strength,
{"Signal Strength", "wlan.signal_strength", FT_UINT8, BASE_DEC, NULL, 0,
- "Signal strength (percentage)", HFILL }},
+ "Signal strength (Percentage)", HFILL }},
{&hf_fc_field,
{"Frame Control Field", "wlan.fc", FT_UINT16, BASE_HEX, NULL, 0,
@@ -6636,7 +7332,7 @@ proto_register_ieee80211 (void)
{&hf_fcs,
{"Frame check sequence", "wlan.fcs", FT_UINT32, BASE_HEX,
- NULL, 0, "FCS", HFILL }},
+ NULL, 0, "Frame Check Sequence (FCS)", HFILL }},
{&hf_fcs_good,
{"Good", "wlan.fcs_good", FT_BOOLEAN, BASE_NONE,
@@ -6706,63 +7402,63 @@ proto_register_ieee80211 (void)
{"WEP ICV", "wlan.wep.icv", FT_UINT32, BASE_HEX, NULL, 0,
"WEP ICV", HFILL }},
- /*** Begin: Block Ack Request/Block Ack - Dustin Johnson***/
- {&hf_block_ack_request_control,
- {"Block Ack Request Control", "wlan.bar.control",
- FT_UINT16, BASE_HEX, NULL, 0, "", HFILL }},
+ /*** Begin: Block Ack Request/Block Ack - Dustin Johnson***/
+ {&hf_block_ack_request_control,
+ {"Block Ack Request (BAR) Control", "wlan.bar.control",
+ FT_UINT16, BASE_HEX, NULL, 0, "Block Ack Request Control", HFILL }},
- {&hf_block_ack_control_ack_policy,
+ {&hf_block_ack_control_ack_policy,
{"BAR Ack Policy", "wlan.ba.control.ackpolicy",
- FT_BOOLEAN, 16, 0, 0x01, "", HFILL }},
+ FT_BOOLEAN, 16, 0, 0x01, "Block Ack Request (BAR) Ack Policy", HFILL }},
- {&hf_block_ack_control_multi_tid,
+ {&hf_block_ack_control_multi_tid,
{"Multi-TID", "wlan.ba.control.multitid",
- FT_BOOLEAN, 16, 0, 0x02, "", HFILL }},
+ FT_BOOLEAN, 16, 0, 0x02, "Multi-Traffic Identifier (TID)", HFILL }},
- {&hf_block_ack_control_compressed_bitmap,
+ {&hf_block_ack_control_compressed_bitmap,
{"Compressed Bitmap", "wlan.ba.control.cbitmap",
- FT_BOOLEAN, 16, 0, 0x04, "", HFILL }},
+ FT_BOOLEAN, 16, 0, 0x04, "Compressed Bitmap", HFILL }},
- {&hf_block_ack_control_reserved,
+ {&hf_block_ack_control_reserved,
{"Reserved", "wlan.ba.control.cbitmap",
- FT_UINT16, BASE_HEX, NULL, 0x0ff8, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0ff8, "Reserved", HFILL }},
- {&hf_block_ack_control_basic_tid_info,
+ {&hf_block_ack_control_basic_tid_info,
{"TID for which a Basic BlockAck frame is requested", "wlan.ba.basic.tidinfo",
- FT_UINT16, BASE_HEX, NULL, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xf000, "Traffic Identifier (TID) for which a Basic BlockAck frame is requested", HFILL }},
- {&hf_block_ack_control_compressed_tid_info,
+ {&hf_block_ack_control_compressed_tid_info,
{"TID for which a BlockAck frame is requested", "wlan.bar.compressed.tidinfo",
- FT_UINT16, BASE_HEX, NULL, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xf000, "Traffic Identifier (TID) for which a BlockAck frame is requested", HFILL }},
- {&hf_block_ack_control_multi_tid_info,
+ {&hf_block_ack_control_multi_tid_info,
{"Number of TIDs Present", "wlan.ba.mtid.tidinfo",
- FT_UINT16, BASE_HEX, NULL, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xf000, "Number of Traffic Identifiers (TIDs) Present", HFILL }},
- {&hf_block_ack_multi_tid_info,
- {"TID Info", "",
- FT_UINT8, BASE_DEC, 0, 0, "", HFILL }},
+ {&hf_block_ack_multi_tid_info,
+ {"Traffic Identifier (TID) Info", "",
+ FT_UINT8, BASE_DEC, 0, 0, "Traffic Identifier (TID) Info", HFILL }},
- {&hf_block_ack_multi_tid_reserved,
+ {&hf_block_ack_multi_tid_reserved,
{"Reserved", "wlan.bar.mtid.tidinfo.reserved",
- FT_UINT16, BASE_HEX, 0, 0x0fff, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0x0fff, "Reserved", HFILL }},
- {&hf_block_ack_multi_tid_value,
+ {&hf_block_ack_multi_tid_value,
{"Starting Sequence Number", "wlan.bar.mtid.tidinfo.value",
- FT_UINT16, BASE_HEX, 0, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0xf000, "Starting Sequence Number", HFILL }},
- {&hf_block_ack_request_type,
+ {&hf_block_ack_request_type,
{"Block Ack Request Type", "wlan.bar.type",
- FT_UINT8, BASE_HEX, VALS(&hf_block_ack_request_type_flags), 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS(&hf_block_ack_request_type_flags), 0, "Block Ack Request (BAR) Type", HFILL }},
- {&hf_block_ack_ssc,
+ {&hf_block_ack_ssc,
{"Starting Sequence Control", "wlan.ba.ssc",
- FT_UINT16, BASE_HEX, 0, 0, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0, "Starting Sequence Control", HFILL }},
- {&hf_block_ack_type,
+ {&hf_block_ack_type,
{"Block Ack Request Type", "wlan.ba.type",
- FT_UINT8, BASE_HEX, VALS(&hf_block_ack_type_flags), 0, "", HFILL }},
- /*** End: Block Ack Request/Block Ack - Dustin Johnson***/
+ FT_UINT8, BASE_HEX, VALS(&hf_block_ack_type_flags), 0, "Block Ack Request Type", HFILL }},
+ /*** End: Block Ack Request/Block Ack - Dustin Johnson***/
};
static const true_false_string rsn_preauth_flags = {
@@ -7238,35 +7934,35 @@ proto_register_ieee80211 (void)
static hf_register_info ff[] = {
{&ff_timestamp,
{"Timestamp", "wlan_mgt.fixed.timestamp", FT_STRING, BASE_NONE,
- NULL, 0, "", HFILL }},
+ NULL, 0, "Timestamp", HFILL }},
{&ff_auth_alg,
{"Authentication Algorithm", "wlan_mgt.fixed.auth.alg",
- FT_UINT16, BASE_DEC, VALS (&auth_alg), 0, "", HFILL }},
+ FT_UINT16, BASE_DEC, VALS (&auth_alg), 0, "Authentication Algorithm", HFILL }},
{&ff_beacon_interval,
{"Beacon Interval", "wlan_mgt.fixed.beacon", FT_DOUBLE, BASE_DEC, NULL, 0,
- "", HFILL }},
+ "Beacon Interval", HFILL }},
{&hf_fixed_parameters,
{"Fixed parameters", "wlan_mgt.fixed.all", FT_UINT16, BASE_DEC, NULL, 0,
- "", HFILL }},
+ "Fixed parameters", HFILL }},
{&hf_tagged_parameters,
{"Tagged parameters", "wlan_mgt.tagged.all", FT_UINT16, BASE_DEC, NULL, 0,
- "", HFILL }},
+ "Tagged parameters", HFILL }},
/*** Begin: Block Ack Params Fixed Field - Dustin Johnson ***/
{&ff_block_ack_params,
- {"Block Ack Params", "wlan_mgt.fixed.baparams",
- FT_UINT16, BASE_HEX, NULL, 0, "Block Ack Params", HFILL }},
+ {"Block Ack Parameters", "wlan_mgt.fixed.baparams",
+ FT_UINT16, BASE_HEX, NULL, 0, "Block Ack Parameters", HFILL }},
{&ff_block_ack_params_amsdu_premitted,
{"A-MSDUs", "wlan_mgt.fixed.baparams.amsdu",
FT_BOOLEAN, 16, TFS (&ff_block_ack_params_amsdu_premitted_flag), 0x0001, "A-MSDU Permitted in QoS Data MPDUs", HFILL }},
{&ff_block_ack_params_policy,
- {"Block Ack Poplicy", "wlan_mgt.fixed.baparams.policy",
+ {"Block Ack Policy", "wlan_mgt.fixed.baparams.policy",
FT_BOOLEAN, 16, TFS (&ff_block_ack_params_policy_flag), 0x0002, "Block Ack Poplicy", HFILL }},
{&ff_block_ack_params_tid,
@@ -7287,155 +7983,332 @@ proto_register_ieee80211 (void)
/*** Begin: Block Ack Starting Sequence Control Fixed Field - Dustin Johnson ***/
{&ff_block_ack_ssc,
{"Block Ack Starting Sequence Control (SSC)", "wlan.fixed.ssc",
- FT_UINT16, BASE_HEX, 0, 0, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0, "Block Ack Starting Sequence Control (SSC)", HFILL }},
{&ff_block_ack_ssc_fragment,
{"Fragment", "wlan.fixed.fragment",
- FT_UINT16, BASE_HEX, 0, 0x000f, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0x000f, "Fragment", HFILL }},
{&ff_block_ack_ssc_sequence,
{"Starting Sequence Number", "wlan.fixed.sequence",
- FT_UINT16, BASE_HEX, 0, 0xfff0, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0xfff0, "Starting Sequence Number", HFILL }},
/*** End: Block Ack Starting Sequence Control Fixed Field - Dustin Johnson ***/
/*** Begin: DELBA Parameter Set Fixed Field - Dustin Johnson ***/
{&ff_delba_param,
{"Delete Block Ack (DELBA) Parameter Set", "wlan.fixed.delba.param",
- FT_UINT16, BASE_HEX, 0, 0, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0, "Delete Block Ack (DELBA) Parameter Set", HFILL }},
{&ff_delba_param_reserved,
{"Reserved", "wlan.fixed.delba.param.reserved",
- FT_UINT16, BASE_HEX, 0, 0x07ff, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0x07ff, "Reserved", HFILL }},
{&ff_delba_param_init,
{"Initiator", "wlan.fixed.delba.param.initiator",
- FT_BOOLEAN, 16, 0, 0x08000, "", HFILL }},
+ FT_BOOLEAN, 16, 0, 0x08000, "Initiator", HFILL }},
{&ff_delba_param_tid,
{"TID", "wlan.fixed.delba.param.tid",
- FT_UINT16, BASE_HEX, 0, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0xf000, "Traffic Identifier (TID)", HFILL }},
/*** End: DELBA Parameter Set Fixed Field - Dustin Johnson ***/
/*** Begin: Max Regulation Power Fixed Field - Dustin Johnson ***/
{&ff_max_reg_pwr,
{"Maximum Regulation Power", "wlan.fixed.maxregpwr",
- FT_UINT16, BASE_HEX, 0, 0, "", HFILL }},
+ FT_UINT16, BASE_HEX, 0, 0, "Maximum Regulation Power", HFILL }},
/*** End: Max Regulation Power Fixed Field - Dustin Johnson ***/
/*** Begin: Measurement Pilot Interval Fixed Field - Dustin Johnson ***/
{&ff_measurment_pilot_int,
- {"Measurement Pilot Interval Fixed Field", "wlan.fixed.msmtpilotint",
- FT_UINT16, BASE_HEX, 0, 0, "", HFILL }},
+ {"Measurement Pilot Interval", "wlan.fixed.msmtpilotint",
+ FT_UINT16, BASE_HEX, 0, 0, "Measurement Pilot Interval Fixed Field", HFILL }},
/*** End: Measurement Pilot Interval Fixed Field - Dustin Johnson ***/
/*** Begin: Country String Fixed Field - Dustin Johnson ***/
{&ff_country_str,
{"Country String", "wlan.fixed.country",
- FT_STRING, BASE_NONE, 0, 0, "", HFILL }},
+ FT_STRING, BASE_NONE, 0, 0, "Country String", HFILL }},
/*** End: Country String Fixed Field - Dustin Johnson ***/
/*** Begin: Maximum Transmit Power Fixed Field - Dustin Johnson ***/
{&ff_max_tx_pwr,
{"Maximum Transmit Power", "wlan.fixed.maxtxpwr",
- FT_INT8, BASE_HEX, 0, 0, "", HFILL }},
+ FT_INT8, BASE_HEX, 0, 0, "Maximum Transmit Power", HFILL }},
/*** End: Maximum Transmit Power Fixed Field - Dustin Johnson ***/
/*** Begin: Transmit Power Used Fixed Field - Dustin Johnson ***/
{&ff_tx_pwr_used,
{"Transmit Power Used", "wlan.fixed.txpwr",
- FT_INT8, BASE_HEX, 0, 0, "", HFILL }},
+ FT_INT8, BASE_HEX, 0, 0, "Transmit Power Used", HFILL }},
/*** End: Transmit Power Used Fixed Field - Dustin Johnson ***/
/*** Begin: Transmit Power Used Fixed Field - Dustin Johnson ***/
{&ff_transceiver_noise_floor,
{"Transceiver Noise Floor", "wlan.fixed.tnoisefloor",
- FT_INT8, BASE_HEX, 0, 0, "", HFILL }},
+ FT_INT8, BASE_HEX, 0, 0, "Transceiver Noise Floor", HFILL }},
/*** End: Transceiver Noise Floor Fixed Field - Dustin Johnson ***/
/*** Begin: Channel Width Fixed Field - Dustin Johnson ***/
{&ff_channel_width,
{"Supported Channel Width", "fixed.chanwidth",
- FT_UINT8, BASE_HEX, TFS (&ff_channel_width_flag), 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, TFS (&ff_channel_width_flag), 0, "Supported Channel Width", HFILL }},
/*** End: Channel Width Fixed Field - Dustin Johnson ***/
/*** Begin: QoS Inforamtion AP Fixed Field - Dustin Johnson ***/
{&ff_qos_info_ap,
{"QoS Inforamtion (AP)", "fixed.qosinfo.ap",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "QoS Inforamtion (AP)", HFILL }},
{&ff_qos_info_ap_edca_param_set_counter,
{"EDCA Parameter Set Update Count", "fixed.qosinfo.ap.edcaupdate",
- FT_UINT8, BASE_HEX, NULL, 0x0F, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0x0F, "Enhanced Distributed Channel Access (EDCA) Parameter Set Update Count", HFILL }},
{&ff_qos_info_ap_q_ack,
{"Q-Ack", "fixed.qosinfo.ap.qack",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_q_ack_flag), 0x10, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_q_ack_flag), 0x10, "QoS Ack", HFILL }},
{&ff_qos_info_ap_queue_req,
{"Queue Request", "fixed.qosinfo.ap",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_queue_req_flag), 0x20, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_queue_req_flag), 0x20, "Queue Request", HFILL }},
{&ff_qos_info_ap_txop_request,
{"TXOP Request", "fixed.qosinfo.ap.txopreq",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_txop_request_flag), 0x40, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_txop_request_flag), 0x40, "Transmit Opportunity (TXOP) Request", HFILL }},
{&ff_qos_info_ap_reserved,
{"Reserved", "fixed.qosinfo.ap.reserved",
- FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }},
+ FT_BOOLEAN, 8, NULL, 0x80, "Reserved", HFILL }},
/*** End: QoS Inforamtion AP Fixed Field - Dustin Johnson ***/
/*** Begin: QoS Inforamtion STA Fixed Field - Dustin Johnson ***/
{&ff_qos_info_sta,
{"QoS Inforamtion (STA)", "fixed.qosinfo.sta",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "QoS Inforamtion (STA)", HFILL }},
{&ff_qos_info_sta_ac_vo,
{"AC_VO", "fixed.qosinfo.sta.ac.vo",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x01, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x01, "AC_VO", HFILL }},
{&ff_qos_info_sta_ac_vi,
{"AC_VI", "fixed.qosinfo.sta.ac.vi",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x02, "AC_VI", HFILL }},
{&ff_qos_info_sta_ac_bk,
{"AC_BK", "fixed.qosinfo.sta.ac.bk",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x04, "AC_BK", HFILL }},
{&ff_qos_info_sta_ac_be,
{"AC_BE", "fixed.qosinfo.sta.ac.be",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x08, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x08, "AC_BE", HFILL }},
{&ff_qos_info_sta_q_ack,
{"Q-Ack", "fixed.qosinfo.sta.qack",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_q_ack_flag), 0x10, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_q_ack_flag), 0x10, "QoS Ack", HFILL }},
{&ff_qos_info_sta_max_sp_len,
- {"SP Length", "fixed.qosinfo.sta.splen",
- FT_UINT8, BASE_HEX, VALS (&ff_qos_info_sta_max_sp_len_flags) , 0x60, "", HFILL }},
+ {"Service Period (SP) Length", "fixed.qosinfo.sta.splen",
+ FT_UINT8, BASE_HEX, VALS (&ff_qos_info_sta_max_sp_len_flags) , 0x60, "Service Period (SP) Length", HFILL }},
{&ff_qos_info_sta_more_data_ack,
{"More Data Ack", "fixed.qosinfo.sta.moredataack",
- FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_more_data_ack_flag), 0x80, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_more_data_ack_flag), 0x80, "More Data Ack", HFILL }},
/*** End: QoS Inforamtion STA Fixed Field - Dustin Johnson ***/
- /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
- {&ff_sm_pwr_save,
+ /*** Begin: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ {&ff_sm_pwr_save,
{"Spatial Multiplexing (SM) Power Control", "fixed.sm.powercontrol",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Spatial Multiplexing (SM) Power Control", HFILL }},
- {&ff_sm_pwr_save_enabled,
+ {&ff_sm_pwr_save_enabled,
{"Spatial Multiplexing (SM)", "fixed.sm.powercontrol.enabled",
- FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_enabled_flag), 0x01, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_enabled_flag), 0x01, "Spatial Multiplexing (SM)", HFILL }},
- {&ff_sm_pwr_save_sm_mode,
+ {&ff_sm_pwr_save_sm_mode,
{"Spatial Multiplexing (SM) Mode", "fixed.sm.powercontrol.mode",
- FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_sm_mode_flag), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_sm_mode_flag), 0x02, "Spatial Multiplexing (SM) Mode", HFILL }},
- {&ff_sm_pwr_save_reserved,
+ {&ff_sm_pwr_save_reserved,
{"Reserved", "fixed.sm.powercontrol.reserved",
- FT_UINT8, BASE_HEX, NULL, 0xFC, "", HFILL }},
- /*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ FT_UINT8, BASE_HEX, NULL, 0xFC, "Reserved", HFILL }},
+ /*** End: Spatial Multiplexing (SM) Power Control - Dustin Johnson ***/
+ /*** Begin: PCO Phase Control Fixed Field - Dustin Johnson ***/
+ {&ff_pco_phase_cntrl,
+ {"Phased Coexistence Operation (PCO) Phase Control", "fixed.pco.phasecntrl",
+ FT_UINT8, BASE_HEX, TFS (&ff_pco_phase_cntrl_flag), 0, "Phased Coexistence Operation (PCO) Phase Control", HFILL }},
+ /*** End: PCO Phase Control Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+ {&ff_psmp_param_set,
+ {"Power Save Multi-Poll (PSMP) Parameter Set", "fixed.psmp.paramset",
+ FT_UINT16, BASE_HEX, 0, 0, "Power Save Multi-Poll (PSMP) Parameter Set", HFILL }},
+
+ {&ff_psmp_param_set_n_sta,
+ {"Number of STA Info Fields Present", "fixed.psmp.paramset.nsta",
+ FT_UINT8, BASE_HEX, 0, 0, "Number of STA Info Fields Present", HFILL }},
+
+ {&ff_psmp_param_set_more_psmp,
+ {"More PSMP", "fixed.psmp.paramset.more",
+ FT_BOOLEAN, 0, TFS(&ff_psmp_param_set_more_psmp_flag), 0, "More Power Save Multi-Poll (PSMP)", HFILL }},
+
+ {&ff_psmp_param_set_psmp_sequence_duration,
+ {"PSMP Sequence Duration", "fixed.psmp.paramset.seqduration",
+ FT_UINT16, BASE_HEX, 0, 0, "Power Save Multi-Poll (PSMP) Sequence Duration", HFILL }},
+ /*** End: PSMP Parameter Set Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: MIMO Control Fixed Field - Dustin Johnson ***/
+ {&ff_mimo_cntrl_nc_index,
+ {"Nc Index", "fixed.mimo.control.ncindex",
+ FT_UINT16, BASE_HEX, VALS (&ff_mimo_cntrl_nc_index_flags), 0x0003, "Number of Columns Less One", HFILL }},
+
+ {&ff_mimo_cntrl_nr_index,
+ {"Nr Index", "fixed.mimo.control.nrindex",
+ FT_UINT16, BASE_HEX, VALS (&ff_mimo_cntrl_nr_index_flags), 0x000C, "Number of Rows Less One", HFILL }},
+
+ {&ff_mimo_cntrl_channel_width,
+ {"Channel Width", "fixed.mimo.control.chanwidth",
+ FT_BOOLEAN, 0, TFS(&ff_mimo_cntrl_channel_width_flag), 0x0010, "Channel Width", HFILL }},
+
+ {&ff_mimo_cntrl_grouping,
+ {"Grouping (Ng)", "fixed.mimo.control.grouping",
+ FT_UINT16, BASE_HEX, VALS (&ff_mimo_cntrl_grouping_flags), 0x0060, "Grouping (Ng)", HFILL }},
+
+ {&ff_mimo_cntrl_coefficient_size,
+ {"Coefficient Size (Nb)", "fixed.mimo.control.cosize",
+ FT_UINT16, BASE_HEX, VALS (&ff_mimo_cntrl_coefficient_size_flags), 0x0180, "Coefficient Size (Nb)", HFILL }},
+
+ {&ff_mimo_cntrl_codebook_info,
+ {"Codebook Information", "fixed.mimo.control.codebookinfo",
+ FT_UINT16, BASE_HEX, VALS (&ff_mimo_cntrl_codebook_info_flags), 0x0600, "Codebook Information", HFILL }},
+
+ {&ff_mimo_cntrl_remaining_matrix_segment,
+ {"Remaining Matrix Segment", "fixed.mimo.control.matrixseg",
+ FT_UINT16, BASE_HEX, 0, 0x3800, "Remaining Matrix Segment", HFILL }},
+
+ {&ff_mimo_cntrl_reserved,
+ {"Reserved", "fixed.mimo.control.reserved",
+ FT_UINT16, BASE_HEX, 0, 0xC000, "Reserved", HFILL }},
+
+ {&ff_mimo_cntrl_sounding_timestamp,
+ {"Sounding Timestamp", "fixed.mimo.control.soundingtime",
+ FT_UINT32, BASE_HEX, 0, 0, "Sounding Timestamp", HFILL }},
+ /*** End: MIMO Control Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: PSMP Station Information Fixed Field - Dustin Johnson ***/
+ {&ff_psmp_sta_info,
+ {"Power Save Multi-Poll (PSMP) Station Information", "fixed.psmp.stainfo",
+ FT_UINT32, BASE_HEX, VALS (&ff_psmp_sta_info_flags), 0, "Power Save Multi-Poll (PSMP) Station Information", HFILL }},
+
+ {&ff_psmp_sta_info_dtt_start_offset,
+ {"DTT Start Offset", "fixed.psmp.stainfo.dttstart",
+ FT_UINT32, BASE_HEX, 0, 0, "DTT Start Offset", HFILL }},
+
+ {&ff_psmp_sta_info_dtt_duration,
+ {"DTT Duration", "fixed.psmp.stainfo.dttduration",
+ FT_UINT32, BASE_HEX, 0, 0, "DTT Duration", HFILL }},
+
+ {&ff_psmp_sta_info_sta_id,
+ {"Target Station ID", "fixed.psmp.stainfo.staid",
+ FT_UINT32, BASE_HEX, 0, 0, "Target Station ID", HFILL }},
+
+ {&ff_psmp_sta_info_utt_start_offset,
+ {"UTT Start Offset", "fixed.psmp.stainfo.uttstart",
+ FT_UINT32, BASE_HEX, 0, 0, "UTT Start Offset", HFILL }},
+
+ {&ff_psmp_sta_info_utt_duration,
+ {"UTT Duration", "fixed.psmp.stainfo.uttduration",
+ FT_UINT16, BASE_HEX, 0, 0, "UTT Duration", HFILL }},
+
+ {&ff_psmp_sta_info_reserved_small,
+ {"Reserved", "fixed.psmp.stainfo.reserved",
+ FT_UINT16, BASE_HEX, 0, 0, "Reserved", HFILL }},
+
+ {&ff_psmp_sta_info_reserved_large,
+ {"Reserved", "fixed.psmp.stainfo.reserved",
+ FT_UINT64, BASE_HEX, 0, 0, "Reserved", HFILL }},
+
+ {&ff_psmp_sta_info_psmp_multicast_id,
+ {"Power Save Multi-Poll (PSMP) Multicast ID", "fixed.psmp.stainfo.multicastid",
+ FT_UINT64, BASE_HEX, 0, 0, "Power Save Multi-Poll (PSMP) Multicast ID", HFILL }},
+ /*** End: PSMP Station Information Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: Antenna Selection Fixed Field - Dustin Johnson ***/
+ {&ff_ant_selection,
+ {"Antenna Selection", "fixed.antsel",
+ FT_UINT8, BASE_HEX, 0, 0, "Antenna Selection", HFILL }},
+
+ {&ff_ant_selection_0,
+ {"Antenna 0", "fixed.antsel.ant0",
+ FT_UINT8, BASE_HEX, 0, 0x01, "Antenna 0", HFILL }},
+
+ {&ff_ant_selection_1,
+ {"Antenna 1", "fixed.antsel.ant1",
+ FT_UINT8, BASE_HEX, 0, 0x02, "Antenna 1", HFILL }},
+
+ {&ff_ant_selection_2,
+ {"Antenna 2", "fixed.antsel.ant2",
+ FT_UINT8, BASE_HEX, 0, 0x04, "Antenna 2", HFILL }},
+
+ {&ff_ant_selection_3,
+ {"Antenna 3", "fixed.antsel.ant3",
+ FT_UINT8, BASE_HEX, 0, 0x08, "Antenna 3", HFILL }},
+
+ {&ff_ant_selection_4,
+ {"Antenna 4", "fixed.antsel.ant4",
+ FT_UINT8, BASE_HEX, 0, 0x10, "Antenna 4", HFILL }},
+
+ {&ff_ant_selection_5,
+ {"Antenna 5", "fixed.antsel.ant5",
+ FT_UINT8, BASE_HEX, 0, 0x20, "Antenna 5", HFILL }},
+
+ {&ff_ant_selection_6,
+ {"Antenna 6", "fixed.antsel.ant6",
+ FT_UINT8, BASE_HEX, 0, 0x40, "Antenna 6", HFILL }},
+
+ {&ff_ant_selection_7,
+ {"Antenna 7", "fixed.antsel.ant7",
+ FT_UINT8, BASE_HEX, 0, 0x80, "Antenna 7", HFILL }},
+ /*** End: Antenna Selection Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+ {&ff_ext_channel_switch_announcement,
+ {"Extended Channel Switch Announcement", "fixed.extchansw",
+ FT_UINT32, BASE_HEX, 0, 0, "", HFILL }},
+ /*** End: Extended Channel Switch Announcement Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: HT Information Fixed Field - Dustin Johnson ***/
+ {&ff_ht_info,
+ {"HT Information", "fixed.extchansw",
+ FT_UINT8, BASE_HEX, 0, 0, "HT Information Fixed Field", HFILL }},
+
+ {&ff_ht_info_information_request,
+ {"Information Request", "fixed.mimo.control.chanwidth",
+ FT_BOOLEAN, 0, TFS(&ff_ht_info_information_request_flag), 0x01, "Information Request", HFILL }},
+
+ {&ff_ht_info_40_mhz_intolerant,
+ {"40 MHz Intolerant", "fixed.mimo.control.chanwidth",
+ FT_BOOLEAN, 0, TFS(&ff_ht_info_40_mhz_intolerant_flag), 0x02, "40 MHz Intolerant", HFILL }},
+
+ {&ff_ht_info_sta_chan_width,
+ {"Station Channel Width", "fixed.mimo.control.chanwidth",
+ FT_BOOLEAN, 0, TFS(&ff_ht_info_sta_chan_width_flag), 0x04, "Station Channel Width", HFILL }},
+
+ {&ff_ht_info_reserved,
+ {"Reserved", "fixed.extchansw",
+ FT_UINT8, BASE_HEX, 0, 0xF8, "Reserved Field", HFILL }},
+ /*** End: HT Information Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: HT Action Fixed Field - Dustin Johnson ***/
+ {&ff_ht_action,
+ {"HT Action", "fixed.htact",
+ FT_UINT8, BASE_HEX, VALS (&ff_ht_action_flags), 0, "HT Action Code", HFILL }},
+ /*** End: HT Action Fixed Field - Dustin Johnson ***/
+
+ /*** Begin: MIMO CSI Matrices Report - Dustin Johnson ***/
+ {&ff_mimo_csi_snr,
+ {"Signal to Noise Ratio (SNR)", "wlan_mgt.mimo.csimatrices.snr",
+ FT_UINT8, BASE_HEX, NULL, 0, "Signal to Noise Ratio (SNR)", HFILL }},
+ /*** End: MIMO CSI Matrices Report - Dustin Johnson ***/
{&ff_capture,
{"Capabilities", "wlan_mgt.fixed.capabilities", FT_UINT16, BASE_HEX, NULL, 0,
@@ -7486,8 +8359,7 @@ proto_register_ieee80211 (void)
{&ff_cf_apsd,
{"Automatic Power Save Delivery", "wlan_mgt.fixed.capabilities.apsd",
- FT_BOOLEAN, 16, TFS (&cf_apsd_flags), 0x0800, "Automatic Power Save "
- "Delivery", HFILL }},
+ FT_BOOLEAN, 16, TFS (&cf_apsd_flags), 0x0800, "Automatic Power Save Delivery", HFILL }},
{&ff_dsss_ofdm,
{"DSSS-OFDM", "wlan_mgt.fixed.capabilities.dsss_ofdm",
@@ -7496,17 +8368,15 @@ proto_register_ieee80211 (void)
{&ff_cf_del_blk_ack,
{"Delayed Block Ack", "wlan_mgt.fixed.capabilities.del_blk_ack",
- FT_BOOLEAN, 16, TFS (&cf_del_blk_ack_flags), 0x4000, "Delayed Block "
- "Ack", HFILL }},
+ FT_BOOLEAN, 16, TFS (&cf_del_blk_ack_flags), 0x4000, "Delayed Block Ack", HFILL }},
{&ff_cf_imm_blk_ack,
{"Immediate Block Ack", "wlan_mgt.fixed.capabilities.imm_blk_ack",
- FT_BOOLEAN, 16, TFS (&cf_imm_blk_ack_flags), 0x8000, "Immediate Block "
- "Ack", HFILL }},
+ FT_BOOLEAN, 16, TFS (&cf_imm_blk_ack_flags), 0x8000, "Immediate Block Ack", HFILL }},
{&ff_auth_seq,
{"Authentication SEQ", "wlan_mgt.fixed.auth_seq",
- FT_UINT16, BASE_HEX, NULL, 0, "Authentication sequence number", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0, "Authentication Sequence Number", HFILL }},
{&ff_assoc_id,
{"Association ID", "wlan_mgt.fixed.aid",
@@ -7542,7 +8412,7 @@ proto_register_ieee80211 (void)
{&ff_dialog_token,
{"Dialog token", "wlan_mgt.fixed.dialog_token",
- FT_UINT16, BASE_HEX, NULL, 0, "Management action dialog token", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Management action dialog token", HFILL }},
{&ff_wme_action_code,
{"Action code", "wlan_mgt.fixed.action_code",
@@ -7559,6 +8429,13 @@ proto_register_ieee80211 (void)
FT_UINT16, BASE_HEX, VALS (&qos_action_codes), 0,
"QoS management action code", HFILL }},
+ /*** Begin: Block Ack Action Fixed Field - Dustin Johnson ***/
+ {&ff_ba_action,
+ {"Action code", "wlan_mgt.fixed.action_code",
+ FT_UINT8, BASE_HEX, VALS (&ba_action_codes), 0,
+ "Block Ack action code", HFILL }},
+ /*** End: Block Ack Action Fixed Field - Dustin Johnson ***/
+
{&ff_dls_action_code,
{"Action code", "wlan_mgt.fixed.action_code",
FT_UINT16, BASE_HEX, VALS (&dls_action_codes), 0,
@@ -7727,20 +8604,20 @@ proto_register_ieee80211 (void)
FT_UINT8, BASE_HEX, VALS (&ampduparam_mpdu_start_spacing_flags) , 0x1c,
"MPDU Density", HFILL }},
- {&mcsset,
+ {&mcsset,
{"Supported MCS Set", "wlan_mgt.ht.mcsset",
FT_STRING, BASE_NONE, NULL, 0, "Supported MCS Set", HFILL }},
- {&mcsset_highest_data_rate,
+ {&mcsset_highest_data_rate,
{"Highest Supported Data Rate", "wlan_mgt.ht.mcsset.highestdatarate",
FT_UINT16, BASE_HEX, 0, 0x03ff, "Highest Supported Data Rate", HFILL }},
- {&mcsset_tx_mcs_set_defined,
+ {&mcsset_tx_mcs_set_defined,
{"Tx Suported MCS Set", "wlan_mgt.ht.mcsset.txsetdefined",
FT_BOOLEAN, 16, TFS (&mcsset_tx_mcs_set_defined_flag), 0x0001,
"Tx Suported MCS Set", HFILL }},
- {&mcsset_tx_rx_mcs_set_not_equal,
+ {&mcsset_tx_rx_mcs_set_not_equal,
{"Tx and Rx MCS Set", "wlan_mgt.ht.mcsset.txrxmcsnotequal",
FT_BOOLEAN, 16, TFS (&mcsset_tx_rx_mcs_set_not_equal_flag), 0x0002,
"Tx and Rx MCS Set", HFILL }},
@@ -7750,7 +8627,7 @@ proto_register_ieee80211 (void)
FT_UINT16, BASE_HEX, VALS (&mcsset_tx_max_spatial_streams_flags) , 0x001c,
"Tx Maximum Number of Spatial Streams Supported", HFILL }},
- {&mcsset_tx_unequal_modulation,
+ {&mcsset_tx_unequal_modulation,
{"Unequal Modulation", "wlan_mgt.ht.mcsset.txunequalmod",
FT_BOOLEAN, 16, TFS (&ht_tf_flag), 0x0020,
"Unequal Modulation", HFILL }},
@@ -7765,9 +8642,9 @@ proto_register_ieee80211 (void)
"Transmitter supports PCO", HFILL }},
{&htex_transtime,
- {"Transition Time between 20MHz and 40MHz", "wlan_mgt.htex.capabilities.transtime",
+ {"Time needed to transition between 20MHz and 40MHz", "wlan_mgt.htex.capabilities.transtime",
FT_UINT16, BASE_HEX, VALS (&htex_transtime_flags), 0x0006,
- "Transition Time between 20MHz and 40MHz", HFILL }},
+ "Time needed to transition between 20MHz and 40MHz", HFILL }},
{&htex_mcs,
{"MCS Feedback capability", "wlan_mgt.htex.capabilities.mcs",
@@ -7789,104 +8666,104 @@ proto_register_ieee80211 (void)
NULL, 0, "TxBF Transmit Beam Forming Capability", HFILL }},
{&txbf_cap,
- {"TxBF", "wlan_mgt.txbf.txbf",
+ {"Transmit Beamforming", "wlan_mgt.txbf.txbf",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000001,
- "", HFILL }},
+ "Transmit Beamforming", HFILL }},
{&txbf_rcv_ssc,
{"Receive Staggered Sounding", "wlan_mgt.txbf.rxss",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000002,
- "", HFILL }},
+ "Receive Staggered Sounding", HFILL }},
{&txbf_tx_ssc,
{"Transmit staggered sounding", "wlan_mgt.txbf.txss",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000004,
- "", HFILL }},
+ "Transmit staggered sounding", HFILL }},
{&txbf_rcv_ndp,
- {"Receive NDP", "wlan_mgt.txbf.rxndp",
+ {"Receive Null Data packet (NDP)", "wlan_mgt.txbf.rxndp",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000008,
- "", HFILL }},
+ "Receive Null Data packet (NDP)", HFILL }},
{&txbf_tx_ndp,
- {"Transmit NDP", "wlan_mgt.txbf.txndp",
+ {"Transmit Null Data packet (NDP)", "wlan_mgt.txbf.txndp",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000010,
- "", HFILL }},
+ "Transmit Null Data packet (NDP)", HFILL }},
{&txbf_impl_txbf,
{"Implicit TxBF capable", "wlan_mgt.txbf.impltxbf",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000020,
- "", HFILL }},
+ "Implicit Transmit Beamforming (TxBF) capable", HFILL }},
{&txbf_calib,
{"Calibration", "wlan_mgt.txbf.calibration",
FT_UINT32, BASE_HEX, VALS (&txbf_calib_flag), 0x000000c0,
- "", HFILL }},
+ "Calibration", HFILL }},
{&txbf_expl_csi,
{"STA can apply TxBF using CSI explicit feedback", "wlan_mgt.txbf.csi",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000100,
- "", HFILL }},
+ "Station can apply TxBF using CSI explicit feedback", HFILL }},
{&txbf_expl_uncomp_fm,
{"STA can apply TxBF using uncompressed beamforming feedback matrix", "wlan_mgt.txbf.fm.uncompressed.tbf",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000200,
- "", HFILL }},
+ "Station can apply TxBF using uncompressed beamforming feedback matrix", HFILL }},
- {&txbf_expl_comp_fm,
+ {&txbf_expl_comp_fm,
{"STA can apply TxBF using compressed beamforming feedback matrix", "wlan_mgt.txbf.fm.compressed.tbf",
FT_BOOLEAN, 32, TFS (&ht_tf_flag), 0x00000400,
- "", HFILL }},
+ "Station can apply TxBF using compressed beamforming feedback matrix", HFILL }},
{&txbf_expl_bf_csi,
{"Receiver can return explicit CSI feedback", "wlan_mgt.txbf.rcsi",
FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00001800,
- "", HFILL }},
+ "Receiver can return explicit CSI feedback", HFILL }},
{&txbf_expl_uncomp_fm_feed,
{"Receiver can return explicit uncompressed Beamforming Feedback Matrix", "wlan_mgt.txbf.fm.uncompressed.rbf",
FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00006000,
- "", HFILL }},
+ "Receiver can return explicit uncompressed Beamforming Feedback Matrix", HFILL }},
{&txbf_expl_comp_fm_feed,
{"STA can compress and use compressed Beamforming Feedback Matrix", "wlan_mgt.txbf.fm.compressed.bf",
FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00018000,
- "", HFILL }},
+ "Station can compress and use compressed Beamforming Feedback Matrix", HFILL }},
- {&txbf_min_group,
+ {&txbf_min_group,
{"Minimal grouping used for explicit feedback reports", "wlan_mgt.txbf.mingroup",
FT_UINT32, BASE_HEX, VALS (&txbf_min_group_flags), 0x00060000,
- "", HFILL }},
+ "Minimal grouping used for explicit feedback reports", HFILL }},
{&txbf_csi_num_bf_ant,
{"Max antennae STA can support when CSI feedback required", "wlan_mgt.txbf.csinumant",
FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x00180000,
- "", HFILL }},
+ "Max antennae station can support when CSI feedback required", HFILL }},
{&txbf_uncomp_sm_bf_ant,
{"Max antennae STA can support when uncompressed Beamforming feedback required", "wlan_mgt.txbf.fm.uncompressed.maxant",
FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x00600000,
- "", HFILL }},
+ "Max antennae station can support when uncompressed Beamforming feedback required", HFILL }},
{&txbf_comp_sm_bf_ant,
{"Max antennae STA can support when compressed Beamforming feedback required", "wlan_mgt.txbf.fm.compressed.maxant",
FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x01800000,
- "", HFILL }},
+ "Max antennae station can support when compressed Beamforming feedback required", HFILL }},
- {&txbf_csi_max_rows_bf,
+ {&txbf_csi_max_rows_bf,
{"Maximum number of rows of CSI explicit feeback", "wlan_mgt.txbf.csi.maxrows",
FT_UINT32, BASE_HEX, VALS (&txbf_csi_max_rows_bf_flags), 0x06000000,
- "", HFILL }},
+ "Maximum number of rows of CSI explicit feeback", HFILL }},
{&txbf_chan_est,
{"Maximum number of space time streams for which channel dimensions can be simultaneously estimated", "wlan_mgt.txbf.channelest",
FT_UINT32, BASE_HEX, VALS (&txbf_chan_est_flags), 0x18000000,
- "", HFILL }},
+ "Maximum number of space time streams for which channel dimensions can be simultaneously estimated", HFILL }},
- {&txbf_resrv,
+ {&txbf_resrv,
{"Reserved", "wlan_mgt.txbf.reserved",
FT_UINT32, BASE_HEX, NULL, 0xe0000000,
- "", HFILL }},
+ "Reserved", HFILL }},
{&hta_cap,
{"HT Additional Capabilities", "wlan_mgt.hta.capabilities", FT_UINT16, BASE_HEX,
@@ -7895,632 +8772,628 @@ proto_register_ieee80211 (void)
{&hta_ext_chan_offset,
{"Extension Channel Offset", "wlan_mgt.hta.capabilities.extchan",
FT_UINT16, BASE_HEX, VALS (&hta_ext_chan_offset_flag), 0x0003,
- "", HFILL }},
+ "Extension Channel Offset", HFILL }},
{&hta_rec_tx_width,
{"Reccomended Tx Channel Width", "wlan_mgt.hta.capabilities.rectxwidth",
FT_BOOLEAN, 16, TFS (&hta_rec_tx_width_flag), 0x0004,
- "", HFILL }},
+ "Reccomended Transmit Channel Width", HFILL }},
{&hta_rifs_mode,
- {"RIFS Mode", "wlan_mgt.hta.capabilities.rifsmode",
+ {"Reduced Interframe Spacing (RIFS) Mode", "wlan_mgt.hta.capabilities.rifsmode",
FT_BOOLEAN, 16, TFS (&hta_rifs_mode_flag), 0x0008,
- "", HFILL }},
+ "Reduced Interframe Spacing (RIFS) Mode", HFILL }},
{&hta_controlled_access,
{"Controlled Access Only", "wlan_mgt.hta.capabilities.controlledaccess",
FT_BOOLEAN, 16, TFS (&hta_controlled_access_flag), 0x0010,
- "", HFILL }},
+ "Controlled Access Only", HFILL }},
{&hta_service_interval,
{"Service Interval Granularity", "wlan_mgt.hta.capabilities.serviceinterval",
FT_UINT16, BASE_HEX, VALS (&hta_service_interval_flag), 0x00E0,
- "", HFILL }},
+ "Service Interval Granularity", HFILL }},
{&hta_operating_mode,
{"Operating Mode", "wlan_mgt.hta.capabilities.operatingmode",
FT_UINT16, BASE_HEX, VALS (&hta_operating_mode_flag), 0x0003,
- "", HFILL }},
+ "Operating Mode", HFILL }},
{&hta_non_gf_devices,
- {"Non GF devices Present", "wlan_mgt.hta.capabilities.nongfdevices",
+ {"Non Greenfield (GF) devices Present", "wlan_mgt.hta.capabilities.nongfdevices",
FT_BOOLEAN, 16, TFS (&hta_non_gf_devices_flag), 0x0004,
- "", HFILL }},
+ "on Greenfield (GF) devices Present", HFILL }},
{&hta_basic_stbc_mcs,
- {"Basic STB MCS", "wlan_mgt.hta.capabilities.",
+ {"Basic STB Modulation Coding Scheme (MCS)", "wlan_mgt.hta.capabilities.",
FT_UINT16, BASE_HEX, NULL , 0x007f,
- "", HFILL }},
+ "Basic STB Modulation Coding Scheme (MCS)", HFILL }},
{&hta_dual_stbc_protection,
- {"Dual CTS Protection", "wlan_mgt.hta.capabilities.",
+ {"Dual Clear To Send (CTS) Protection", "wlan_mgt.hta.capabilities.",
FT_BOOLEAN, 16, TFS (&hta_dual_stbc_protection_flag), 0x0080,
- "", HFILL }},
+ "Dual Clear To Send (CTS) Protection", HFILL }},
{&hta_secondary_beacon,
{"Secondary Beacon", "wlan_mgt.hta.capabilities.",
FT_BOOLEAN, 16, TFS (&hta_secondary_beacon_flag), 0x0100,
- "", HFILL }},
+ "Secondary Beacon", HFILL }},
{&hta_lsig_txop_protection,
{"L-SIG TXOP Protection Support", "wlan_mgt.hta.capabilities.",
FT_BOOLEAN, 16, TFS (&hta_lsig_txop_protection_flag), 0x0200,
- "", HFILL }},
+ "L-SIG TXOP Protection Support", HFILL }},
{&hta_pco_active,
- {"PCO Active", "wlan_mgt.hta.capabilities.",
+ {"Phased Coexistence Operation (PCO) Active", "wlan_mgt.hta.capabilities.",
FT_BOOLEAN, 16, TFS (&hta_pco_active_flag), 0x0400,
- "", HFILL }},
+ "Phased Coexistence Operation (PCO) Active", HFILL }},
{&hta_pco_phase,
- {"PCO Phase", "wlan_mgt.hta.capabilities.",
+ {"Phased Coexistence Operation (PCO) Phase", "wlan_mgt.hta.capabilities.",
FT_BOOLEAN, 16, TFS (&hta_pco_phase_flag), 0x0800,
- "", HFILL }},
+ "Phased Coexistence Operation (PCO) Phase", HFILL }},
{&antsel,
{"Antenna Selection Capability", "wlan_mgt.txbf",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Antenna Selection Capability", HFILL }},
{&antsel_b0,
{"Antenna Selection Capable", "wlan_mgt.asel.capable",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x01, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x01, "Antenna Selection Capable", HFILL }},
{&antsel_b1,
{"Explicit CSI Feedback Based Tx ASEL", "wlan_mgt.asel.txcsi",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x02, "Explicit CSI Feedback Based Tx ASEL", HFILL }},
{&antsel_b2,
{"Antenna Indices Feedback Based Tx ASEL", "wlan_mgt.asel.txif",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x04, "Antenna Indices Feedback Based Tx ASEL", HFILL }},
{&antsel_b3,
{"Explicit CSI Feedback", "wlan_mgt.asel.csi",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x08, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x08, "Explicit CSI Feedback", HFILL }},
{&antsel_b4,
{"Antenna Indices Feedback", "wlan_mgt.asel.if",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x10, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x10, "Antenna Indices Feedback", HFILL }},
{&antsel_b5,
{"Rx ASEL", "wlan_mgt.asel.rx",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x20, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x20, "Rx ASEL", HFILL }},
{&antsel_b6,
{"Tx Sounding PPDUs", "wlan_mgt.asel.sppdu",
- FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x40, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_tf_flag), 0x40, "Tx Sounding PPDUs", HFILL }},
- {&antsel_b7,
+ {&antsel_b7,
{"Reserved", "wlan_mgt.asel.reserved",
- FT_UINT8, BASE_HEX, NULL, 0x80, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0x80, "Reserved", HFILL }},
- {&ht_info_delimiter1,
- {"HT Information Delimiter 1", "wlan_mgt.ht.info.delim1",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ {&ht_info_delimiter1,
+ {"HT Information Delimiter #1", "wlan_mgt.ht.info.delim1",
+ FT_UINT8, BASE_HEX, NULL, 0xff, "HT Information Delimiter #1", HFILL }},
- {&ht_info_primary_channel,
- {"Primary channel", "wlan_mgt.ht.info.primarychannel",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ {&ht_info_primary_channel,
+ {"Primary Channel", "wlan_mgt.ht.info.primarychannel",
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Primary Channel", HFILL }},
- {&ht_info_secondary_channel_offset,
+ {&ht_info_secondary_channel_offset,
{"Secondary channel offset", "wlan_mgt.ht.info.secchanoffset",
- FT_UINT8, BASE_HEX, VALS (&ht_info_secondary_channel_offset_flags), 0x03, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS (&ht_info_secondary_channel_offset_flags), 0x03, "Secondary channel offset", HFILL }},
- {&ht_info_channel_width,
+ {&ht_info_channel_width,
{"Supported channel width", "wlan_mgt.ht.info.chanwidth",
- FT_BOOLEAN, 8, TFS (&ht_info_channel_width_flag), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&ht_info_channel_width_flag), 0x04, "Supported channel width", HFILL }},
- {&ht_info_rifs_mode,
- {"Reduced interframe spacing (RIFS)", "wlan_mgt.ht.info.rifs",
- FT_BOOLEAN, 8, TFS (&ht_info_rifs_mode_flag), 0x08, "", HFILL }},
+ {&ht_info_rifs_mode,
+ {"Reduced Interframe Spacing (RIFS)", "wlan_mgt.ht.info.rifs",
+ FT_BOOLEAN, 8, TFS (&ht_info_rifs_mode_flag), 0x08, "Reduced Interframe Spacing (RIFS)", HFILL }},
- {&ht_info_psmp_stas_only,
- {"PSMP stations only", "wlan_mgt.ht.info.psmponly",
- FT_BOOLEAN, 8, TFS (&ht_info_psmp_stas_only_flag), 0x10, "", HFILL }},
+ {&ht_info_psmp_stas_only,
+ {"Power Save Multi-Poll (PSMP) stations only", "wlan_mgt.ht.info.psmponly",
+ FT_BOOLEAN, 8, TFS (&ht_info_psmp_stas_only_flag), 0x10, "Power Save Multi-Poll (PSMP) stations only", HFILL }},
- {&ht_info_service_interval_granularity,
+ {&ht_info_service_interval_granularity,
{"Shortest service interval", "wlan_mgt.ht.info.",
- FT_UINT8, BASE_HEX, VALS (&ht_info_service_interval_granularity_flags), 0xe0, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS (&ht_info_service_interval_granularity_flags), 0xe0, "Shortest service interval", HFILL }},
- {&ht_info_delimiter2,
+ {&ht_info_delimiter2,
{"HT Information Delimiter #2", "wlan_mgt.ht.info.delim2",
- FT_UINT16, BASE_HEX, NULL, 0xffff, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xffff, "HT Information Delimiter #2", HFILL }},
- {&ht_info_operating_mode,
+ {&ht_info_operating_mode,
{"Operating mode of BSS", "wlan_mgt.ht.info.operatingmode",
- FT_UINT16, BASE_HEX, VALS (&ht_info_operating_mode_flags), 0x0003, "", HFILL }},
+ FT_UINT16, BASE_HEX, VALS (&ht_info_operating_mode_flags), 0x0003, "Operating mode of BSS", HFILL }},
- {&ht_info_non_greenfield_sta_present,
+ {&ht_info_non_greenfield_sta_present,
{"Non-greenfield STAs present", "wlan_mgt.ht.info.greenfield",
- FT_BOOLEAN, 16, TFS (&ht_info_non_greenfield_sta_present_flag), 0x0004, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_non_greenfield_sta_present_flag), 0x0004, "Non-greenfield STAs present", HFILL }},
- {&ht_info_transmit_burst_limit,
+ {&ht_info_transmit_burst_limit,
{"Transmit burst limit", "wlan_mgt.ht.info.burstlim",
- FT_BOOLEAN, 16, TFS (&ht_info_transmit_burst_limit_flag), 0x0008, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_transmit_burst_limit_flag), 0x0008, "Transmit burst limit", HFILL }},
- {&ht_info_obss_non_ht_stas_present,
+ {&ht_info_obss_non_ht_stas_present,
{"OBSS non-HT STAs present", "wlan_mgt.ht.info.obssnonht",
- FT_BOOLEAN, 16, TFS (&ht_info_obss_non_ht_stas_present_flag), 0x0010, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_obss_non_ht_stas_present_flag), 0x0010, "OBSS non-HT STAs present", HFILL }},
- {&ht_info_reserved_1,
+ {&ht_info_reserved_1,
{"Reserved", "wlan_mgt.ht.info.reserved1",
- FT_UINT16, BASE_HEX, NULL, 0xffe0, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xffe0, "Reserved", HFILL }},
- {&ht_info_delimiter3,
+ {&ht_info_delimiter3,
{"HT Information Delimiter #3", "wlan_mgt.ht.info.delim3",
- FT_UINT16, BASE_HEX, NULL, 0xffff, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xffff, "HT Information Delimiter #3", HFILL }},
- {&ht_info_reserved_2,
+ {&ht_info_reserved_2,
{"Reserved", "wlan_mgt.ht.info.reserved2",
- FT_UINT16, BASE_HEX, NULL, 0x003f, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x003f, "Reserved", HFILL }},
- {&ht_info_dual_beacon,
+ {&ht_info_dual_beacon,
{"Dual beacon", "wlan_mgt.ht.info.dualbeacon",
- FT_BOOLEAN, 16, TFS (&ht_info_dual_beacon_flag), 0x0040, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_dual_beacon_flag), 0x0040, "Dual beacon", HFILL }},
- {&ht_info_dual_cts_protection,
- {"Dual CTS protection", "wlan_mgt.ht.info.dualcts",
- FT_BOOLEAN, 16, TFS (&ht_info_dual_cts_protection_flag), 0x0080, "", HFILL }},
+ {&ht_info_dual_cts_protection,
+ {"Dual Clear To Send (CTS) protection", "wlan_mgt.ht.info.dualcts",
+ FT_BOOLEAN, 16, TFS (&ht_info_dual_cts_protection_flag), 0x0080, "Dual Clear To Send (CTS) protection", HFILL }},
- {&ht_info_secondary_beacon,
+ {&ht_info_secondary_beacon,
{"Beacon ID", "wlan_mgt.ht.info.secondarybeacon",
- FT_BOOLEAN, 16, TFS (&ht_info_secondary_beacon_flag), 0x0100, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_secondary_beacon_flag), 0x0100, "Beacon ID", HFILL }},
- {&ht_info_lsig_txop_protection_full_support,
+ {&ht_info_lsig_txop_protection_full_support,
{"L-SIG TXOP Protection Full Support", "wlan_mgt.ht.info.lsigprotsupport",
- FT_BOOLEAN, 16, TFS (&ht_info_lsig_txop_protection_full_support_flag), 0x0200, "", HFILL }},
+ FT_BOOLEAN, 16, TFS (&ht_info_lsig_txop_protection_full_support_flag), 0x0200, "L-SIG TXOP Protection Full Support", HFILL }},
- {&ht_info_pco_active,
- {"PCO", "wlan_mgt.ht.info.pco.active",
- FT_BOOLEAN, 16, TFS (&ht_info_pco_active_flag), 0x0400, "", HFILL }},
+ {&ht_info_pco_active,
+ {"Phased Coexistence Operation (PCO)", "wlan_mgt.ht.info.pco.active",
+ FT_BOOLEAN, 16, TFS (&ht_info_pco_active_flag), 0x0400, "Phased Coexistence Operation (PCO)", HFILL }},
- {&ht_info_pco_phase,
- {"PCO phase", "wlan_mgt.ht.info.pco.phase",
- FT_BOOLEAN, 16, TFS (&ht_info_pco_phase_flag), 0x0800, "", HFILL }},
+ {&ht_info_pco_phase,
+ {"Phased Coexistence Operation (PCO) Phase", "wlan_mgt.ht.info.pco.phase",
+ FT_BOOLEAN, 16, TFS (&ht_info_pco_phase_flag), 0x0800, "Phased Coexistence Operation (PCO) Phase", HFILL }},
- {&ht_info_reserved_3,
+ {&ht_info_reserved_3,
{"Reserved", "wlan_mgt.ht.info.reserved3",
- FT_UINT16, BASE_HEX, NULL, 0xf000, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xf000, "Reserved", HFILL }},
- {&ht_basic_mcs_set,
- {"Bitfield", "wlan_mgt.ht.info.basicmcsset",
- FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+ {&ht_basic_mcs_set,
+ {"Modulation Coding Scheme (MCS) Set Bitfield", "wlan_mgt.ht.info.basicmcsset",
+ FT_STRING, BASE_NONE, NULL, 0, "Modulation Coding Scheme (MCS) Set Bitfield", HFILL }},
- {&hf_tag_secondary_channel_offset,
+ {&hf_tag_secondary_channel_offset,
{"Secondary Channel Offset", "wlan_mgt.secchanoffset",
FT_UINT8, BASE_HEX, VALS (&hf_tag_secondary_channel_offset_flags), 0,
- "", HFILL }},
+ "Secondary Channel Offset", HFILL }},
-
- /*** Start: Measurement Request Tag - Dustin Johnson***/
- {&hf_tag_measure_request_measurement_token,
+ /*** Start: Measurement Request Tag - Dustin Johnson***/
+ {&hf_tag_measure_request_measurement_token,
{"Measurement Token", "wlan_mgt.measure.req.measuretoken",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Token", HFILL }},
- {&hf_tag_measure_request_mode,
+ {&hf_tag_measure_request_mode,
{"Measurement Request Mode", "wlan_mgt.measure.req.reqmode",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Request Mode", HFILL }},
- {&hf_tag_measure_request_mode_reserved1,
+ {&hf_tag_measure_request_mode_reserved1,
{"Reserved", "wlan_mgt.measure.req.reqmode.reserved1",
- FT_UINT8, BASE_HEX, NULL, 0x01, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0x01, "Reserved", HFILL }},
- {&hf_tag_measure_request_mode_enable,
+ {&hf_tag_measure_request_mode_enable,
{"Measurement Request Mode Field", "wlan_mgt.measure.req.reqmode.enable",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_enable_flag), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_enable_flag), 0x02, "Measurement Request Mode Field", HFILL }},
- {&hf_tag_measure_request_mode_request,
+ {&hf_tag_measure_request_mode_request,
{"Measurement Reports", "wlan_mgt.measure.req.reqmode.request",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x04, "Measurement Reports", HFILL }},
- {&hf_tag_measure_request_mode_report,
+ {&hf_tag_measure_request_mode_report,
{"Autonomous Measurement Reports", "wlan_mgt.measure.req.reqmode.report",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x08, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x08, "Autonomous Measurement Reports", HFILL }},
- {&hf_tag_measure_request_mode_reserved2,
+ {&hf_tag_measure_request_mode_reserved2,
{"Reserved", "wlan_mgt.measure.req.reqmode.reserved2",
- FT_UINT8, BASE_HEX, NULL, 0xf0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xf0, "Reserved", HFILL }},
- {&hf_tag_measure_request_type,
+ {&hf_tag_measure_request_type,
{"Measurement Request Type", "wlan_mgt.measure.req.reqtype",
- FT_UINT8, BASE_HEX, VALS (&hf_tag_measure_request_type_flags), 0x00, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS (&hf_tag_measure_request_type_flags), 0x00, "Measurement Request Type", HFILL }},
- {&hf_tag_measure_request_channel_number,
+ {&hf_tag_measure_request_channel_number,
{"Measurement Channel Number", "wlan_mgt.measure.req.channelnumber",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Channel Number", HFILL }},
- {&hf_tag_measure_request_start_time,
+ {&hf_tag_measure_request_start_time,
{"Measurement Start Time", "wlan_mgt.measure.req.starttime",
- FT_UINT64, BASE_HEX, NULL, 0xffffffff, "", HFILL }},
+ FT_UINT64, BASE_HEX, NULL, 0xffffffff, "Measurement Start Time", HFILL }},
- {&hf_tag_measure_request_duration,
+ {&hf_tag_measure_request_duration,
{"Measurement Duration", "wlan_mgt.measure.req.channelnumber",
- FT_UINT16, BASE_HEX, NULL, 0xffff, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xffff, "Measurement Duration", HFILL }},
- {&hf_tag_measure_request_regulatory_class,
+ {&hf_tag_measure_request_regulatory_class,
{"Measurement Channel Number", "wlan_mgt.measure.req.regclass",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Channel Number", HFILL }},
- {&hf_tag_measure_request_randomization_interval,
+ {&hf_tag_measure_request_randomization_interval,
{"Randomization Interval", "wlan_mgt.measure.req.randint",
- FT_UINT16, BASE_HEX, NULL, 0xffff, "", HFILL }},
-
+ FT_UINT16, BASE_HEX, NULL, 0xffff, "Randomization Interval", HFILL }},
-
- {&hf_tag_measure_request_measurement_mode,
+ {&hf_tag_measure_request_measurement_mode,
{"Measurement Mode", "wlan_mgt.measure.req.measurementmode",
- FT_UINT8, BASE_HEX, VALS(&hf_tag_measure_request_measurement_mode_flags), 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS(&hf_tag_measure_request_measurement_mode_flags), 0xff, "Measurement Mode", HFILL }},
- {&hf_tag_measure_request_bssid,
+ {&hf_tag_measure_request_bssid,
{"BSSID", "wlan_mgt.measure.req.bssid",
- FT_ETHER, BASE_NONE, NULL, 0, "", HFILL }},
+ FT_ETHER, BASE_NONE, NULL, 0, "BSSID", HFILL }},
- {&hf_tag_measure_request_reporting_condition,
+ {&hf_tag_measure_request_reporting_condition,
{"Reporting Condition", "wlan_mgt.measure.req.repcond",
- FT_UINT8, BASE_HEX, VALS(&hf_tag_measure_request_reporting_condition_flags), 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS(&hf_tag_measure_request_reporting_condition_flags), 0xff, "Reporting Condition", HFILL }},
- {&hf_tag_measure_request_threshold_offset_unsigned,
+ {&hf_tag_measure_request_threshold_offset_unsigned,
{"Threshold/Offset", "wlan_mgt.measure.req.threshold",
- FT_UINT8, BASE_HEX, 0, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, 0, 0xff, "Threshold/Offset", HFILL }},
- {&hf_tag_measure_request_threshold_offset_signed,
+ {&hf_tag_measure_request_threshold_offset_signed,
{"Threshold/Offset", "wlan_mgt.measure.req.threshold",
- FT_INT8, BASE_HEX, 0, 0xff, "", HFILL }},
+ FT_INT8, BASE_HEX, 0, 0xff, "Threshold/Offset", HFILL }},
- {&hf_tag_measure_request_report_mac,
+ {&hf_tag_measure_request_report_mac,
{"MAC on wich to gather data", "wlan_mgt.measure.req.reportmac",
- FT_ETHER, BASE_NONE, NULL, 0, "", HFILL }},
+ FT_ETHER, BASE_NONE, NULL, 0, "MAC on wich to gather data", HFILL }},
- {&hf_tag_measure_request_group_id,
+ {&hf_tag_measure_request_group_id,
{"Group ID", "wlan_mgt.measure.req.groupid",
- FT_INT8, BASE_HEX, VALS(&hf_tag_measure_request_group_id_flags), 0xff, "", HFILL }},
-
+ FT_INT8, BASE_HEX, VALS(&hf_tag_measure_request_group_id_flags), 0xff, "Group ID", HFILL }},
/*** End: Measurement Request Tag - Dustin Johnson***/
/*** Start: Measurement Report Tag - Dustin Johnson***/
- {&hf_tag_measure_report_measurement_token,
+ {&hf_tag_measure_report_measurement_token,
{"Measurement Token", "wlan_mgt.measure.req.clr",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Token", HFILL }},
- {&hf_tag_measure_report_mode,
+ {&hf_tag_measure_report_mode,
{"Measurement Report Mode", "wlan_mgt.measure.req.clr",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Report Mode", HFILL }},
- {&hf_tag_measure_report_mode_late,
+ {&hf_tag_measure_report_mode_late,
{"Measurement Report Mode Field", "wlan_mgt.measure.rep.repmode.late",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_enable_flag), 0x01, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_enable_flag), 0x01, "Measurement Report Mode Field", HFILL }},
- {&hf_tag_measure_report_mode_incapable,
+ {&hf_tag_measure_report_mode_incapable,
{"Measurement Reports", "wlan_mgt.measure.rep.repmode.incapable",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x02, "Measurement Reports", HFILL }},
- {&hf_tag_measure_report_mode_refused,
+ {&hf_tag_measure_report_mode_refused,
{"Autonomous Measurement Reports", "wlan_mgt.measure.rep.repmode.refused",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_acc_not_acc), 0x04, "Autonomous Measurement Reports", HFILL }},
- {&hf_tag_measure_report_mode_reserved,
+ {&hf_tag_measure_report_mode_reserved,
{"Reserved", "wlan_mgt.measure.rep.repmode.reserved",
- FT_UINT8, BASE_HEX, NULL, 0xf8, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xf8, "Reserved", HFILL }},
- {&hf_tag_measure_report_type,
+ {&hf_tag_measure_report_type,
{"Measurement Report Type", "wlan_mgt.measure.rep.reptype",
- FT_UINT8, BASE_HEX, VALS (&hf_tag_measure_report_type_flags), 0x00, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS (&hf_tag_measure_report_type_flags), 0x00, "Measurement Report Type", HFILL }},
- {&hf_tag_measure_report_channel_number,
+ {&hf_tag_measure_report_channel_number,
{"Measurement Channel Number", "wlan_mgt.measure.rep.channelnumber",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Measurement Channel Number", HFILL }},
- {&hf_tag_measure_report_start_time,
+ {&hf_tag_measure_report_start_time,
{"Measurement Start Time", "wlan_mgt.measure.rep.starttime",
- FT_UINT64, BASE_HEX, NULL, 0xffffffff, "", HFILL }},
+ FT_UINT64, BASE_HEX, NULL, 0xffffffff, "Measurement Start Time", HFILL }},
- {&hf_tag_measure_report_duration,
+ {&hf_tag_measure_report_duration,
{"Measurement Duration", "wlan_mgt.measure.rep.channelnumber",
- FT_UINT16, BASE_HEX, NULL, 0xffff, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0xffff, "Measurement Duration", HFILL }},
- {&hf_tag_measure_basic_map_field,
+ {&hf_tag_measure_basic_map_field,
{"Map Field", "wlan_mgt.measure.rep.mapfield",
- FT_UINT8, BASE_HEX, NULL, 0xff, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xff, "Map Field", HFILL }},
- {&hf_tag_measure_map_field_bss,
+ {&hf_tag_measure_map_field_bss,
{"BSS", "wlan_mgt.measure.rep.repmode.mapfield.bss",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_map_field_bss_flag), 0x01, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_map_field_bss_flag), 0x01, "BSS", HFILL }},
- {&hf_tag_measure_map_field_odfm,
+ {&hf_tag_measure_map_field_odfm,
{"Orthogonal Frequencey Division Multiplexing (ODFM) Preamble", "wlan_mgt.measure.rep.repmode.mapfield.bss",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x02, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x02, "Orthogonal Frequencey Division Multiplexing (ODFM) Preamble", HFILL }},
- {&hf_tag_measure_map_field_unident_signal,
+ {&hf_tag_measure_map_field_unident_signal,
{"Unidentified Signal", "wlan_mgt.measure.rep.repmode.mapfield.unidentsig",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x04, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x04, "Unidentified Signal", HFILL }},
- {&hf_tag_measure_map_field_radar,
+ {&hf_tag_measure_map_field_radar,
{"Radar", "wlan_mgt.measure.rep.repmode.mapfield.radar",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x08, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_detected_not_detected), 0x08, "Radar", HFILL }},
- {&hf_tag_measure_map_field_unmeasured,
+ {&hf_tag_measure_map_field_unmeasured,
{"Unmeasured", "wlan_mgt.measure.rep.repmode.mapfield.unmeasured",
- FT_BOOLEAN, 8, TFS (&hf_tag_measure_true_false), 0x10, "", HFILL }},
+ FT_BOOLEAN, 8, TFS (&hf_tag_measure_true_false), 0x10, "Unmeasured", HFILL }},
- {&hf_tag_measure_map_field_reserved,
+ {&hf_tag_measure_map_field_reserved,
{"Reserved", "wlan_mgt.measure.rep.repmode.mapfield.reserved",
- FT_UINT8, BASE_HEX, NULL, 0xe0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0xe0, "Reserved", HFILL }},
- {&hf_tag_measure_rpi_histogram_report,
- {"RPI Histogram Report", "",
- FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+ {&hf_tag_measure_rpi_histogram_report,
+ {"Receive Power Indicator (RPI) Histogram Report", "",
+ FT_STRING, BASE_NONE, NULL, 0, "Receive Power Indicator (RPI) Histogram Report", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_0,
+ {&hf_tag_measure_rpi_histogram_report_0,
{"RPI 0 Density", "wlan_mgt.measure.rep.rpi.rpi0density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 0 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_1,
+ {&hf_tag_measure_rpi_histogram_report_1,
{"RPI 1 Density", "wlan_mgt.measure.rep.rpi.rpi1density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 1 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_2,
+ {&hf_tag_measure_rpi_histogram_report_2,
{"RPI 2 Density", "wlan_mgt.measure.rep.rpi.rpi2density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 2 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_3,
+ {&hf_tag_measure_rpi_histogram_report_3,
{"RPI 3 Density", "wlan_mgt.measure.rep.rpi.rpi3density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 3 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_4,
+ {&hf_tag_measure_rpi_histogram_report_4,
{"RPI 4 Density", "wlan_mgt.measure.rep.rpi.rpi4density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 4 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_5,
+ {&hf_tag_measure_rpi_histogram_report_5,
{"RPI 5 Density", "wlan_mgt.measure.rep.rpi.rpi5density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 5 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_6,
+ {&hf_tag_measure_rpi_histogram_report_6,
{"RPI 6 Density", "wlan_mgt.measure.rep.rpi.rpi6density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 6 Density", HFILL }},
- {&hf_tag_measure_rpi_histogram_report_7,
+ {&hf_tag_measure_rpi_histogram_report_7,
{"RPI 7 Density", "wlan_mgt.measure.rep.rpi.rpi7density",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 7 Density", HFILL }},
- {&hf_tag_measure_report_regulatory_class,
+ {&hf_tag_measure_report_regulatory_class,
{"Regulatory Class", "wlan_mgt.measure.rep.regclass",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Regulatory Class", HFILL }},
- {&hf_tag_measure_report_channel_load,
+ {&hf_tag_measure_report_channel_load,
{"Channel Load", "wlan_mgt.measure.rep.chanload",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Channel Load", HFILL }},
- {&hf_tag_measure_report_frame_info,
+ {&hf_tag_measure_report_frame_info,
{"Reported Frame Information", "wlan_mgt.measure.rep.frameinfo",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Reported Frame Information", HFILL }},
- {&hf_tag_measure_report_frame_info_phy_type,
+ {&hf_tag_measure_report_frame_info_phy_type,
{"Condensed PHY", "wlan_mgt.measure.rep.frameinfo.phytype",
- FT_UINT8, BASE_HEX, NULL, 0x7F, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0x7F, "Condensed PHY", HFILL }},
- {&hf_tag_measure_report_frame_info_frame_type,
+ {&hf_tag_measure_report_frame_info_frame_type,
{"Reported Frame Type", "wlan_mgt.measure.rep.frameinfo.frametype",
- FT_UINT8, BASE_HEX, TFS(&hf_tag_measure_report_frame_info_frame_type_flag), 0x80, "", HFILL }},
+ FT_UINT8, BASE_HEX, TFS(&hf_tag_measure_report_frame_info_frame_type_flag), 0x80, "Reported Frame Type", HFILL }},
- {&hf_tag_measure_report_rcpi,
+ {&hf_tag_measure_report_rcpi,
{"Received Channel Power Indicator (RCPI)", "wlan_mgt.measure.rep.rcpi",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Received Channel Power Indicator (RCPI)", HFILL }},
- {&hf_tag_measure_report_rsni,
+ {&hf_tag_measure_report_rsni,
{"Received Signal to Noise Indicator (RSNI)", "wlan_mgt.measure.rep.rsni",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Received Signal to Noise Indicator (RSNI)", HFILL }},
- {&hf_tag_measure_report_bssid,
+ {&hf_tag_measure_report_bssid,
{"BSSID Being Reported", "wlan_mgt.measure.rep.bssid",
- FT_ETHER, BASE_NONE, NULL, 0, "", HFILL }},
+ FT_ETHER, BASE_NONE, NULL, 0, "BSSID Being Reported", HFILL }},
- {&hf_tag_measure_report_ant_id,
+ {&hf_tag_measure_report_ant_id,
{"Antenna ID", "wlan_mgt.measure.rep.antid",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Antenna ID", HFILL }},
- {&hf_tag_measure_report_parent_tsf,
- {"Parent TSF", "wlan_mgt.measure.rep.parenttsf",
- FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
- /*** End: Measurement Report Tag - Dustin Johnson***/
+ {&hf_tag_measure_report_parent_tsf,
+ {"Parent Timing Synchronization Function (TSF)", "wlan_mgt.measure.rep.parenttsf",
+ FT_UINT32, BASE_HEX, NULL, 0, "Parent Timing Synchronization Function (TSF)", HFILL }},
+ /*** End: Measurement Report Tag - Dustin Johnson***/
- /*** Begin: Extended Capabilities Tag - Dustin Johnson ***/
- {&hf_tag_extended_capabilities,
+ /*** Begin: Extended Capabilities Tag - Dustin Johnson ***/
+ {&hf_tag_extended_capabilities,
{"HT Information Exchange Support", "wlan_mgt.extcap.infoexchange",
- FT_UINT8, BASE_HEX, TFS(&hf_tag_extended_capabilities_flag), 0xff, "", HFILL }},
- /*** End: Extended Capabilities Tag - Dustin Johnson ***/
+ FT_UINT8, BASE_HEX, TFS(&hf_tag_extended_capabilities_flag), 0xff, "HT Information Exchange Support", HFILL }},
+ /*** End: Extended Capabilities Tag - Dustin Johnson ***/
- /*** Begin: Neighbor Report Tag - Dustin Johnson ***/
- {&hf_tag_neighbor_report_bssid,
+ /*** Begin: Neighbor Report Tag - Dustin Johnson ***/
+ {&hf_tag_neighbor_report_bssid,
{"BSSID", "wlan_mgt.nreport.bssid",
- FT_ETHER, BASE_NONE, NULL, 0, "", HFILL }},
+ FT_ETHER, BASE_NONE, NULL, 0, "BSSID", HFILL }},
- {&hf_tag_neighbor_report_bssid_info,
+ {&hf_tag_neighbor_report_bssid_info,
{"BSSID Information", "wlan_mgt.nreport.bssid.info",
- FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT32, BASE_HEX, NULL, 0, "BSSID Information", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_reachability,
+ {&hf_tag_neighbor_report_bssid_info_reachability,
{"Reachability", "wlan_mgt.nreport.bssid.info.reachability",
- FT_UINT16, BASE_HEX, NULL, 0x0003, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0003, "Reachability", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_security,
+ {&hf_tag_neighbor_report_bssid_info_security,
{"Security", "wlan_mgt.nreport.bssid.info.security",
- FT_UINT16, BASE_HEX, NULL, 0x0004, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0004, "Security", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_key_scope,
+ {&hf_tag_neighbor_report_bssid_info_key_scope,
{"Key Scope", "wlan_mgt.nreport.bssid.info.keyscope",
- FT_UINT16, BASE_HEX, NULL, 0x0008, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0008, "Key Scope", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_spec_mng,
+ {&hf_tag_neighbor_report_bssid_info_capability_spec_mng,
{"Capability: Spectrum Management", "wlan_mgt.nreport.bssid.info.capability.specmngt",
- FT_UINT16, BASE_HEX, NULL, 0x0010, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0010, "Capability: Spectrum Management", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_qos,
+ {&hf_tag_neighbor_report_bssid_info_capability_qos,
{"Capability: QoS", "wlan_mgt.nreport.bssid.info.capability.qos",
- FT_UINT16, BASE_HEX, NULL, 0x0020, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0020, "Capability: QoS", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_apsd,
+ {&hf_tag_neighbor_report_bssid_info_capability_apsd,
{"Capability: APSD", "wlan_mgt.nreport.bssid.info.capability.apsd",
- FT_UINT16, BASE_HEX, NULL, 0x0040, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0040, "Capability: APSD", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_radio_msnt,
+ {&hf_tag_neighbor_report_bssid_info_capability_radio_msnt,
{"Capability: Radio Measurement", "wlan_mgt.nreport.bssid.info.capability.radiomsnt",
- FT_UINT16, BASE_HEX, NULL, 0x0080, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0080, "Capability: Radio Measurement", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_dback,
+ {&hf_tag_neighbor_report_bssid_info_capability_dback,
{"Capability: Delayed Block Ack", "wlan_mgt.nreport.bssid.info.capability.dback",
- FT_UINT16, BASE_HEX, NULL, 0x0100, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0100, "Capability: Delayed Block Ack", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_capability_iback,
+ {&hf_tag_neighbor_report_bssid_info_capability_iback,
{"Capability: Immediate Block Ack", "wlan_mgt.nreport.bssid.info.capability.iback",
- FT_UINT16, BASE_HEX, NULL, 0x0200, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0200, "Capability: Immediate Block Ack", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_mobility_domain,
+ {&hf_tag_neighbor_report_bssid_info_mobility_domain,
{"Mobility Domain", "wlan_mgt.nreport.bssid.info.mobilitydomain",
- FT_UINT16, BASE_HEX, NULL, 0x0400, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0400, "Mobility Domain", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_high_throughput,
+ {&hf_tag_neighbor_report_bssid_info_high_throughput,
{"High Throughput", "wlan_mgt.nreport.bssid.info.hthoughput",
- FT_UINT16, BASE_HEX, NULL, 0x0800, "", HFILL }},
+ FT_UINT16, BASE_HEX, NULL, 0x0800, "High Throughput", HFILL }},
- {&hf_tag_neighbor_report_bssid_info_reserved,
+ {&hf_tag_neighbor_report_bssid_info_reserved,
{"Reserved", "wlan_mgt.nreport.bssid.info.reserved",
- FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT32, BASE_HEX, NULL, 0, "Reserved", HFILL }},
- {&hf_tag_neighbor_report_reg_class,
+ {&hf_tag_neighbor_report_reg_class,
{"Regulatory Class", "wlan_mgt.nreport.regclass",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Regulatory Class", HFILL }},
- {&hf_tag_neighbor_report_channel_number,
+ {&hf_tag_neighbor_report_channel_number,
{"Channel Number", "wlan_mgt.nreport.channumber",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Channel Number", HFILL }},
- {&hf_tag_neighbor_report_phy_type,
+ {&hf_tag_neighbor_report_phy_type,
{"PHY Type", "wlan_mgt.nreport.phytype",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
- /*** End: Neighbor Report Tag - Dustin Johnson ***/
+ FT_UINT8, BASE_HEX, NULL, 0, "PHY Type", HFILL }},
+ /*** End: Neighbor Report Tag - Dustin Johnson ***/
- /*** Begin: Extended Channel Switch Announcement Tag - Dustin Johnson ***/
- {&hf_tag_ext_channel_switch_announcement_switch_mode,
+ /*** Begin: Extended Channel Switch Announcement Tag - Dustin Johnson ***/
+ {&hf_tag_ext_channel_switch_announcement_switch_mode,
{"Channel Switch Mode", "wlan_mgt.extchanswitch.switchmode",
- FT_UINT8, BASE_HEX, VALS (&hf_tag_ext_channel_switch_announcement_switch_mode_flags), 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, VALS (&hf_tag_ext_channel_switch_announcement_switch_mode_flags), 0, "Channel Switch Mode", HFILL }},
- {&hf_tag_ext_channel_switch_announcement_new_reg_class,
+ {&hf_tag_ext_channel_switch_announcement_new_reg_class,
{"New Regulatory Class", "wlan_mgt.extchanswitch.new.regclass",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "New Regulatory Class", HFILL }},
- {&hf_tag_ext_channel_switch_announcement_new_chan_number,
+ {&hf_tag_ext_channel_switch_announcement_new_chan_number,
{"New Channel Number", "wlan_mgt.extchanswitch.new.channumber",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "New Channel Number", HFILL }},
- {&hf_tag_ext_channel_switch_announcement_switch_count,
+ {&hf_tag_ext_channel_switch_announcement_switch_count,
{"Channel Switch Count", "wlan_mgt.extchanswitch.switchcount",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
- /*** End: Extended Channel Switch Announcement Tag - Dustin Johnson ***/
+ FT_UINT8, BASE_HEX, NULL, 0, "Channel Switch Count", HFILL }},
+ /*** End: Extended Channel Switch Announcement Tag - Dustin Johnson ***/
- /*** Begin: Supported Regulatory Classes Tag - Dustin Johnson ***/
- {&hf_tag_supported_reg_classes_current,
+ /*** Begin: Supported Regulatory Classes Tag - Dustin Johnson ***/
+ {&hf_tag_supported_reg_classes_current,
{"Current Regulatory Class", "wlan_mgt.supregclass.current",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Current Regulatory Class", HFILL }},
- {&hf_tag_supported_reg_classes_alternate,
- {"Alternate Regulatory Classes", "",
- FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
- /*** End: Supported Regulatory Classes Tag - Dustin Johnson ***/
+ {&hf_tag_supported_reg_classes_alternate,
+ {"Alternate Regulatory Classes", "wlan_mgt.supregclass.alt",
+ FT_STRING, BASE_NONE, NULL, 0, "Alternate Regulatory Classes", HFILL }},
+ /*** End: Supported Regulatory Classes Tag - Dustin Johnson ***/
{&hf_aironet_ie_type,
{"Aironet IE type", "wlan_mgt.aironet.type",
- FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0, "Aironet IE type", HFILL }},
{&hf_aironet_ie_version,
{"Aironet IE CCX version?", "wlan_mgt.aironet.version",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Aironet IE CCX version?", HFILL }},
{&hf_aironet_ie_data,
{ "Aironet IE data", "wlan_mgt.aironet.data",
- FT_BYTES, BASE_NONE, NULL, 0x0, "", HFILL }},
+ FT_BYTES, BASE_NONE, NULL, 0x0, "Aironet IE data", HFILL }},
{&hf_qbss_version,
{"QBSS Version", "wlan_mgt.qbss.version",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "QBSS Version", HFILL }},
{&hf_qbss_scount,
{"Station Count", "wlan_mgt.qbss.scount",
- FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT16, BASE_DEC, NULL, 0, "Station Count", HFILL }},
{&hf_qbss_cu,
{"Channel Utilization", "wlan_mgt.qbss.cu",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Channel Utilization", HFILL }},
{&hf_qbss_adc,
{"Available Admission Capabilities", "wlan_mgt.qbss.adc",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Available Admission Capabilities", HFILL }},
{&hf_qbss2_cu,
{"Channel Utilization", "wlan_mgt.qbss2.cu",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Channel Utilization", HFILL }},
{&hf_qbss2_gl,
{"G.711 CU Quantum", "wlan_mgt.qbss2.glimit",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "G.711 CU Quantum", HFILL }},
{&hf_qbss2_cal,
{"Call Admission Limit", "wlan_mgt.qbss2.cal",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Call Admission Limit", HFILL }},
{&hf_qbss2_scount,
{"Station Count", "wlan_mgt.qbss2.scount",
- FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT16, BASE_DEC, NULL, 0, "Station Count", HFILL }},
{&hf_aironet_ie_qos_unk1,
- {"Aironet IE QoS unknown1", "wlan_mgt.aironet.qos.unk1",
- FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
+ {"Aironet IE QoS unknown 1", "wlan_mgt.aironet.qos.unk1",
+ FT_UINT8, BASE_HEX, NULL, 0, "Aironet IE QoS unknown 1", HFILL }},
{&hf_aironet_ie_qos_paramset,
{"Aironet IE QoS paramset", "wlan_mgt.aironet.qos.paramset",
- FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+ FT_UINT8, BASE_DEC, NULL, 0, "Aironet IE QoS paramset", HFILL }},
{&hf_aironet_ie_qos_val,
{"Aironet IE QoS valueset", "wlan_mgt.aironet.qos.val",
- FT_BYTES, BASE_NONE, NULL, 0, "", HFILL }},
+ FT_BYTES, BASE_NONE, NULL, 0, "Aironet IE QoS valueset", HFILL }},
{&hf_ts_info,
- {"TS Info", "wlan_mgt.ts_info",
- FT_UINT24, BASE_HEX, NULL, 0, "TS Info field", HFILL }},
+ {"Traffic Stream (TS) Info", "wlan_mgt.ts_info",
+ FT_UINT24, BASE_HEX, NULL, 0, "Traffic Stream (TS) Info field", HFILL }},
{&hf_tsinfo_type,
{"Traffic Type", "wlan_mgt.ts_info.type", FT_UINT8, BASE_DEC,
- VALS (&tsinfo_type), 0, "TS Info Traffic Type", HFILL }},
+ VALS (&tsinfo_type), 0, "Traffic Stream (TS) Info Traffic Type", HFILL }},
{&hf_tsinfo_tsid,
- {"TSID", "wlan_mgt.ts_info.tsid",
- FT_UINT8, BASE_DEC, NULL, 0, "TS Info TSID", HFILL }},
+ {"Traffic Stream ID (TSID)", "wlan_mgt.ts_info.tsid",
+ FT_UINT8, BASE_DEC, NULL, 0, "Traffic Stream ID (TSID) Info TSID", HFILL }},
{&hf_tsinfo_dir,
{"Direction", "wlan_mgt.ts_info.dir", FT_UINT8, BASE_DEC,
- VALS (&tsinfo_direction), 0, "TS Info Direction", HFILL }},
+ VALS (&tsinfo_direction), 0, "Traffic Stream (TS) Info Direction", HFILL }},
{&hf_tsinfo_access,
{"Access Policy", "wlan_mgt.ts_info.dir", FT_UINT8, BASE_DEC,
- VALS (&tsinfo_access), 0, "TS Info Access Policy", HFILL }},
+ VALS (&tsinfo_access), 0, "Traffic Stream (TS) Info Access Policy", HFILL }},
{&hf_tsinfo_agg,
{"Aggregation", "wlan_mgt.ts_info.agg", FT_UINT8, BASE_DEC,
- NULL, 0, "TS Info Access Policy", HFILL }},
+ NULL, 0, "Traffic Stream (TS) Info Access Policy", HFILL }},
{&hf_tsinfo_apsd,
- {"APSD", "wlan_mgt.ts_info.apsd", FT_UINT8, BASE_DEC,
- NULL, 0, "TS Info APSD", HFILL }},
+ {"Automatic Power-Save Delivery (APSD)", "wlan_mgt.ts_info.apsd", FT_UINT8, BASE_DEC,
+ NULL, 0, "Traffic Stream (TS) Info Automatic Power-Save Delivery (APSD)", HFILL }},
{&hf_tsinfo_up,
- {"UP", "wlan_mgt.ts_info.up", FT_UINT8, BASE_DEC,
- VALS (&qos_up), 0, "TS Info User Priority", HFILL }},
+ {"User Priority", "wlan_mgt.ts_info.up", FT_UINT8, BASE_DEC,
+ VALS (&qos_up), 0, "Traffic Stream (TS) Info User Priority", HFILL }},
{&hf_tsinfo_ack,
{"Ack Policy", "wlan_mgt.ts_info.ack", FT_UINT8, BASE_DEC,
- VALS (&ack_policy), 0, "TS Info Ack Policy", HFILL }},
+ VALS (&ack_policy), 0, "Traffic Stream (TS) Info Ack Policy", HFILL }},
{&hf_tsinfo_sched,
{"Schedule", "wlan_mgt.ts_info.sched", FT_UINT8, BASE_DEC,
- NULL, 0, "TS Info Schedule", HFILL }},
+ NULL, 0, "Traffic Stream (TS) Info Schedule", HFILL }},
{&tspec_nor_msdu,
{"Normal MSDU Size", "wlan_mgt.tspec.nor_msdu",
@@ -8583,8 +9456,8 @@ proto_register_ieee80211 (void)
FT_UINT16, BASE_DEC, NULL, 0, "Medium Time", HFILL }},
{&ts_delay,
- {"TS Delay", "wlan_mgt.ts_delay",
- FT_UINT32, BASE_DEC, NULL, 0, "TS Delay", HFILL }},
+ {"Traffic Stream (TS) Delay", "wlan_mgt.ts_delay",
+ FT_UINT32, BASE_DEC, NULL, 0, "Traffic Stream (TS) Delay", HFILL }},
{&hf_class_type,
{"Classifier Type", "wlan_mgt.tclas.class_type", FT_UINT8, BASE_DEC,
@@ -8595,7 +9468,7 @@ proto_register_ieee80211 (void)
NULL, 0, "Classifier Mask", HFILL }},
{&hf_ether_type,
- {"Type", "wlan_mgt.tclas.params.type", FT_UINT8, BASE_DEC,
+ {"Ethernet Type", "wlan_mgt.tclas.params.type", FT_UINT8, BASE_DEC,
NULL, 0, "Classifier Parameters Ethernet Type", HFILL }},
{&hf_tclas_process,
@@ -8620,7 +9493,7 @@ proto_register_ieee80211 (void)
{&hf_action,
{"Action", "wlan_mgt.fixed.action",
- FT_UINT16, BASE_HEX, NULL, 0, "Action", HFILL }},
+ FT_UINT8, BASE_HEX, NULL, 0, "Action", HFILL }},
{&cf_version,
{"IP Version", "wlan_mgt.tclas.params.version",
@@ -8643,8 +9516,8 @@ proto_register_ieee80211 (void)
FT_UINT16, BASE_DEC, NULL, 0, "Destination Port", HFILL }},
{&cf_dscp,
- {"DSCP", "wlan_mgt.tclas.params.dscp",
- FT_UINT8, BASE_HEX, NULL, 0, "IPv4 DSCP Field", HFILL }},
+ {"IPv4 DSCP", "wlan_mgt.tclas.params.dscp",
+ FT_UINT8, BASE_HEX, NULL, 0, "IPv4 Differentiated Services Code Point (DSCP) Field", HFILL }},
{&cf_protocol,
{"Protocol", "wlan_mgt.tclas.params.protocol",
@@ -8743,9 +9616,16 @@ proto_register_ieee80211 (void)
&ett_ht_cap_tree,
&ett_ff_ba_param_tree,
&ett_ff_qos_info,
- &ett_ff_sm_pwr_save,
+ &ett_ff_sm_pwr_save,
+ &ett_ff_psmp_param_set,
+ &ett_ff_mimo_cntrl,
+ &ett_ff_ant_sel,
+ &ett_ff_chan_switch_announce,
+ &ett_ff_ht_info,
+ &ett_ff_psmp_sta_info,
&ett_ff_delba_param_tree,
&ett_ff_ba_ssc_tree,
+ &ett_mimo_report,
&ett_cntrl_wrapper_fc,
&ett_ht_info_delimiter1_tree,
&ett_ht_info_delimiter2_tree,