iwlwifi: mvm: remove session protection upon station removal
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sat, 4 Dec 2021 11:10:42 +0000 (13:10 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 7 Dec 2021 18:06:38 +0000 (20:06 +0200)
When the station is removed we need to remove the session protection
that may be still running.
Note that we need also to remove the session protection upon unassoc in
case the station is kept in the AUTH state.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211204130722.483977310ca2.If7eba02594f20dabd22d758e1c917fbca54b2ddd@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 77569b5afe1a293b96e443788cd72b09e23d7d46..4344f5d94b09ddcc6f03a697a74cfb7e70d6380e 100644 (file)
@@ -3405,16 +3405,16 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
                if (vif->type == NL80211_IFTYPE_AP) {
                        mvmvif->ap_assoc_sta_count--;
                        iwl_mvm_mac_ctxt_changed(mvm, vif, false, NULL);
-               } else if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) {
-                       /* remove session protection if still running */
+               } else if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls)
                        iwl_mvm_stop_session_protection(mvm, vif);
-               }
                ret = 0;
        } else if (old_state == IEEE80211_STA_AUTH &&
                   new_state == IEEE80211_STA_NONE) {
                ret = 0;
        } else if (old_state == IEEE80211_STA_NONE &&
                   new_state == IEEE80211_STA_NOTEXIST) {
+               if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls)
+                       iwl_mvm_stop_session_protection(mvm, vif);
                ret = iwl_mvm_rm_sta(mvm, vif, sta);
                if (sta->tdls) {
                        iwl_mvm_recalc_tdls_state(mvm, vif, false);