Re: ath12k: WCN785x firmware resets regulatory domain on resume causing ~7s reconnect delay
Baochen Qiang <[email protected]> Fri, 17 Jul 2026 15:44:57 +0800
| Newsgroups | org.infradead.lists.ath12k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
On 7/17/2026 6:35 AM, Stian Knudsen wrote: > 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. ath11k has the same issue and there is a commit fixing it https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7f0343b7b8710436c1e6355c71782d32ada47e0c in ath12k, the same command/function (ath12k_wmi_send_set_current_country_cmd()) can do this for you. > > >