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
(何以解憂?唯有杜康。--曹操)