Wireshark-dev: [Wireshark-dev] Some more proposed changes for the ieee802.11 family of dissecto
Hi folks,
Here are some possible changes. They seemingly raise more questions
than they answer at this stage, so they are for comments.
diff --git a/epan/dissectors/packet-ieee80211-radio.c
b/epan/dissectors/packet-ieee80211-radio.c
index 7239f8b..2bbb05b 100644
--- a/epan/dissectors/packet-ieee80211-radio.c
+++ b/epan/dissectors/packet-ieee80211-radio.c
@@ -87,6 +87,7 @@ static const value_string phy_vals[] = {
{ PHDR_802_11_PHY_11G, "802.11g" },
{ PHDR_802_11_PHY_11N, "802.11n" },
{ PHDR_802_11_PHY_11AC, "802.11ac" },
+ { PHDR_802_11_PHY_11AD, "802.11ad" },
{ 0, NULL }
};
diff --git a/epan/dissectors/packet-ieee80211-radiotap.c
b/epan/dissectors/packet-ieee80211-radiotap.c
index d4956ed..36b64b9 100644
--- a/epan/dissectors/packet-ieee80211-radiotap.c
+++ b/epan/dissectors/packet-ieee80211-radiotap.c
@@ -1345,6 +1345,10 @@ dissect_radiotap(tvbuff_t * tvb, packet_info *
pinfo, proto_tree * tree)
/*
* If there's actually any data here, not an
* empty field, this is 802.11n.
+ *
+ * However, some 802.11ad captures also use this
+ * field, so we also check the Channel frequency
+ * later to see if we should override the PHY setting.
*/
if (mcs_known != 0) {
phdr.phy = PHDR_802_11_PHY_11N;
@@ -1746,6 +1750,15 @@ dissect_radiotap(tvbuff_t * tvb, packet_info *
pinfo, proto_tree * tree)
proto_item_append_text(ti, " (malformed)");
}
+ /*
+ * All the 802.11ad captures I have seen set the Frequency to a DMG
+ * frequency and then insert an MCS. For the moment, change the PHY
+ * to the 802.11ad PHY symbol we have.
+ */
+ if IS_80211AD(phdr.frequency) {
+ phdr.phy = PHDR_802_11_PHY_11AD;
+ }
+
hand_off_to_80211:
/* Grab the rest of the frame. */
next_tvb = tvb_new_subset_remaining(tvb, length);
--
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)