#define                IEEE80211_HT_MCS_TX_MAX_STREAMS 4
 #define IEEE80211_HT_MCS_TX_UNEQUAL_MODULATION 0x10
 
+#define IEEE80211_HT_MCS_CHAINS(mcs) ((mcs) == 32 ? 1 : (1 + ((mcs) >> 3)))
+
 /*
  * 802.11n D5.0 20.3.5 / 20.6 says:
  * - indices 0 to 7 and 32 are single spatial stream
 
                        rate_found = true;
                        break;
 
+               case IEEE80211_RADIOTAP_ANTENNA:
+                       /* this can appear multiple times, keep a bitmap */
+                       info->control.antennas |= BIT(*iterator.this_arg);
+                       break;
+
                case IEEE80211_RADIOTAP_DATA_RETRIES:
                        rate_retries = *iterator.this_arg;
                        break;
                }
 
                if (rate_flags & IEEE80211_TX_RC_MCS) {
+                       /* reset antennas if not enough */
+                       if (IEEE80211_HT_MCS_CHAINS(rate) >
+                                       hweight8(info->control.antennas))
+                               info->control.antennas = 0;
+
                        info->control.rates[0].idx = rate;
                } else if (rate_flags & IEEE80211_TX_RC_VHT_MCS) {
+                       /* reset antennas if not enough */
+                       if (vht_nss > hweight8(info->control.antennas))
+                               info->control.antennas = 0;
+
                        ieee80211_rate_set_vht(info->control.rates, vht_mcs,
                                               vht_nss);
                } else if (sband) {