Skip to content

Commit de0c2cd

Browse files
committed
wifi: iwlwifi: mvm: limit EHT 320 MHz MCS for STEP URM
If the STEP (the interface between MAC and PHY) is in URM (a lower speed mode) then we cannot use 320 MHz MCS > 9. Therefore, limit the MCS in our capabilities in this case. Note that this also limits the TX/rate scaling since that takes both TX and RX capabilities into account. Signed-off-by: Johannes Berg <[email protected]> Reviewed-by: Gregory Greenman <[email protected]> Signed-off-by: Miri Korenblit <[email protected]> Link: https://msgid.link/20240123200528.02bae683b7fc.Id5efbb71d45da02c8c4e211d20396637ddd44da8@changeid Signed-off-by: Johannes Berg <[email protected]>
1 parent 84ec2d2 commit de0c2cd

File tree

4 files changed

+16
-1
lines changed

4 files changed

+16
-1
lines changed

drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,11 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans,
10611061
~IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ;
10621062
}
10631063

1064+
if (trans->step_urm) {
1065+
iftype_data->eht_cap.eht_mcs_nss_supp.bw._320.rx_tx_mcs11_max_nss = 0;
1066+
iftype_data->eht_cap.eht_mcs_nss_supp.bw._320.rx_tx_mcs13_max_nss = 0;
1067+
}
1068+
10641069
if (trans->no_160)
10651070
iftype_data->he_cap.he_cap_elem.phy_cap_info[0] &=
10661071
~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;

drivers/net/wireless/intel/iwlwifi/iwl-prph.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ enum {
374374
#define CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR 0xA29938
375375
#define CNVI_SCU_SEQ_DATA_DW9 0xA27488
376376

377+
#define CNVI_PMU_STEP_FLOW 0xA2D588
378+
#define CNVI_PMU_STEP_FLOW_FORCE_URM BIT(2)
379+
377380
#define PREG_AUX_BUS_WPROT_0 0xA04CC0
378381

379382
/* device family 9000 WPROT register */

drivers/net/wireless/intel/iwlwifi/iwl-trans.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,7 @@ struct iwl_trans_txqs {
10701070
* @invalid_tx_cmd: invalid TX command buffer
10711071
* @reduced_cap_sku: reduced capability supported SKU
10721072
* @no_160: device not supporting 160 MHz
1073+
* @step_urm: STEP is in URM, no support for MCS>9 in 320 MHz
10731074
*/
10741075
struct iwl_trans {
10751076
bool csme_own;
@@ -1093,7 +1094,8 @@ struct iwl_trans {
10931094
char hw_id_str[52];
10941095
u32 sku_id[3];
10951096
bool reduced_cap_sku;
1096-
u8 no_160;
1097+
u8 no_160:1, step_urm:1;
1098+
10971099
u8 rx_mpdu_cmd, rx_mpdu_cmd_hdr_size;
10981100

10991101
bool pm_support;

drivers/net/wireless/intel/iwlwifi/mvm/fw.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,11 @@ static int iwl_run_unified_mvm_ucode(struct iwl_mvm *mvm)
677677
iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
678678
NULL);
679679

680+
if (mvm->trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_BZ)
681+
mvm->trans->step_urm = !!(iwl_read_umac_prph(mvm->trans,
682+
CNVI_PMU_STEP_FLOW) &
683+
CNVI_PMU_STEP_FLOW_FORCE_URM);
684+
680685
/* Send init config command to mark that we are sending NVM access
681686
* commands
682687
*/

0 commit comments

Comments
 (0)