mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 12:16:29 -04:00
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: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20211017123741.954001ec079f.I9deb8bc7520ad569a453f72c8d99adc9c99c9be3@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
committed by
Luca Coelho
parent
34c4eca167
commit
4634b17681
@@ -3194,32 +3194,35 @@ 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));
|
||||
|
||||
/* enable beacon filtering */
|
||||
WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0));
|
||||
|
||||
/*
|
||||
* Now that the station is authorized, i.e., keys were already
|
||||
* installed, need to indicate to the FW that
|
||||
* multicast data frames can be forwarded to the driver
|
||||
*/
|
||||
iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
|
||||
/*
|
||||
* Now that the station is authorized, i.e., keys were already
|
||||
* installed, need to indicate to the FW that
|
||||
* 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) {
|
||||
/* Multicast data frames are no longer allowed */
|
||||
iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
|
||||
if (!sta->tdls) {
|
||||
/* Multicast data frames are no longer allowed */
|
||||
iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
|
||||
|
||||
/* disable beacon filtering */
|
||||
ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0);
|
||||
WARN_ON(ret &&
|
||||
!test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
|
||||
&mvm->status));
|
||||
/* disable beacon filtering */
|
||||
ret = iwl_mvm_disable_beacon_filter(mvm, vif, 0);
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user