Commit 5f809baf authored by Johannes Berg's avatar Johannes Berg
Browse files

wifi: iwlwifi: mvm: iterate active links for STA queues



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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230921110726.7ee1f1a55e1c.I410c512d1fad7d1cf9b2d2a3451a312821dc816d@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 4ea1ed1d
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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);
	}