summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShaul Triebitz <shaul.triebitz@intel.com>2024-02-16 00:44:22 +0200
committeriwlwifi publisher <>2024-04-17 12:54:18 +0000
commit14634685f5c72f07601dd424244bd48451d8a3b8 (patch)
treea456a5b85bb654a63301b034a589db65d953e826
parentb58c7f6054389c686bc887334f9927db85f68ed4 (diff)
downloadbackport-iwlwifi-14634685f5c72f07601dd424244bd48451d8a3b8.tar.gz
[BUGFIX] wifi: iwlwifi: mvm: skip keys of other links
When waking up from wowlan, we iterate over the current keys and remove those that were rekeyed. With MLO, there might be keys of other links which should not be removed. Skip MLO keys on other links (other than the wowlan active link). type=bugfix fixes=unknown ticket=none Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com> Change-Id: I605a971d2d68107769dd363b896b471998259e64 Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/94777 tested: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> automatic-review: 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: 74417e694edb7dc26f0139ff99cdbb849d5d76b3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/d3.c8
-rw-r--r--versions2
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
index 32f7754480..9dbefdc117 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
@@ -1831,6 +1831,10 @@ static void iwl_mvm_d3_find_last_keys(struct ieee80211_hw *hw,
void *_data)
{
struct iwl_mvm_d3_gtk_iter_data *data = _data;
+ int link_id = vif->active_links ? __ffs(vif->active_links) : -1;
+
+ if (link_id >= 0 && key->link_id >= 0 && link_id != key->link_id)
+ return;
if (data->unhandled_cipher)
return;
@@ -1919,6 +1923,10 @@ static void iwl_mvm_d3_update_keys(struct ieee80211_hw *hw,
struct iwl_mvm_d3_gtk_iter_data *data = _data;
struct iwl_wowlan_status_data *status = data->status;
s8 keyidx;
+ int link_id = vif->active_links ? __ffs(vif->active_links) : -1;
+
+ if (link_id >= 0 && key->link_id >= 0 && link_id != key->link_id)
+ return;
if (data->unhandled_cipher)
return;
diff --git a/versions b/versions
index b883203866..e7190991d2 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:11923:01363c82"
+BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11924:74417e69"