diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2016-12-24 19:19:53 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-12-25 01:37:32 +0000 |
commit | b58c98b269fcc69683e163a1a09e63dadf2e7d96 (patch) | |
tree | e4bee739f6f0d392443ca883bafc464b65e9eb51 | |
parent | 4515a7eb8a20eed3d6ff8e1ba9ed17069a2feec0 (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>
-rw-r--r-- | epan/dissectors/packet-ieee80211.c | 54 |
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, |