iwlwifi: mvm: remove session protection on disassoc
authorJohannes Berg <johannes.berg@intel.com>
Sun, 24 Oct 2021 15:20:34 +0000 (18:20 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 28 Oct 2021 09:04:11 +0000 (12:04 +0300)
If we somehow get disassociated while still waiting for a beacon
during connection, we can end up printing the

  No beacon heard and the session protection is over already...

message even if we aren't really quite waiting for it anymore.
Remove the time event, if it's running, when we get disassociated
and don't need to wait for beacons anymore.

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.20211024181719.6192e2363784.Ie9c2bfdc30dcfff2c4dd7c393c79e3ac182840a9@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 2645dd8..d7d7d8a 100644 (file)
@@ -3237,6 +3237,9 @@ 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 */
+                       iwl_mvm_stop_session_protection(mvm, vif);
                }
                ret = 0;
        } else if (old_state == IEEE80211_STA_AUTH &&