Commit fb7f54aa authored by Miri Korenblit's avatar Miri Korenblit
Browse files

wifi: iwlwifi: mvm: pause TCM on fast resume

Not pausing it means that we can have the TCM work queued into a
non-freezable workqueue, which, in resume, is re-activated before the
driver's resume is called.
The TCM work might send commands to the FW before we resumed the device,
leading to an assert.

Closes: https://lore.kernel.org/linux-wireless/aTDoDiD55qlUZ0pn@debian.local/


Tested-by: default avatarChris Bainbridge <chris.bainbridge@gmail.com>
Fixes: e8bb19c1 ("wifi: iwlwifi: support fast resume")
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20260129212650.05621f3faedb.I44df9cf9183b5143df8078131e0d87c0fd7e1763@changeid
parent 5ff64101
Loading
Loading
Loading
Loading
+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;