summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYedidya Benshimol <yedidya.ben.shimol@intel.com>2024-01-22 11:46:35 +0200
committeriwlwifi publisher <>2024-04-17 13:01:23 +0000
commitaed964507e7ebd5cb99acd70c0f0aee1711ef040 (patch)
tree70dc12b65901689b8f89e2f3c522e1d653ce4c43
parenta442245d0f1cf920f6850ff690e4e67ac941500f (diff)
downloadbackport-iwlwifi-aed964507e7ebd5cb99acd70c0f0aee1711ef040.tar.gz
wifi: iwlwifi: mvm: disable EMLSR when we suspend with wowlan
We can't be an EMLSR while suspended with wowlan. De-activate the secondary link upon wowlan entring. Set the blocking reason upon suspension and clear it upon resume. type=feature ticket=jira:WIFI-387646 ticket=jira:WIFI-387644 Signed-off-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com> Change-Id: I84233cb1c79ba538defafb8ddb983c47f04a400a Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/95644 automatic-review: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> tested: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> Tested-by: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com> x-iwlwifi-stack-dev: f4ec698fb71a6fcffea3ee7c8e6666ebb8981f2f
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/d3.c15
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mvm.h2
-rw-r--r--versions2
3 files changed, 6 insertions, 13 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
index 73c839a48f..aa19ada3c3 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
@@ -1264,18 +1264,7 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
mutex_lock(&mvm->mutex);
primary_link = iwl_mvm_get_primary_link(vif);
- if (ieee80211_vif_is_mld(vif) && vif->cfg.assoc &&
- mvmvif->esr_active) {
- /*
- * Select the 'best' link. May need to revisit, it seems
- * better to not optimize for throughput but rather
- * range, reliability and power here - and select
- * 2.4 GHz ...
- */
- ret = ieee80211_set_active_links(vif, BIT(primary_link));
- if (ret)
- return ret;
- }
+ iwl_mvm_block_esr(mvm, vif, IWL_MVM_ESR_BLOCKED_WOWLAN, primary_link);
set_bit(IWL_MVM_STATUS_IN_D3, &mvm->status);
@@ -3463,6 +3452,8 @@ static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test)
goto err;
}
+ iwl_mvm_unblock_esr(mvm, vif, IWL_MVM_ESR_BLOCKED_WOWLAN);
+
/* after the successful handshake, we're out of D3 */
mvm->trans->system_pm_mode = IWL_PLAT_PM_MODE_DISABLED;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
index e57c931e49..dd0376f0cf 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
@@ -358,11 +358,13 @@ struct iwl_mvm_vif_link_info {
* @IWL_MVM_ESR_BLOCKED_COEX: COEX is preventing the enablement of EMLSR
* @IWL_MVM_ESR_BLOCKED_PREVENTION: Prevent EMLSR to avoid entering and exiting
* in a loop.
+ * @IWL_MVM_ESR_BLOCKED_WOWLAN: WOWLAN is preventing the enablement of EMLSR
* @IWL_MVM_ESR_EXIT_MISSED_BEACON: exited EMLSR due to missed beacons
*/
enum iwl_mvm_esr_state {
IWL_MVM_ESR_BLOCKED_COEX = 0x1,
IWL_MVM_ESR_BLOCKED_PREVENTION = 0x2,
+ IWL_MVM_ESR_BLOCKED_WOWLAN = 0x4,
IWL_MVM_ESR_EXIT_MISSED_BEACON = 0x10000,
};
diff --git a/versions b/versions
index 6b2afa67ec..cd173ea05c 100644
--- a/versions
+++ b/versions
@@ -2,4 +2,4 @@ BACKPORTS_VERSION="(see git)"
BACKPORTED_KERNEL_VERSION="(see git)"
BACKPORTED_KERNEL_NAME="iwlwifi"
BACKPORTS_BUILD_TSTAMP=__DATE__ \" \" __TIME__
-BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11957:99a3e91c"
+BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11958:f4ec698f"