From: Luka Gejak <luka.gejak@linux.dev>
To: linux-wireless@vger.kernel.org,
Mehmet Fide <mehmet.fide@gmail.com>,
Ping-Ke Shih <pkshih@realtek.com>
Cc: Tzu-En Huang <tehuang@realtek.com>,
Yan-Hsuan Chuang <yhchuang@realtek.com>,
Kalle Valo <kvalo@kernel.org>,
Stanislaw Gruszka <sgruszka@redhat.com>,
Brian Norris <briannorris@chromium.org>,
linux-kernel@vger.kernel.org, mehmet.fide@screeningeagle.com
Subject: Re: [PATCH rtw-next 1/3] wifi: rtw88: free the reserved pages of an interface on firmware recovery
Date: Fri, 13 Nov 2026 07:54:40 +0100 [thread overview]
Message-ID: <7DDD0FC3-AD89-4819-8058-15DFDA7E5D6D@linux.dev> (raw)
In-Reply-To: <20261111213239.569224-2-mehmet.fide@gmail.com>
Hi Mehmet,
Thanks for sending these. One comment below.
On November 11, 2026 10:32:37 PM GMT+01:00, Mehmet Fide
<mehmet.fide@gmail.com> wrote:
> diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
> index f7708ad17b6f..adc54b063382 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.c
> +++ b/drivers/net/wireless/realtek/rtw88/main.c
> @@ -627,6 +627,7 @@ static void rtw_reset_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif)
> rtw_bf_disassoc(rtwdev, vif, NULL);
> rtw_vif_assoc_changed(rtwvif, NULL);
> rtw_txq_cleanup(rtwdev, vif->txq);
> + rtw_remove_rsvd_page(rtwdev, rtwvif);
As far as I can see, update_beacon_work can still run after this reset
and before ieee80211_reconfig() adds the interfaces again.
rtw_core_stop() cancels it from rtw_enter_ips(), but rtw_ops_set_tim()
can queue it again right after, for example when a frame for a dozing
station gets buffered. ieee80211_restart_work() then flushes
local->workqueue before it calls ieee80211_reconfig().
So if I read it right, with an AP interface (ap_active stays set) the
work now finds every per vif list empty and runs into this in
__rtw_build_rsvd_page_from_vifs():
rsvd_pkt = list_first_entry_or_null(&rtwdev->rsvd_page_list,
struct rtw_rsvd_page, build_list);
if (!rsvd_pkt) {
WARN(1, "Should not have an empty reserved page\n");
return -EINVAL;
}
Before this patch it built the page from the stale entries and did not
warn. Maybe rtw_fw_update_beacon_work() could skip the download while
RTW_FLAG_RESTARTING is set? The reconfig downloads the beacon again for
BSS_CHANGED_BEACON anyway.
Best regards,
Luka Gejak
next prev parent reply other threads:[~2026-11-13 6:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 21:32 [PATCH rtw-next 0/3] wifi: rtw88: three fixes around the firmware recovery Mehmet Fide
2026-11-11 21:32 ` [PATCH rtw-next 1/3] wifi: rtw88: free the reserved pages of an interface on " Mehmet Fide
2026-11-13 6:54 ` Luka Gejak [this message]
2026-11-11 21:32 ` [PATCH rtw-next 2/3] wifi: rtw88: report the frames purged from the TX report queue Mehmet Fide
2026-11-13 6:55 ` Luka Gejak
2026-11-11 21:32 ` [PATCH rtw-next 3/3] wifi: rtw88: reset the stations outside of RCU on firmware recovery Mehmet Fide
2026-11-13 6:57 ` Luka Gejak
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=7DDD0FC3-AD89-4819-8058-15DFDA7E5D6D@linux.dev \
--to=luka.gejak@linux.dev \
--cc=briannorris@chromium.org \
--cc=kvalo@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=mehmet.fide@gmail.com \
--cc=mehmet.fide@screeningeagle.com \
--cc=pkshih@realtek.com \
--cc=sgruszka@redhat.com \
--cc=tehuang@realtek.com \
--cc=yhchuang@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.