wifi: iwlwifi: mvm: mark EMLSR disabled in cleanup iterator
authorBenjamin Berg <benjamin.berg@intel.com>
Wed, 20 Mar 2024 21:26:26 +0000 (23:26 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 25 Mar 2024 14:39:54 +0000 (15:39 +0100)
During HW restart only one link will be active initially and other links
are only activated again later on. With only a single link EMLSR cannot
be enabled and having it marked enabled confuses the internal state.

Mark EMLSR as disabled in the cleanup iterator, it can be reenabled
later one once this is possible.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240320232419.71eb622d6ce3.Ic4d50695b9bb332190dc712473096083aa96074b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 1c6679a2d63e48b89d758281a604a55dc669814b..dbd88a4230c8c375db4a82d5f8b6ed264b906329 100644 (file)
@@ -1108,6 +1108,9 @@ static void iwl_mvm_cleanup_iterator(void *data, u8 *mac,
        mvmvif->ba_enabled = false;
        mvmvif->ap_sta = NULL;
 
+       mvmvif->esr_active = false;
+       vif->driver_flags &= ~IEEE80211_VIF_EML_ACTIVE;
+
        for_each_mvm_vif_valid_link(mvmvif, link_id) {
                mvmvif->link[link_id]->ap_sta_id = IWL_MVM_INVALID_STA;
                mvmvif->link[link_id]->fw_link_id = IWL_MVM_FW_LINK_ID_INVALID;