summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2023-05-15 14:54:16 -0700
committeriwlwifi publisher <>2023-06-01 07:35:05 +0000
commita9ed32a698e986d0ad8dd5fcf13b80145287178a (patch)
tree1fc5ea855346219c073c4c2d5e66a56fe684339b
parentd8feb063196258b547413b40b51753f4e9db323c (diff)
downloadbackport-iwlwifi-a9ed32a698e986d0ad8dd5fcf13b80145287178a.tar.gz
[BUGFIX] wifi: iwlwifi: mvm: handle link-STA allocation in restart
During HW restart, STA link changes happen while the link-sta is already allocated (had been prior to the restart). Adjust the allocation and checks to handle that. type=bugfix fixes=unknown ticket=none Change-Id: Iaa0503a3100250489fed8b4bdcf60e24a96d3392 Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-on: https://gerritwcs.ir.intel.com/c/iwlwifi-stack-dev/+/55691 tested: iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> automatic-review: iil_jenkins <EC.GER.UNIX.IIL.JENKINS@INTEL.COM> Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com> x-iwlwifi-stack-dev: 8282379e9b8f09e301ae0f64f5d99cb4c4d9c43e
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c21
-rw-r--r--versions2
2 files changed, 17 insertions, 6 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
index 2b7fbae8e5..28568e58ef 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c
@@ -1113,15 +1113,26 @@ int iwl_mvm_mld_update_sta_links(struct iwl_mvm *mvm,
link_sta_dereference_protected(sta, link_id);
mvm_vif_link = mvm_vif->link[link_id];
- if (WARN_ON(!mvm_vif_link || !link_conf || !link_sta ||
- mvm_sta->link[link_id])) {
+ if (WARN_ON(!mvm_vif_link || !link_conf || !link_sta)) {
ret = -EINVAL;
goto err;
}
- ret = iwl_mvm_mld_alloc_sta_link(mvm, vif, sta, link_id);
- if (WARN_ON(ret))
- goto err;
+ if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
+ if (WARN_ON(!mvm_sta->link[link_id])) {
+ ret = -EINVAL;
+ goto err;
+ }
+ } else {
+ if (WARN_ON(mvm_sta->link[link_id])) {
+ ret = -EINVAL;
+ goto err;
+ }
+ ret = iwl_mvm_mld_alloc_sta_link(mvm, vif, sta,
+ link_id);
+ if (WARN_ON(ret))
+ goto err;
+ }
link_sta->agg.max_rc_amsdu_len = 1;
ieee80211_sta_recalc_aggregates(sta);
diff --git a/versions b/versions
index 763dea233a..ad7fa0cba1 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:11235:43cbbfb4"
+BACKPORTS_GIT_TRACKED="iwlwifi-stack-public:master:11236:8282379e"