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 77569b5..4344f5d 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);