ath12k: WCN785x firmware resets regulatory domain on resume causing ~7s reconnect delay
From: Stian Knudsen
Date: Thu Jul 16 2026 - 18:36:23 EST
After resume from suspend, the WCN785x firmware resets its regulatory state to
WORLD and takes approximately 7 seconds to re-discover the country code from AP
beacons. This causes a consistent ~16 second total delay before wifi reconnects
after resume.
This is an improvement request rather than a crash bug: the driver currently
contains no WMI code for saving or restoring regulatory state across
suspend/resume, and I would like to ask whether this is feasible.
Hardware:
Lenovo ThinkPad T14 Gen 5 (BIOS: R2LET40W 1.21)
Wifi: Qualcomm WCN785x Wi-Fi 7 FastConnect 7800 [17cb:1107]
Subsystem: Lenovo [17aa:e0e6]
Kernel: 7.1.3-arch2-1 (Arch Linux, close to vanilla)
Firmware: WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SILICONZ_UPSTREAM-3
Kernel taint: 0 (untainted)
Observed behavior:
On every resume from suspend, the following sequence is observed in dmesg and wpa_supplicant logs:
kernel: ath12k_wifi7_pci 0000:02:00.0: chip_id 0x2 chip_family 0x4 board_id 0xff soc_id 0x40170200
kernel: ath12k_wifi7_pci 0000:02:00.0: fw_version 0x1103006c fw_build_timestamp 2026-03-06 09:10 ...
wpa_supplicant: wlp2s0: CTRL-EVENT-REGDOM-CHANGE init=DRIVER type=WORLD
[ ~7 seconds pass ]
wpa_supplicant: wlp2s0: CTRL-EVENT-REGDOM-CHANGE init=DRIVER type=COUNTRY alpha2=DE
[ ~9 seconds pass ]
NetworkManager: policy: auto-activating connection 'SSID'
NetworkManager: device (wlp2s0): Activation: successful, device activated.
Total delay from resume to connected: ~16 seconds, 100% reproducible on every
resume.
The device advertises itself as self-managed (phy#0 (self-managed) in iw reg
get). All standard userspace methods of setting the regulatory domain are
ignored by the firmware -- iw reg set, wireless-regdb, cfg80211
ieee80211_regdom modprobe option -- and i found this blog which documents this:
https://www.julienturbide.com/blog/wifi-7-linux-ath12k-wcn785x-regulatory-domain
Grepping the ath12k driver source (7.1.3) reveals no WMI code for saving or
restoring regulatory state across suspend/resume:
$ grep -r "regdom|regulatory|country.*suspend|suspend.*country" drivers/net/wireless/ath/ath12k/
(no output)
The firmware resets to WORLD on every resume and must re-discover the country
code from AP beacons, taking ~7 seconds.
Is there a WMI command available in the WCN785x firmware to cache and restore
the last known country code on resume, avoiding the need to re-discover it from AP beacons? If so, would it be feasible to add this to the driver's suspend/resume path to reduce the post-resume reconnect delay?
Full dmesg output and wpa_supplicant logs are available on request.