diff options
author | Benjamin Berg <benjamin.berg@intel.com> | 2024-02-28 19:14:37 +0100 |
---|---|---|
committer | iwlwifi publisher <> | 2024-04-17 13:35:50 +0000 |
commit | ba0e80c3b1cf3721c4498a35dd86d76b514d0b91 (patch) | |
tree | c2cf30c59d9d2f91a2b1537b0a1ddeb9228db040 | |
parent | d3a7d6e91854eb317974073fa7ad0150c3c2f010 (diff) | |
download | backport-iwlwifi-ba0e80c3b1cf3721c4498a35dd86d76b514d0b91.tar.gz |
[BUGFIX] wifi: iwlwifi: mvm: assign link STA ID lookups during restart
When restarting the HW, mac80211 first adds the STA back with only one
link enabled. This means that iwl_mvm_alloc_sta_after_restart will not
see the other links and will not do the assignment.
As such, do the assignment when mac80211 is activating the link for the
station.
type=bugfix
ticket=none
fixes=unknown
Change-Id: I7cb6cf096ab135f4b489f2806b116563624aa5ee
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/96673
tested: iil_jenkins iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM>
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/99149
Reviewed-by: Golan Ben Ami <golan.ben.ami@intel.com>
x-iwlwifi-stack-dev: ee49d9a2fdfb885676725a8e98fd008c17a00aa1
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c | 13 | ||||
-rw-r--r-- | versions | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c index d7da9af4bb..34c9950de5 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c @@ -1146,10 +1146,21 @@ int iwl_mvm_mld_update_sta_links(struct iwl_mvm *mvm, } if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { - if (WARN_ON(!mvm_sta->link[link_id])) { + struct iwl_mvm_link_sta *mvm_link_sta = + rcu_dereference_protected(mvm_sta->link[link_id], + lockdep_is_held(&mvm->mutex)); + u32 sta_id; + + if (WARN_ON(!mvm_link_sta)) { ret = -EINVAL; goto err; } + + sta_id = mvm_link_sta->sta_id; + + rcu_assign_pointer(mvm->fw_id_to_mac_id[sta_id], sta); + rcu_assign_pointer(mvm->fw_id_to_link_sta[sta_id], + link_sta); } else { if (WARN_ON(mvm_sta->link[link_id])) { ret = -EINVAL; @@ -2,5 +2,5 @@ BACKPORTS_VERSION="(see git)" BACKPORTED_KERNEL_VERSION="(see git)" BACKPORTED_KERNEL_NAME="iwlwifi" BACKPORTS_BUILD_TSTAMP=__DATE__ \" \" __TIME__ -BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:release/core87:12012:101f93c8" +BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:release/core87:12013:ee49d9a2" BACKPORTS_BRANCH_TSTAMP="Apr 17 2024 13:11:40" |