From 215e8056748e849daadf41045378c92d16f29889 Mon Sep 17 00:00:00 2001 From: Firas Shaari Date: Tue, 26 May 2026 18:16:25 -0400 Subject: [PATCH] ath11k: tolerate non-PASS regulatory status from QSDK firmware QSDK firmware (e.g. WLAN.HK.2.7.0.1-01744) sends WMI_REG_CHAN_LIST_CC_EVENT with status_code != REG_SET_CC_STATUS_PASS (typically ALPHA2_NOT_FOUND). The host-side regulatory event handler in wmi.c rejects the event entirely with -EINVAL, leaving the firmware DFS regulatory context broken. Consequence: 5 GHz DFS vdev_start fails with status 4 (invalid regdomain). Non-DFS channels work because firmware is lenient there. In the earlier backports-6.1.24 driver (ApNos 4.2.4), this status_code check did not exist -- regulatory processing went through a different path that ignored the firmware status and processed whatever rules it sent. Fix: downgrade the fatal check to a debug log and continue processing the regulatory rules the firmware provided. The firmware includes usable rules even with a non-PASS status. Tested on CIG WF196 (IPQ8074 + QCN9074) with WLAN.HK.2.7.0.1-01744. DFS channels 52, 64, and 116 start successfully after this patch. Signed-off-by: Firas Shaari --- ...-PASS-regulatory-status-from-QSDK-FW.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 feeds/qca-wifi-6/mac80211/patches/pending/a-106-ath11k-tolerate-non-PASS-regulatory-status-from-QSDK-FW.patch diff --git a/feeds/qca-wifi-6/mac80211/patches/pending/a-106-ath11k-tolerate-non-PASS-regulatory-status-from-QSDK-FW.patch b/feeds/qca-wifi-6/mac80211/patches/pending/a-106-ath11k-tolerate-non-PASS-regulatory-status-from-QSDK-FW.patch new file mode 100644 index 0000000000..b2f4d806b1 --- /dev/null +++ b/feeds/qca-wifi-6/mac80211/patches/pending/a-106-ath11k-tolerate-non-PASS-regulatory-status-from-QSDK-FW.patch @@ -0,0 +1,21 @@ +--- a/drivers/net/wireless/ath/ath11k/wmi.c 2026-05-26 14:17:01.872100388 -0400 ++++ b/drivers/net/wireless/ath/ath11k/wmi.c 2026-05-26 15:07:49.474044951 -0400 +@@ -7527,12 +7527,13 @@ + enum wmi_vdev_type vdev_type; + + if (reg_info->status_code != REG_SET_CC_STATUS_PASS) { +- /* In case of failure to set the requested ctry, +- * fw retains the current regd. We print a failure info +- * and return from here. ++ /* QSDK firmware may send a non-PASS status but still ++ * include usable regulatory rules. Log and continue ++ * rather than aborting -- matches pre-6.18 behaviour. + */ +- ath11k_warn(ab, "Failed to set the requested Country regulatory setting\n"); +- return -EINVAL; ++ ath11k_dbg(ab, ATH11K_DBG_REG, ++ "regulatory status %d, continuing with available rules\n", ++ reg_info->status_code); + } + + pdev_idx = reg_info->phy_id;