if (!conf || !link_sta || !mvmvif->link[link_id]->phy_ctxt)
                        continue;
 
-               iwl_mvm_rs_rate_init(mvm, sta, conf, link_sta,
+               iwl_mvm_rs_rate_init(mvm, vif, sta, conf, link_sta,
                                     mvmvif->link[link_id]->phy_ctxt->channel->band,
                                     update);
        }
 
 }
 
 static void
-rs_fw_eht_set_enabled_rates(const struct ieee80211_link_sta *link_sta,
+rs_fw_eht_set_enabled_rates(struct ieee80211_vif *vif,
+                           const struct ieee80211_link_sta *link_sta,
                            struct ieee80211_supported_band *sband,
                            struct iwl_tlc_config_cmd_v4 *cmd)
 {
        struct ieee80211_eht_mcs_nss_supp_20mhz_only mcs_tx_20;
 
        /* peer is 20Mhz only */
-       if (!(link_sta->he_cap.he_cap_elem.phy_cap_info[0] &
+       if (vif->type == NL80211_IFTYPE_AP &&
+           !(link_sta->he_cap.he_cap_elem.phy_cap_info[0] &
              IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_MASK_ALL)) {
                mcs_rx_20 = eht_rx_mcs->only_20mhz;
        } else {
                       sizeof(cmd->ht_rates[IWL_TLC_NSS_2]));
 }
 
-static void rs_fw_set_supp_rates(struct ieee80211_link_sta *link_sta,
+static void rs_fw_set_supp_rates(struct ieee80211_vif *vif,
+                                struct ieee80211_link_sta *link_sta,
                                 struct ieee80211_supported_band *sband,
                                 struct iwl_tlc_config_cmd_v4 *cmd)
 {
        /* HT/VHT rates */
        if (link_sta->eht_cap.has_eht) {
                cmd->mode = IWL_TLC_MNG_MODE_EHT;
-               rs_fw_eht_set_enabled_rates(link_sta, sband, cmd);
+               rs_fw_eht_set_enabled_rates(vif, link_sta, sband, cmd);
        } else if (he_cap->has_he) {
                cmd->mode = IWL_TLC_MNG_MODE_HE;
                rs_fw_he_set_enabled_rates(link_sta, sband, cmd);
        return 0;
 }
 
-void rs_fw_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
+void rs_fw_rate_init(struct iwl_mvm *mvm,
+                    struct ieee80211_vif *vif,
+                    struct ieee80211_sta *sta,
                     struct ieee80211_bss_conf *link_conf,
                     struct ieee80211_link_sta *link_sta,
                     enum nl80211_band band, bool update)
 #ifdef CONFIG_IWLWIFI_DEBUGFS
        iwl_mvm_reset_frame_stats(mvm);
 #endif
-       rs_fw_set_supp_rates(link_sta, sband, &cfg_cmd);
+       rs_fw_set_supp_rates(vif, link_sta, sband, &cfg_cmd);
 
        /*
         * since TLC offload works with one mode we can assume
 
        for (tid = 0; tid < IWL_MAX_TID_COUNT; tid++)
                ieee80211_stop_tx_ba_session(sta, tid);
 
-       iwl_mvm_rs_rate_init(mvm, sta,
+       iwl_mvm_rs_rate_init(mvm, mvmsta->vif, sta,
                             &mvmsta->vif->bss_conf, &sta->deflink,
                             sband->band, true);
 }
        .capa = RATE_CTRL_CAPA_VHT_EXT_NSS_BW,
 };
 
-void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
+void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm,
+                         struct ieee80211_vif *vif,
+                         struct ieee80211_sta *sta,
                          struct ieee80211_bss_conf *link_conf,
                          struct ieee80211_link_sta *link_sta,
                          enum nl80211_band band, bool update)
 {
        if (iwl_mvm_has_tlc_offload(mvm)) {
-               rs_fw_rate_init(mvm, sta, link_conf, link_sta, band, update);
+               rs_fw_rate_init(mvm, vif, sta, link_conf,
+                               link_sta, band, update);
        } else {
                struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
 
 
                                   ((_c) << RS_DRV_DATA_LQ_COLOR_POS)))
 
 /* Initialize station's rate scaling information after adding station */
-void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
+void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm,
+                         struct ieee80211_vif *vif,
+                         struct ieee80211_sta *sta,
                          struct ieee80211_bss_conf *link_conf,
                          struct ieee80211_link_sta *link_sta,
                          enum nl80211_band band, bool update);
 #endif
 
 void iwl_mvm_rs_add_sta(struct iwl_mvm *mvm, struct iwl_mvm_sta *mvmsta);
-void rs_fw_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
+void rs_fw_rate_init(struct iwl_mvm *mvm,
+                    struct ieee80211_vif *vif,
+                    struct ieee80211_sta *sta,
                     struct ieee80211_bss_conf *link_conf,
                     struct ieee80211_link_sta *link_sta,
                     enum nl80211_band band, bool update);