From: Ping-Ke Shih <pkshih@realtek.com>
To: Bitterblue Smith <rtl8821cerfe2@gmail.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: RE: [PATCH rtw] wifi: rtw89: hw_scan: Don't let the operating channel be last
Date: Tue, 18 Nov 2025 02:17:44 +0000 [thread overview]
Message-ID: <5b0834f55d91469282a0f42c651d5441@realtek.com> (raw)
In-Reply-To: <c1e61744-8db4-4646-867f-241b47d30386@gmail.com>
Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> Scanning can be offloaded to the firmware. To that end, the driver
> prepares a list of channels to scan, including periodic visits back to
> the operating channel, and sends the list to the firmware.
>
> When the channel list is too long to fit in a single H2C message, the
> driver splits the list, sends the first part, and tells the firmware to
> scan. When the scan is complete, the driver sends the next part of the
> list and tells the firmware to scan.
>
> When the last channel that fit in the H2C message is the operating
> channel something seems to go wrong in the firmware. It will
> acknowledge receiving the list of channels but apparently it will not
> do anything more. The AP can't be pinged anymore. The driver still
> receives beacons, though.
>
> One way to avoid this is to split the list of channels before the
> operating channel.
>
> Affected devices:
>
> * RTL8851BU with firmware 0.29.41.3
> * RTL8832BU with firmware 0.29.29.8
> * RTL8852BU with firmware 0.29.29.8
We don't see this problem with the same firmware on RTL8852BE and RTL8852CE,
and I'd spend some time to check if this impact scan time. Or could you share?
Otherwise, it looks good to me, so give my ACK in advance
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
>
> https://lore.kernel.org/linux-wireless/0abbda91-c5c2-4007-84c8-215679e652e1@gmail.com/
> Cc: stable@vger.kernel.org
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> ---
> I didn't think a workaround would be needed in the kernel but 6.18
> will be out soon and people still have this problem.
> ---
> drivers/net/wireless/realtek/rtw89/fw.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
> index 96f0463e66d6..c35317abc7f5 100644
> --- a/drivers/net/wireless/realtek/rtw89/fw.c
> +++ b/drivers/net/wireless/realtek/rtw89/fw.c
> @@ -7709,6 +7709,13 @@ int rtw89_hw_scan_add_chan_list_ax(struct rtw89_dev *rtwdev,
> INIT_LIST_HEAD(&list);
>
> list_for_each_entry_safe(ch_info, tmp, &scan_info->chan_list, list) {
> + /* The operating channel (tx_null == true) should
> + * not be last in the list, to avoid breaking
> + * RTL8851BU and RTL8832BU.
> + */
> + if (list_len + 1 == RTW89_SCAN_LIST_LIMIT_AX && ch_info->tx_null)
> + break;
> +
> list_move_tail(&ch_info->list, &list);
>
> list_len++;
> --
> 2.51.1
next prev parent reply other threads:[~2025-11-18 2:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-13 22:54 [PATCH rtw] wifi: rtw89: hw_scan: Don't let the operating channel be last Bitterblue Smith
2025-11-18 2:17 ` Ping-Ke Shih [this message]
2025-11-18 22:21 ` Bitterblue Smith
2025-11-20 3:17 ` Ping-Ke Shih
2025-11-20 3:49 ` 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=5b0834f55d91469282a0f42c651d5441@realtek.com \
--to=pkshih@realtek.com \
--cc=linux-wireless@vger.kernel.org \
--cc=rtl8821cerfe2@gmail.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