]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Fix scan state stuck in ABORTING after cancel_remain_on_channel
authorYingying Tang <yingying.tang@oss.qualcomm.com>
Mon, 12 Jan 2026 11:55:16 +0000 (19:55 +0800)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Tue, 13 Jan 2026 15:25:02 +0000 (07:25 -0800)
Scan finish workqueue was introduced in __ath12k_mac_scan_finish() by [1].

During ath12k_mac_op_cancel_remain_on_channel(), scan state is set to
ABORTING and should be reset to IDLE in the queued work. However,
wiphy_work_cancel() is called before exiting
ath12k_mac_op_cancel_remain_on_channel(), which prevents the work
from running and leaves the state in ABORTING. This blocks all
subsequent scan requests.

Replace wiphy_work_cancel() with wiphy_work_flush() to ensure the
queued work runs and scan state is reset to IDLE.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3

Fixes: 3863f014ad23 ("wifi: ath12k: symmetrize scan vdev creation and deletion during HW scan") # [1]
Signed-off-by: Yingying Tang <yingying.tang@oss.qualcomm.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20260112115516.2144219-1-yingying.tang@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/mac.c

index 088b5ffd07972c74cb86f50fa485eef7af77afb9..ed2ac2fe12f03cda2f931cea1235fdbca72715e7 100644 (file)
@@ -13344,7 +13344,7 @@ static int ath12k_mac_op_cancel_remain_on_channel(struct ieee80211_hw *hw,
        ath12k_scan_abort(ar);
 
        cancel_delayed_work_sync(&ar->scan.timeout);
-       wiphy_work_cancel(hw->wiphy, &ar->scan.vdev_clean_wk);
+       wiphy_work_flush(hw->wiphy, &ar->scan.vdev_clean_wk);
 
        return 0;
 }