ath10k_core_wake_all_waiters() releases callers that would otherwise remain blocked after the driver has given up on the device. However, peer_delete_done and target_suspend are not included in that list. Callers waiting on either completion therefore continue sleeping until their individual timeouts expire, even though no further progress can be made. Add both completions to ath10k_core_wake_all_waiters() so blocked callers are released immediately instead of waiting for unnecessary timeout delays. Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00288-QCARMSWPZ-1 Signed-off-by: Kang Yang --- drivers/net/wireless/ath/ath10k/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index be516dc32c1d..f2e457a0fcbe 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -2500,6 +2500,8 @@ static void ath10k_core_wake_all_waiters(struct ath10k *ar) complete(&ar->install_key_done); complete(&ar->vdev_setup_done); complete(&ar->vdev_delete_done); + complete(&ar->peer_delete_done); + complete(&ar->target_suspend); complete(&ar->thermal.wmi_sync); complete(&ar->bss_survey_done); wake_up(&ar->htt.empty_tx_wq); -- 2.34.1