]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: mvm: prepare the tx_power handling to be per-link
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 8 Oct 2024 04:25:17 +0000 (07:25 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Oct 2024 14:43:42 +0000 (16:43 +0200)
We still need the firmware to align

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20241008072037.317f44628eb9.I3f6a735181c6c20e805b61e4f9d2056b7f90d7ea@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h

index 99e017f365e05d330032e104bc95e1204b44dc17..3fefb0696248d33a2b731458072933106a02796a 100644 (file)
@@ -1466,15 +1466,16 @@ struct iwl_mvm_phy_ctxt *iwl_mvm_get_free_phy_ctxt(struct iwl_mvm *mvm)
        return NULL;
 }
 
-int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
+int iwl_mvm_set_tx_power(struct iwl_mvm *mvm,
+                        struct ieee80211_bss_conf *link_conf,
                         s16 tx_power)
 {
        u32 cmd_id = REDUCE_TX_POWER_CMD;
+       u32 mac_id = iwl_mvm_vif_from_mac80211(link_conf->vif)->id;
        int len;
        struct iwl_dev_tx_power_cmd_v3_v8 cmd = {
                .common.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_MAC),
-               .common.mac_context_id =
-                       cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id),
+               .common.mac_context_id = cpu_to_le32(mac_id),
        };
        struct iwl_dev_tx_power_cmd cmd_v9_v10;
        u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw, cmd_id, 3);
@@ -1487,8 +1488,7 @@ int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
        if (cmd_ver > 8) {
                /* Those fields sit on the same place for v9 and v10 */
                cmd_v9_v10.common.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_MAC);
-               cmd_v9_v10.common.mac_context_id =
-                       cpu_to_le32(iwl_mvm_vif_from_mac80211(vif)->id);
+               cmd_v9_v10.common.mac_context_id = cpu_to_le32(mac_id);
                cmd_v9_v10.common.pwr_restriction = cpu_to_le16(u_tx_power);
                cmd_data = &cmd_v9_v10;
        }
@@ -3323,7 +3323,7 @@ static void iwl_mvm_bss_info_changed(struct ieee80211_hw *hw,
        if (changes & BSS_CHANGED_TXPOWER) {
                IWL_DEBUG_CALIB(mvm, "Changing TX Power to %d dBm\n",
                                bss_conf->txpower);
-               iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower);
+               iwl_mvm_set_tx_power(mvm, bss_conf, bss_conf->txpower);
        }
 }
 
index 3947f6a0e0cfd84549d11c8ea7f6b2bccf753d70..9aa08d289680df84585405763991b49326b78ff3 100644 (file)
@@ -1038,7 +1038,7 @@ static void iwl_mvm_mld_link_info_changed(struct ieee80211_hw *hw,
        if (changes & BSS_CHANGED_TXPOWER) {
                IWL_DEBUG_CALIB(mvm, "Changing TX Power to %d dBm\n",
                                link_conf->txpower);
-               iwl_mvm_set_tx_power(mvm, vif, link_conf->txpower);
+               iwl_mvm_set_tx_power(mvm, link_conf, link_conf->txpower);
        }
 }
 
index 3f7b6465130a8234a9353d661a3946bb1b163085..ff5d720b731413d772fdf88fd030fb44c904ace1 100644 (file)
@@ -2989,7 +2989,8 @@ void iwl_mvm_abort_pmsr(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 bool iwl_mvm_have_links_same_channel(struct iwl_mvm_vif *vif1,
                                     struct iwl_mvm_vif *vif2);
 bool iwl_mvm_vif_is_active(struct iwl_mvm_vif *mvmvif);
-int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
+int iwl_mvm_set_tx_power(struct iwl_mvm *mvm,
+                        struct ieee80211_bss_conf *bss_conf,
                         s16 tx_power);
 int iwl_mvm_set_hw_timestamp(struct ieee80211_hw *hw,
                             struct ieee80211_vif *vif,