wifi: iwlwifi: mvm: support PHY context version 6
authorJohannes Berg <johannes.berg@intel.com>
Sun, 18 Feb 2024 17:51:44 +0000 (19:51 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 21 Feb 2024 14:19:04 +0000 (15:19 +0100)
Fill the new puncture mask in the PHY context command if
supported. In this case, also don't send it in the link
context command.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240218194912.16d9f5fc41df.I9eeb55787d8483f820f5790e8874761f598da314@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/link.c
drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c

index 129eefcc45d69caadf7383808e50e46055634e3c..f13f13e6b71af17f1b8ca3ac97a40ba3e236b838 100644 (file)
@@ -204,7 +204,8 @@ int iwl_mvm_link_changed(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
                        def = iwl_mvm_chanctx_def(mvm, ctx);
 
                if (iwlwifi_mod_params.disable_11be ||
-                   !link_conf->eht_support || !def)
+                   !link_conf->eht_support || !def ||
+                   iwl_fw_lookup_cmd_ver(mvm->fw, PHY_CONTEXT_CMD, 1) >= 6)
                        changes &= ~LINK_CONTEXT_MODIFY_EHT_PARAMS;
                else
                        cmd.puncture_mask = cpu_to_le16(def->punctured);
index 5db44514d0253370e4ce59e20aa2b778bcc6b64c..ce264b386029caa84df65354e17299a9219a237c 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2012-2014, 2018-2023 Intel Corporation
+ * Copyright (C) 2012-2014, 2018-2024 Intel Corporation
  * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
  * Copyright (C) 2017 Intel Deutschland GmbH
  */
@@ -224,6 +224,9 @@ static int iwl_mvm_phy_ctxt_apply(struct iwl_mvm *mvm,
                        cmd.sbb_ctrl_channel_loc = iwl_mvm_get_ctrl_pos(ap);
                }
 
+               if (ver == 6)
+                       cmd.puncture_mask = cpu_to_le16(chandef->punctured);
+
                ret = iwl_mvm_send_cmd_pdu(mvm, PHY_CONTEXT_CMD,
                                           0, sizeof(cmd), &cmd);
        } else if (ver < 3) {