diff options
author | Johannes Berg <johannes.berg@intel.com> | 2023-05-15 14:54:16 -0700 |
---|---|---|
committer | iwlwifi publisher <> | 2023-06-01 07:35:05 +0000 |
commit | a9ed32a698e986d0ad8dd5fcf13b80145287178a (patch) | |
tree | 1fc5ea855346219c073c4c2d5e66a56fe684339b | |
parent | d8feb063196258b547413b40b51753f4e9db323c (diff) | |
download | backport-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.c | 21 | ||||
-rw-r--r-- | versions | 2 |
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); @@ -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" |