Linux wireless drivers development
 help / color / mirror / Atom feed
* [Bug report] rtw89_8852ae: WoWLAN resume fails with "c2h reg timeout" and "failed to resume for wow -110" on s2idle
@ 2026-10-22  8:46 Shalok Shalom
  2026-11-09  3:53 ` Ping-Ke Shih
  0 siblings, 1 reply; 2+ messages in thread
From: Shalok Shalom @ 2026-10-22  8:46 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org

Hi,

I am reporting a reproducible failure in the `rtw89` driver for the Realtek RTL8852AE (PCIe) when using Wake-on-WLAN (WoWLAN) with `s2idle` suspend. This does not happen always, but frequently. 
The system fails to resume from suspend when a magic packet is received, and the kernel log shows a firmware communication timeout followed by a failure to swap back to normal firmware.

The failure begins at `rtw89_fw_read_c2h_reg()` (the C2H timeout), which cascades into the AOAC read failure and the firmware swap failure (`-110`). The driver's recovery path has been hardened against a subsequent crash (CVE-2025-21730), but the initial timeout on the PCIe interface during `s2idle` resume is not resolved by any patch I could identify in the current source tree.


Hardware and Software Environment

-   Laptop: Lenovo Yoga 7 Carbon 14ACN6
    
-   Wi-Fi: Realtek RTL8852AE (PCIe)
    
-   Kernel: 7.2.11-zen1-1-zen (Zen branch) and 6.18.57-2 (LTS branch)
    
-   Firmware: rtw8852a_fw-1.bin, version 0.13.36.2
    
-   Sleep state: s2idle (S3 is not exposed by the firmware; confirmed via `cat /sys/power/mem_sleep`)
    
-   WoWLAN trigger: magic-packet only (`iw phy0 wowlan enable magic-packet`)
    
    
    

Steps to Reproduce

1.  Enable WoWLAN: `sudo iw phy0 wowlan enable magic-packet`
    
2.  Suspend: `systemctl suspend`
    
3.  Send a WoL magic packet to the laptop's Wi-Fi MAC address from another device on the same network. (Via OpenWOL from Android)
    
4.  Observe: the laptop does not wake.
    


Output of lspci -nnk

01:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8852AE 802.11ax PCIe Wireless Network Adapter [10ec:8852]
Subsystem: Lenovo Device [17aa:4852]
Kernel driver in use: rtw89_8852ae
Kernel modules: rtw89_8852ae

Actual Behavior

The system fails to resume from `s2idle`. The following `dmesg` sequence is captured after a failed wake attempt:

[ 2359.543559] rtw89_8852ae 0000:01:00.0: c2h reg timeout[ 2359.543563] rtw89_8852ae 0000:01:00.0: wow: failed to get aoac rpt by reg
[ 2359.644802] rtw89_8852ae 0000:01:00.0: wow: failed to get aoac rpt by pkt
[ 2360.305270] rtw89_8852ae 0000:01:00.0: failed to check wow status disabled
[ 2360.305278] rtw89_8852ae 0000:01:00.0: wow: failed to check disable fw ready
[ 2360.305280] rtw89_8852ae 0000:01:00.0: wow: failed to swap to normal fw
[ 2360.305282] rtw89_8852ae 0000:01:00.0: failed to disable wow
[ 2360.305285] rtw89_8852ae 0000:01:00.0: failed to resume for wow -110
[ 2361.916657] rtw89_8852ae 0000:01:00.0: rtw89_hw_scan_offload failed ret -110
[ 2361.921475] rtw89_8852ae 0000:01:00.0: failed to set wakeup event
[ 2361.921483] rtw89_8852ae 0000:01:00.0: failed to suspend for wow -1


Expected Behavior

The system should reliably resume from `s2idle` when a magic packet is received.


Workaround Already Tested (Falsified)

The following have been tried and did not resolve the issue:

-   ASPM/PS module parameters: The following parameters were set and verified as active (`Y`), but the failure persisted:
    `options rtw89_pci disable_clkreq=y disable_aspm_l1=y disable_aspm_l1ss=y`
    `options rtw89_core disable_ps_mode=y`
    
-   `` `disconnect` trigger: The failure occurs even when WoWLAN is configured to wake on `magic-packet` only.  ``
    



Conclusion

The failure appears to be a race condition in the `rtw89` driver's firmware communication layer during the WoWLAN resume path in `s2idle`. 
A related patch for USB devices (`rtw89_fw_read_c2h_reg` timeout) exists, but it is explicitly scoped to USB transport (RTL8851BU) and does not apply to this PCIe device.


ShalokShalom

^ permalink raw reply	[flat|nested] 2+ messages in thread

* RE: [Bug report] rtw89_8852ae: WoWLAN resume fails with "c2h reg timeout" and "failed to resume for wow -110" on s2idle
  2026-10-22  8:46 [Bug report] rtw89_8852ae: WoWLAN resume fails with "c2h reg timeout" and "failed to resume for wow -110" on s2idle Shalok Shalom
@ 2026-11-09  3:53 ` Ping-Ke Shih
  0 siblings, 0 replies; 2+ messages in thread
