aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2016-12-24 19:19:53 +0100
committerMichael Mann <mmann78@netscape.net>2016-12-25 01:37:32 +0000
commitb58c98b269fcc69683e163a1a09e63dadf2e7d96 (patch)
treee4bee739f6f0d392443ca883bafc464b65e9eb51 /epan/dissectors
parent4515a7eb8a20eed3d6ff8e1ba9ed17069a2feec0 (diff)
802.11(ad): split Sector Sweep Feedback in 2
one from ISS and other to ISS Add also reserved field Issue reported by Hany ASSASA Bug:13244 Change-Id: Ib20cf6ae455664b87ea3470ebb6d5386a97b0f48 Reviewed-on: https://code.wireshark.org/review/19420 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-ieee80211.c54
1 files changed, 51 insertions, 3 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index be9889e884..206f117119 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -4561,6 +4561,11 @@ static int hf_ieee80211_ff_sswf = -1;
static int hf_ieee80211_ff_sswf_num_rx_dmg_ants = -1;
static int hf_ieee80211_ff_sswf_poll_required = -1;
static int hf_ieee80211_ff_sswf_total_sectors = -1;
+static int hf_ieee80211_ff_sswf_reserved1 = -1;
+static int hf_ieee80211_ff_sswf_reserved2 = -1;
+static int hf_ieee80211_ff_sswf_sector_select = -1;
+static int hf_ieee80211_ff_sswf_dmg_antenna_select = -1;
+static int hf_ieee80211_ff_sswf_snr_report = -1;
static int hf_ieee80211_ff_brp = -1;
static int hf_ieee80211_ff_brp_L_RX = -1;
static int hf_ieee80211_ff_brp_TX_TRN_REQ = -1;
@@ -8602,14 +8607,31 @@ add_ff_BRP_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int
}
static guint
-add_ff_sector_sweep_feedback(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset)
+add_ff_sector_sweep_feedback_from_iss(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset)
{
proto_item *sswf_item = proto_tree_add_item(tree, hf_ieee80211_ff_sswf, tvb, offset, 3, ENC_LITTLE_ENDIAN);
proto_tree *sswf_tree = proto_item_add_subtree(sswf_item, ett_sswf_tree);
proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_total_sectors, tvb, offset, 3, ENC_LITTLE_ENDIAN);
proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_num_rx_dmg_ants, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_reserved1, tvb, offset, 3, ENC_LITTLE_ENDIAN);
proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_poll_required, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_reserved2, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+
+ return 3;
+}
+
+static guint
+add_ff_sector_sweep_feedback_to_iss(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, int offset)
+{
+ proto_item *sswf_item = proto_tree_add_item(tree, hf_ieee80211_ff_sswf, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree *sswf_tree = proto_item_add_subtree(sswf_item, ett_sswf_tree);
+
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_sector_select, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_dmg_antenna_select, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_snr_report, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_poll_required, tvb, offset, 3, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(sswf_tree, hf_ieee80211_ff_sswf_reserved2, tvb, offset, 3, ENC_LITTLE_ENDIAN);
return 3;
}
@@ -17425,12 +17447,12 @@ dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
case CTRL_SSW: {
offset += add_ff_sector_sweep(hdr_tree, tvb, pinfo, offset);
/* offset += commented to avoid Clang warnings*/
- add_ff_sector_sweep_feedback(hdr_tree, tvb, pinfo, offset);
+ add_ff_sector_sweep_feedback_from_iss(hdr_tree, tvb, pinfo, offset);
break;
}
case CTRL_SSW_ACK:
case CTRL_SSW_FEEDBACK: {
- offset += add_ff_sector_sweep_feedback(hdr_tree, tvb, pinfo, offset);
+ offset += add_ff_sector_sweep_feedback_to_iss(hdr_tree, tvb, pinfo, offset);
offset += add_ff_BRP_request(hdr_tree, tvb, pinfo, offset);
/* offset += commented to avoid Clang warnings*/
add_ff_beamformed_link(hdr_tree, tvb, pinfo, offset);
@@ -19813,6 +19835,32 @@ proto_register_ieee80211(void)
FT_BOOLEAN, 24, NULL, 0x010000,
NULL, HFILL }},
+ {&hf_ieee80211_ff_sswf_reserved1,
+ {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
+ FT_UINT24, BASE_HEX, NULL, 0x00F800,
+ NULL, HFILL }},
+
+ {&hf_ieee80211_ff_sswf_reserved2,
+ {"Sector Sweep Feedback Reserved", "wlan.sswf.reserved",
+ FT_UINT24, BASE_HEX, NULL, 0xFE0000,
+ NULL, HFILL }},
+
+ {&hf_ieee80211_ff_sswf_sector_select,
+ {"Sector Sweep Feedback Sector Select", "wlan.sswf.sector_select",
+ FT_UINT24, BASE_DEC, NULL, 0x00003F,
+ NULL, HFILL }},
+
+ {&hf_ieee80211_ff_sswf_dmg_antenna_select,
+ {"Sector Sweep Feedback DMG Antenna Select", "wlan.sswf.dmg_antenna_select",
+ FT_UINT24, BASE_DEC, NULL, 0x0001C0,
+ NULL, HFILL }},
+
+ {&hf_ieee80211_ff_sswf_snr_report,
+ {"Sector Sweep Feedback SNR Report", "wlan.sswf.snr_report",
+ FT_UINT24, BASE_DEC, NULL, 0x00FE00,
+ NULL, HFILL }},
+
+
{&hf_ieee80211_ff_brp,
{"BRP Request", "wlan.brp",
FT_UINT32, BASE_HEX, NULL, 0,