* @RX_FLAG_SHORT_GI: Short guard interval was used
  * @RX_FLAG_NO_SIGNAL_VAL: The signal strength value is not present.
  *     Valid only for data frames (mainly A-MPDU)
+ * @RX_FLAG_HT_GF: This frame was received in a HT-greenfield transmission, if
+ *     the driver fills this value it should add %IEEE80211_RADIOTAP_MCS_HAVE_FMT
+ *     to hw.radiotap_mcs_details to advertise that fact
  */
 enum mac80211_rx_flags {
        RX_FLAG_MMIC_ERROR      = 1<<0,
        RX_FLAG_40MHZ           = 1<<10,
        RX_FLAG_SHORT_GI        = 1<<11,
        RX_FLAG_NO_SIGNAL_VAL   = 1<<12,
+       RX_FLAG_HT_GF           = 1<<13,
 };
 
 /**
  *
  * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX
  *     (if %IEEE80211_HW_QUEUE_CONTROL is set)
+ *
+ * @radiotap_mcs_details: lists which MCS information can the HW
+ *     reports, by default it is set to _MCS, _GI and _BW but doesn't
+ *     include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only
+ *     adding _BW is supported today.
  */
 struct ieee80211_hw {
        struct ieee80211_conf conf;
        u8 max_rx_aggregation_subframes;
        u8 max_tx_aggregation_subframes;
        u8 offchannel_tx_hw_queue;
+       u8 radiotap_mcs_details;
 };
 
 /**
 
        local->hw.offchannel_tx_hw_queue = IEEE80211_INVAL_HW_QUEUE;
        local->hw.conf.long_frame_max_tx_count = wiphy->retry_long;
        local->hw.conf.short_frame_max_tx_count = wiphy->retry_short;
+       local->hw.radiotap_mcs_details = IEEE80211_RADIOTAP_MCS_HAVE_MCS |
+                                        IEEE80211_RADIOTAP_MCS_HAVE_GI |
+                                        IEEE80211_RADIOTAP_MCS_HAVE_BW;
        local->user_power_level = -1;
        wiphy->ht_capa_mod_mask = &mac80211_ht_capa_mod_mask;
 
 
 
        if (status->flag & RX_FLAG_HT) {
                rthdr->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_MCS);
-               *pos++ = IEEE80211_RADIOTAP_MCS_HAVE_MCS |
-                        IEEE80211_RADIOTAP_MCS_HAVE_GI |
-                        IEEE80211_RADIOTAP_MCS_HAVE_BW;
+               *pos++ = local->hw.radiotap_mcs_details;
                *pos = 0;
                if (status->flag & RX_FLAG_SHORT_GI)
                        *pos |= IEEE80211_RADIOTAP_MCS_SGI;
                if (status->flag & RX_FLAG_40MHZ)
                        *pos |= IEEE80211_RADIOTAP_MCS_BW_40;
+               if (status->flag & RX_FLAG_HT_GF)
+                       *pos |= IEEE80211_RADIOTAP_MCS_FMT_GF;
                pos++;
                *pos++ = status->rate_idx;
        }