Commit 7d6ba706 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge tag 'wireless-2026-02-04' of...

Merge tag 'wireless-2026-02-04' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless

Johannes Berg says:

====================
Two last-minute iwlwifi fixes:
 - cancel mlo_scan_work on disassoc to avoid
   use-after-free/init-after-queue issues
 - pause TCM work on suspend to avoid crashing
   the FW (and sometimes the host) on resume
   with traffic

* tag 'wireless-2026-02-04' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless:
  wifi: iwlwifi: mvm: pause TCM on fast resume
  wifi: iwlwifi: mld: cancel mlo_scan_start_wk
====================

Link: https://patch.msgid.link/20260204113547.159742-4-johannes@sipsolutions.net


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 7576bd90 45a66b75
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -55,8 +55,6 @@ void iwl_mld_cleanup_vif(void *data, u8 *mac, struct ieee80211_vif *vif)

	ieee80211_iter_keys(mld->hw, vif, iwl_mld_cleanup_keys_iter, NULL);

	wiphy_delayed_work_cancel(mld->wiphy, &mld_vif->mlo_scan_start_wk);

	CLEANUP_STRUCT(mld_vif);
}

+2 −0
Original line number Diff line number Diff line
@@ -1759,6 +1759,8 @@ static int iwl_mld_move_sta_state_down(struct iwl_mld *mld,
			wiphy_work_cancel(mld->wiphy, &mld_vif->emlsr.unblock_tpt_wk);
			wiphy_delayed_work_cancel(mld->wiphy,
						  &mld_vif->emlsr.check_tpt_wk);
			wiphy_delayed_work_cancel(mld->wiphy,
						  &mld_vif->mlo_scan_start_wk);

			iwl_mld_reset_cca_40mhz_workaround(mld, vif);
			iwl_mld_smps_workaround(mld, vif, true);
+5 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/*
 * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
 * Copyright (C) 2012-2014, 2018-2026 Intel Corporation
 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
 * Copyright (C) 2016-2017 Intel Deutschland GmbH
 */
@@ -3239,6 +3239,8 @@ void iwl_mvm_fast_suspend(struct iwl_mvm *mvm)

	IWL_DEBUG_WOWLAN(mvm, "Starting fast suspend flow\n");

	iwl_mvm_pause_tcm(mvm, true);

	mvm->fast_resume = true;
	set_bit(IWL_MVM_STATUS_IN_D3, &mvm->status);

@@ -3295,6 +3297,8 @@ int iwl_mvm_fast_resume(struct iwl_mvm *mvm)
		mvm->trans->state = IWL_TRANS_NO_FW;
	}

	iwl_mvm_resume_tcm(mvm);

out:
	clear_bit(IWL_MVM_STATUS_IN_D3, &mvm->status);
	mvm->fast_resume = false;