Commit 4634b176 authored by Johannes Berg's avatar Johannes Berg Committed by Luca Coelho
Browse files

iwlwifi: mvm: correct sta-state logic for TDLS



For TDLS stations, much of the sta-state logic shouldn't apply,
since they don't affect the link to the AP. Fix that.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211017123741.954001ec079f.I9deb8bc7520ad569a453f72c8d99adc9c99c9be3@changeid


Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 34c4eca1
Loading
Loading
Loading
Loading
+20 −17
Original line number Diff line number Diff line
@@ -3194,10 +3194,10 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
		if (iwl_mvm_phy_ctx_count(mvm) > 1)
			iwl_mvm_teardown_tdls_peers(mvm);

		if (sta->tdls)
		if (sta->tdls) {
			iwl_mvm_tdls_check_trigger(mvm, vif, sta->addr,
						   NL80211_TDLS_ENABLE_LINK);

		} else {
			/* enable beacon filtering */
			WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0));

@@ -3207,11 +3207,13 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
			 * multicast data frames can be forwarded to the driver
			 */
			iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
		}

		iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band,
				     true);
	} else if (old_state == IEEE80211_STA_AUTHORIZED &&
		   new_state == IEEE80211_STA_ASSOC) {
		if (!sta->tdls) {
			/* Multicast data frames are no longer allowed */
			iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);

@@ -3220,6 +3222,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
			WARN_ON(ret &&
				!test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
					  &mvm->status));
		}
		ret = 0;
	} else if (old_state == IEEE80211_STA_ASSOC &&
		   new_state == IEEE80211_STA_AUTH) {