]> git.ipfire.org Git - thirdparty/linux.git/commit
wifi: ath10k: move recovery check logic into a new work
authorKang Yang <kang.yang@oss.qualcomm.com>
Tue, 14 Oct 2025 11:07:57 +0000 (19:07 +0800)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Wed, 15 Oct 2025 23:37:52 +0000 (16:37 -0700)
commitf35a07a4842a88801d9182b1a76d178bfa616978
tree01826e90ac9b5524d46d176e49f071e31e4daf54
parent4077d7fb27be990a8ddcff9b49f7e1788a960f3a
wifi: ath10k: move recovery check logic into a new work

Currently, ath10k has a recovery check logic. It will wait for the
last recovery to finish by wait_for_completion_timeout();

But in SDIO scenarios, the recovery function may be invoked from
interrupt context, where long blocking waits are undesirable and can
lead to system instability.

Additionally, Linux’s ordered workqueue processes one task at a time.
If a previous recovery is still queued or executing, new triggers are
ignored. This prevents accurate tracking of consecutive failures and
delays transition to the WEDGED state.

To address this, move the recovery check logic into a different
workqueue.

Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00288-QCARMSWPZ-1
Tested-on: QCA6174 hw3.2 SDIO WLAN.RMH.4.4.1-00189

Fixes: c256a94d1b1b ("wifi: ath10k: shutdown driver when hardware is unreliable")
Signed-off-by: Kang Yang <kang.yang@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20251014110757.155-1-kang.yang@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/ath/ath10k/core.h
drivers/net/wireless/ath/ath10k/mac.c