Linux wireless drivers development
 help / color / mirror / Atom feed
From: Maxim Skokov <skokovmaksimevg@gmail.com>
To: pkshih@realtek.com
Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: rtw89: WOW_CPUIO_RX_CTRL is never answered on RTL8851B
Date: Sat, 12 Sep 2026 22:39:36 +0300	[thread overview]
Message-ID: <20260912193939.5565-1-skokovmaksimevg@gmail.com> (raw)

On RTL8851BE every suspend/resume cycle with WoWLAN enabled spends about
20 seconds in firmware timeouts:

  rtw89_8851be 0000:02:00.0: c2h reg timeout          (x3)
  rtw89_8851be 0000:02:00.0: Unknown wakeup reason 0
  rtw89_8851be 0000:02:00.0: c2h reg timeout          (x3)

With WoWLAN disabled the same suspend/resume path is silent. Both results
are 3 out of 3, using rtcwake so the cycles are identical.

A kretprobe on rtw89_fw_msg_reg() shows all six timeouts are the same
command:

  h2c=10  ret=-110  3355 ms   RTW89_FWCMD_H2CREG_FUNC_WOW_CPUIO_RX_CTRL
  h2c=10  ret=-110  3345 ms
  h2c=10  ret=-110  3344 ms
  h2c=10  ret=-110  3315 ms
  h2c=10  ret=-110  3305 ms
  h2c=10  ret=-110  3307 ms
  h2c=7   ret=0        0 ms   AOAC_RPT_1
  h2c=8   ret=0        1 ms   AOAC_RPT_2
  h2c=5   ret=0        0 ms   SCH_TX_EN
  h2c=5   ret=0        1 ms   SCH_TX_EN

Other commands on the same h2creg channel are answered in 0 to 1 ms, so
the channel itself works. The firmware just never answers this one.

Six calls because rtw89_mac_cpu_io_rx() retries CPU_IO_RX_RETRY_CNT = 3
times and is called once on suspend and once on resume. Its return value
is ignored by rtw89_wow_config_mac_ax(), so WoWLAN setup is not aborted
and the only cost is the delay.

_rtw89_mac_cpu_io_rx() already has a way out:

	if (RTW89_CHK_FW_FEATURE(NO_WOW_CPU_IO_RX, &rtwdev->fw))
		return 0;

but rtw89_fw_feat_list only carries

	__CFG_FW_FEAT(RTL8852A, lt, 0, 13, 37, 0, NO_WOW_CPU_IO_RX),
	__CFG_FW_FEAT(RTL8852B, lt, 0, 29, 30, 0, NO_WOW_CPU_IO_RX),

and nothing for RTL8851B.

Should RTL8851B get an entry, and with what version boundary? The newest
firmware published for this chip in linux-firmware is 0.29.41.5, and it
does not answer the command either, so from here I cannot tell whether
support is planned for a later version. I am happy to send and test a
patch once I know which version to use.

One unrelated note from the same trace: "Unknown wakeup reason 0" is not
a failed AoAC read. AOAC_RPT_1 and AOAC_RPT_2 both succeed, and
rtw89_wow_show_wakeup_reason() reads the reason straight from
wow_reason_reg, which holds 0 because the card was not the wake source
here, the RTC alarm was. The switch has no case for that and falls
through to the warning.

Tested on:
  RTL8851BE [10ec:b851], subsystem AzureWave [1a3b:6111]
  wireless-next 13e51269b6, built with KASAN, UBSAN, PROVE_LOCKING and
  DEBUG_OBJECTS; none of them fire during these cycles
  firmware 0.29.41.3 (65cefb31), also reproduced with 0.29.41.5

             reply	other threads:[~2026-09-12 19:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-12 19:39 Maxim Skokov [this message]
2026-09-15  0:40 ` rtw89: WOW_CPUIO_RX_CTRL is never answered on RTL8851B Ping-Ke Shih

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260912193939.5565-1-skokovmaksimevg@gmail.com \
    --to=skokovmaksimevg@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pkshih@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox