summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2024-03-12 11:07:18 +0100
committeriwlwifi publisher <>2024-04-17 13:11:40 +0000
commitcb9f67d71ad77ace6f175931f0426c873db1e6cf (patch)
treedd518376f9982b6e826ec287dd72774bd5c27cb3
parentc0deff13b6c3a2ef227ecc34ce621ec44789e520 (diff)
downloadbackport-iwlwifi-cb9f67d71ad77ace6f175931f0426c873db1e6cf.tar.gz
[BUGFIX] wifi: iwlwifi: mvm: allocate STA links only for active links
For the mvm driver, data structures match what's in the firmware, we allocate FW IDs for them already etc. During link switch we already allocate/free the STA links appropriately, but initially we'd allocate them always. Fix this to allocate memory, a STA ID, etc. only for active links. type=bugfix fixes=I0b37f7fb915f343d368a80e3b6fe10c76be5357e ticket=none Change-Id: Ie891e1cc9c9df09ae22be6aad5c143e376f40f0e Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/98731 automatic-review: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> Tested-by: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> tested: 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: 72bcec7bc1cc6ffba553b90c7e03a831c6cf0503
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c6
-rw-r--r--versions2
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
index e56500d67e..c714c70bc7 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
@@ -590,14 +590,14 @@ static int iwl_mvm_mld_alloc_sta_links(struct iwl_mvm *mvm,
struct ieee80211_sta *sta)
{
struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta);
+ struct ieee80211_link_sta *link_sta;
unsigned int link_id;
int ret;
lockdep_assert_held(&mvm->mutex);
- for (link_id = 0; link_id < ARRAY_SIZE(sta->link); link_id++) {
- if (!rcu_access_pointer(sta->link[link_id]) ||
- mvm_sta->link[link_id])
+ for_each_sta_active_link(vif, sta, link_sta, link_id) {
+ if (WARN_ON(mvm_sta->link[link_id]))
continue;
ret = iwl_mvm_mld_alloc_sta_link(mvm, vif, sta, link_id);
diff --git a/versions b/versions
index e7414fffad..39aa972e7f 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:12009:2a98eb83"
+BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:12010:72bcec7b"