[PATCH] wifi: ath12k: Initialize regulatory frequency ranges to avoid filtering all channels
Saikiran
bjsaikiran at gmail.com
Fri Jan 23 07:57:47 PST 2026
Commit 657b0c72c4ad ("wifi: ath12k: Fix frequency range in driver")
added reg_freq_2ghz/5ghz/6ghz structures to intersect regulatory
frequency ranges with hardware capabilities. However, these structures
are never initialized for devices with self-managed regulatory (like
WCN7850).
The WCN7850 firmware manages its own regulatory domain and never calls
ath12k_reg_build_regd() which updates these structures. This leaves
them at {0, 0}, causing this logic in mac.c:
freq_high = min(reg_cap->high_5ghz_chan, ab->reg_freq_5ghz.end_freq);
// freq_high = min(6000MHz, 0) = 0
Result: ALL 5GHz channels are filtered out and 5GHz WiFi is broken.
Fix: Initialize reg_freq_* structures to full frequency ranges in
ath12k_core_alloc(). For devices with proper regulatory domain
updates, these will be overwritten by ath12k_reg_build_regd().
For WCN7850 with self-managed regulatory, these defaults allow
channels to work.
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302
Fixes: 657b0c72c4ad ("wifi: ath12k: Fix frequency range in driver")
Signed-off-by: Saikiran <bjsaikiran at gmail.com>
---
drivers/net/wireless/ath/ath12k/core.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c
index 4121dd14bbcc..99c26ba01304 100644
--- a/drivers/net/wireless/ath/ath12k/core.c
+++ b/drivers/net/wireless/ath/ath12k/core.c
@@ -2290,6 +2290,19 @@ struct ath12k_base *ath12k_core_alloc(struct device *dev, size_t priv_size,
ab->qmi.num_radios = U8_MAX;
ab->single_chip_mlo_support = false;
+ /* Initialize regulatory frequency ranges to full range.
+ * These will be updated by ath12k_reg_build_regd() when
+ * regulatory domain is set. For WCN7850 with self-managed
+ * regulatory, firmware doesn't call reg_build_regd so we
+ * need sane defaults to avoid filtering out all channels.
+ */
+ ab->reg_freq_2ghz.start_freq = 2312000; /* 2.312 GHz */
+ ab->reg_freq_2ghz.end_freq = 2732000; /* 2.732 GHz */
+ ab->reg_freq_5ghz.start_freq = 5150000; /* 5.150 GHz */
+ ab->reg_freq_5ghz.end_freq = 5945000; /* 5.945 GHz */
+ ab->reg_freq_6ghz.start_freq = 5945000; /* 5.945 GHz */
+ ab->reg_freq_6ghz.end_freq = 7125000; /* 7.125 GHz */
+
/* Device index used to identify the devices in a group.
*
* In Intra-device MLO, only one device present in a group,
--
2.51.0
More information about the ath12k
mailing list