Wireshark-dev: Re: [Wireshark-dev] Patch: Prepare for some cleanups of 802.11ad
From: Guy Harris <[email protected]>
Date: Sat, 22 Aug 2015 16:51:27 -0700
On Aug 22, 2015, at 7:46 AM, Richard Sharpe <[email protected]> wrote:

> diff --git a/wiretap/wtap.h b/wiretap/wtap.h
> index 8de0c30..11d460d 100644
> --- a/wiretap/wtap.h
> +++ b/wiretap/wtap.h
> @@ -571,6 +571,7 @@ struct p2p_phdr {
> #define PHDR_802_11_PHY_11G            6 /* 802.11g */
> #define PHDR_802_11_PHY_11N            7 /* 802.11n */
> #define PHDR_802_11_PHY_11AC           8 /* 802.11ac */
> +#define PHDR_802_11_PHY_11AD           9 /* 802.11ad */

	...

> +/*
>  * 802.11ac.
>  */
> struct ieee_802_11ac {

I would also add 

/*
 * 802.11ad.
 */
struct ieee_802_11ad {
    guint32  presence_flags; /* Which of this information is present? */
    guint8   mcs;            /* MCS index */
};
    
/*
 * Presence flags.
 */
#define PHDR_802_11AD_HAS_MCS_INDEX     0x00000001 /* mcs */

and add

        struct ieee_802_11ad info_11ad;

to the phy_info union in struct ieee_802_11_phdr, and, if you decide a frame is 11ad, fill in *that* union, with the MCS index if you have an MCS field.

Then, in epan/dissectors/packet-ieee80211-radio.c, have it get the MCS index out of that union, if the PHY is PHDR_802_11_PHY_11AD, and interpret the value as per Clause 21.