static bool
 ath11k_mac_bitrate_mask_get_single_nss(struct ath11k *ar,
+                                      struct ath11k_vif *arvif,
                                       enum nl80211_band band,
                                       const struct cfg80211_bitrate_mask *mask,
                                       int *nss)
 {
        struct ieee80211_supported_band *sband = &ar->mac.sbands[band];
        u16 vht_mcs_map = le16_to_cpu(sband->vht_cap.vht_mcs.tx_mcs_map);
+       const struct ieee80211_sta_he_cap *he_cap;
        u16 he_mcs_map = 0;
        u8 ht_nss_mask = 0;
        u8 vht_nss_mask = 0;
                        return false;
        }
 
-       he_mcs_map = le16_to_cpu(ath11k_mac_get_tx_mcs_map(&sband->iftype_data->he_cap));
+       he_cap = ieee80211_get_he_iftype_cap_vif(sband, arvif->vif);
+       if (!he_cap)
+               return false;
+
+       he_mcs_map = le16_to_cpu(ath11k_mac_get_tx_mcs_map(he_cap));
 
        for (i = 0; i < ARRAY_SIZE(mask->control[band].he_mcs); i++) {
                if (mask->control[band].he_mcs[i] == 0)
                ieee80211_iterate_stations_atomic(ar->hw,
                                                  ath11k_mac_disable_peer_fixed_rate,
                                                  arvif);
-       } else if (ath11k_mac_bitrate_mask_get_single_nss(ar, band, mask,
+       } else if (ath11k_mac_bitrate_mask_get_single_nss(ar, arvif, band, mask,
                                                          &single_nss)) {
                rate = WMI_FIXED_RATE_NONE;
                nss = single_nss;