]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: mvm: iterate active links for STA queues
authorJohannes Berg <johannes.berg@intel.com>
Thu, 21 Sep 2023 08:58:00 +0000 (11:58 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 25 Sep 2023 07:14:59 +0000 (09:14 +0200)
During HW restart in eSR, links allocated in a station and links
active in the interface may differ. Use for_each_sta_active_link
to capture this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230921110726.7ee1f1a55e1c.I410c512d1fad7d1cf9b2d2a3451a312821dc816d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/sta.c

index 51ca99bd51179822d363afde21ec21c7999044b3..61d564735d57de837f2f2af7625da61716cbbc6e 100644 (file)
@@ -865,11 +865,11 @@ int iwl_mvm_tvqm_enable_txq(struct iwl_mvm *mvm,
 
        if (sta) {
                struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
+               struct ieee80211_link_sta *link_sta;
                unsigned int link_id;
 
-               for (link_id = 0;
-                    link_id < ARRAY_SIZE(mvmsta->link);
-                    link_id++) {
+               rcu_read_lock();
+               for_each_sta_active_link(mvmsta->vif, sta, link_sta, link_id) {
                        struct iwl_mvm_link_sta *link =
                                rcu_dereference_protected(mvmsta->link[link_id],
                                                          lockdep_is_held(&mvm->mutex));
@@ -879,6 +879,7 @@ int iwl_mvm_tvqm_enable_txq(struct iwl_mvm *mvm,
 
                        sta_mask |= BIT(link->sta_id);
                }
+               rcu_read_unlock();
        } else {
                sta_mask |= BIT(sta_id);
        }