]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: mld: stop supporting MAC_PM_POWER_TABLE version 1
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 12 May 2026 05:23:05 +0000 (08:23 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 26 May 2026 12:17:10 +0000 (15:17 +0300)
The oldest core that iwmld loads is now 101, which supports version 2,
so remove version 1.
This allows to remove the smps workaround.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Link: https://patch.msgid.link/20260512082114.e42cff396ea8.I9175bf4aaba0c846fbea54c9bede4d18ad1c252b@changeid
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
drivers/net/wireless/intel/iwlwifi/mld/iface.h
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c
drivers/net/wireless/intel/iwlwifi/mld/power.c

index 147ff6787ed9d12db0ecf3b556bda11b6707c505..71c794204475033c3f8681ce6e4294d074dc9657 100644 (file)
@@ -138,7 +138,6 @@ struct iwl_mld_emlsr {
  * @beacon_inject_active: indicates an active debugfs beacon ie injection
  * @low_latency_causes: bit flags, indicating the causes for low-latency,
  *     see @iwl_mld_low_latency_cause.
- * @ps_disabled: indicates that PS is disabled for this interface
  * @last_link_activation_time: last time a link was activated, for
  *     deferring MLO scans (to make them more reliable)
  * @mld: pointer to the mld structure.
@@ -171,7 +170,6 @@ struct iwl_mld_vif {
                bool beacon_inject_active;
 #endif
                u8 low_latency_causes;
-               bool ps_disabled;
                time64_t last_link_activation_time;
        );
        /* And here fields that survive a fw restart */
index 8856f96a976039769ccb44f486781a3be20cf323..f37a365a87a48190433c41e8ee73c666edfca912 100644 (file)
@@ -1368,28 +1368,6 @@ iwl_mld_mac80211_link_info_changed(struct ieee80211_hw *hw,
                iwl_mld_set_tx_power(mld, link_conf, link_conf->txpower);
 }
 
-static void
-iwl_mld_smps_workaround(struct iwl_mld *mld, struct ieee80211_vif *vif, bool enable)
-{
-       struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif);
-       bool workaround_required =
-               iwl_fw_lookup_cmd_ver(mld->fw, MAC_PM_POWER_TABLE, 0) < 2;
-
-       if (!workaround_required)
-               return;
-
-       /* Send the device-level power commands since the
-        * firmware checks the POWER_TABLE_CMD's POWER_SAVE_EN bit to
-        * determine SMPS mode.
-        */
-       if (mld_vif->ps_disabled == !enable)
-               return;
-
-       mld_vif->ps_disabled = !enable;
-
-       iwl_mld_update_device_power(mld, false);
-}
-
 static
 void iwl_mld_mac80211_vif_cfg_changed(struct ieee80211_hw *hw,
                                      struct ieee80211_vif *vif,
@@ -1427,10 +1405,8 @@ void iwl_mld_mac80211_vif_cfg_changed(struct ieee80211_hw *hw,
                }
        }
 
-       if (changes & BSS_CHANGED_PS) {
-               iwl_mld_smps_workaround(mld, vif, vif->cfg.ps);
+       if (changes & BSS_CHANGED_PS)
                iwl_mld_update_mac_power(mld, vif, false);
-       }
 
        /* TODO: task=MLO BSS_CHANGED_MLD_VALID_LINKS/CHANGED_MLD_TTLM */
 }
@@ -1837,7 +1813,6 @@ static int iwl_mld_move_sta_state_up(struct iwl_mld *mld,
                                                    FW_CTXT_ACTION_MODIFY);
                        if (ret)
                                return ret;
-                       iwl_mld_smps_workaround(mld, vif, vif->cfg.ps);
                }
 
                /* MFP is set by default before the station is authorized.
@@ -1882,7 +1857,6 @@ static int iwl_mld_move_sta_state_down(struct iwl_mld *mld,
                                                  &mld_vif->mlo_scan_start_wk);
 
                        iwl_mld_reset_cca_40mhz_workaround(mld, vif);
-                       iwl_mld_smps_workaround(mld, vif, true);
                }
 
                /* once we move into assoc state, need to update the FW to
index 49b0d9f8f865d9ec080efe415d3abd904846a8f6..fe71da8b9c8925d315e48d1cf575660bf74e0728 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2024-2025 Intel Corporation
+ * Copyright (C) 2024-2026 Intel Corporation
  */
 #include <net/mac80211.h>
 
 #include "link.h"
 #include "constants.h"
 
-static void iwl_mld_vif_ps_iterator(void *data, u8 *mac,
-                                   struct ieee80211_vif *vif)
-{
-       bool *ps_enable = (bool *)data;
-       struct iwl_mld_vif *mld_vif = iwl_mld_vif_from_mac80211(vif);
-
-       if (vif->type != NL80211_IFTYPE_STATION)
-               return;
-
-       *ps_enable &= !mld_vif->ps_disabled;
-}
-
 int iwl_mld_update_device_power(struct iwl_mld *mld, bool d3)
 {
        struct iwl_device_power_cmd cmd = {};
-       bool enable_ps = false;
 
-       if (iwlmld_mod_params.power_scheme != IWL_POWER_SCHEME_CAM) {
-               enable_ps = true;
-
-               /* Disable power save if any STA interface has
-                * power save turned off
-                */
-               ieee80211_iterate_active_interfaces_mtx(mld->hw,
-                                                       IEEE80211_IFACE_ITER_NORMAL,
-                                                       iwl_mld_vif_ps_iterator,
-                                                       &enable_ps);
-       }
-
-       if (enable_ps)
+       if (iwlmld_mod_params.power_scheme != IWL_POWER_SCHEME_CAM)
                cmd.flags |=
                        cpu_to_le16(DEVICE_POWER_FLAGS_POWER_SAVE_ENA_MSK);
 
@@ -252,9 +227,7 @@ static void iwl_mld_power_build_cmd(struct iwl_mld *mld,
                return;
 
        cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK);
-
-       if (iwl_fw_lookup_cmd_ver(mld->fw, MAC_PM_POWER_TABLE, 0) >= 2)
-               cmd->flags |= cpu_to_le16(POWER_FLAGS_ENABLE_SMPS_MSK);
+       cmd->flags |= cpu_to_le16(POWER_FLAGS_ENABLE_SMPS_MSK);
 
        /* firmware supports LPRX for beacons at rate 1 Mbps or 6 Mbps only */
        if (link_conf->beacon_rate &&