From: Ping-Ke Shih @ 2026-11-09  3:53 UTC (permalink / raw)
  To: Shalok Shalom, linux-wireless@vger.kernel.org

Shalok Shalom <shalokshalom@protonmail.ch> wrote:
> Hi,
> 
> I am reporting a reproducible failure in the `rtw89` driver for the Realtek RTL8852AE (PCIe) when using
> Wake-on-WLAN (WoWLAN) with `s2idle` suspend. This does not happen always, but frequently.
> The system fails to resume from suspend when a magic packet is received, and the kernel log shows a
> firmware communication timeout followed by a failure to swap back to normal firmware.
> 
> The failure begins at `rtw89_fw_read_c2h_reg()` (the C2H timeout), which cascades into the AOAC read
> failure and the firmware swap failure (`-110`). The driver's recovery path has been hardened against
> a subsequent crash (CVE-2025-21730), but the initial timeout on the PCIe interface during `s2idle` resume
> is not resolved by any patch I could identify in the current source tree.
> 
> 
> Hardware and Software Environment
> 
> -   Laptop: Lenovo Yoga 7 Carbon 14ACN6
> 
> -   Wi-Fi: Realtek RTL8852AE (PCIe)
> 
> -   Kernel: 7.2.11-zen1-1-zen (Zen branch) and 6.18.57-2 (LTS branch)
> 
> -   Firmware: rtw8852a_fw-1.bin, version 0.13.36.2
> 
> -   Sleep state: s2idle (S3 is not exposed by the firmware; confirmed via `cat /sys/power/mem_sleep`)
> 
> -   WoWLAN trigger: magic-packet only (`iw phy0 wowlan enable magic-packet`)
> 
> 
> 
> 
> Steps to Reproduce
> 
> 1.  Enable WoWLAN: `sudo iw phy0 wowlan enable magic-packet`

Please try to disable d3cold before entering suspend.

echo 0 > /sys/bus/pci/devices/<device_address>/d3cold_allowed

Use 'lspci' to check the <device_address>.

> 
> 2.  Suspend: `systemctl suspend`
> 
> 3.  Send a WoL magic packet to the laptop's Wi-Fi MAC address from another device on the same network.
> (Via OpenWOL from Android)
> 
> 4.  Observe: the laptop does not wake.
> 
> 
> 
> Output of lspci -nnk
> 
> 01:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8852AE 802.11ax PCIe Wireless
> Network Adapter [10ec:8852]
> Subsystem: Lenovo Device [17aa:4852]
> Kernel driver in use: rtw89_8852ae
> Kernel modules: rtw89_8852ae
> 
> Actual Behavior
> 
> The system fails to resume from `s2idle`. The following `dmesg` sequence is captured after a failed
> wake attempt:
> 
> [ 2359.543559] rtw89_8852ae 0000:01:00.0: c2h reg timeout[ 2359.543563] rtw89_8852ae 0000:01:00.0: wow:
> failed to get aoac rpt by reg
> [ 2359.644802] rtw89_8852ae 0000:01:00.0: wow: failed to get aoac rpt by pkt
> [ 2360.305270] rtw89_8852ae 0000:01:00.0: failed to check wow status disabled
> [ 2360.305278] rtw89_8852ae 0000:01:00.0: wow: failed to check disable fw ready
> [ 2360.305280] rtw89_8852ae 0000:01:00.0: wow: failed to swap to normal fw
> [ 2360.305282] rtw89_8852ae 0000:01:00.0: failed to disable wow
> [ 2360.305285] rtw89_8852ae 0000:01:00.0: failed to resume for wow -110
> [ 2361.916657] rtw89_8852ae 0000:01:00.0: rtw89_hw_scan_offload failed ret -110
> [ 2361.921475] rtw89_8852ae 0000:01:00.0: failed to set wakeup event
> [ 2361.921483] rtw89_8852ae 0000:01:00.0: failed to suspend for wow -1

Since you didn't share the log before these errors, I just guess the device got lost
from d3cold resume. Please try the command above.




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-09  3:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22  8:46 [Bug report] rtw89_8852ae: WoWLAN resume fails with "c2h reg timeout" and "failed to resume for wow -110" on s2idle Shalok Shalom
2026-11-09  3:53 ` Ping-Ke Shih

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox