ath12k: WCN785x firmware resets regulatory domain on resume causing ~7s reconnect delay
Stian Knudsen <[email protected]> Fri, 17 Jul 2026 00:35:46 +0200
| Newsgroups | org.infradead.lists.ath12k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
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.