All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ping-Ke Shih <pkshih@realtek.com>
To: Jeremy Fareau <jeremy.fareau@gmail.com>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Kalle Valo <kvalo@kernel.org>,
	Brian Norris <briannorris@chromium.org>
Subject: RE: [PATCH wireless 2/2] wifi: rtw88: restore the control frame filter when the device is started
Date: Mon, 12 Oct 2026 02:28:28 +0000	[thread overview]
Message-ID: <87ffcecc1de34fbfa1a59a4013ee29ed@realtek.com> (raw)
In-Reply-To: <20261007091225.413-3-jeremy.fareau@gmail.com>

Jeremy Fareau <jeremy.fareau@gmail.com> wrote:
> Commit ed51a86b787f ("wifi: rtw88: Enable receiving control frames in
> monitor mode") writes REG_RXFLTMAP1 from configure_filter(),

Using LLM is okay, but please reword yourself. I don't think this sentence
is necessary.

> but that
> register is reset to the chip default by the chip's mac_init() during
> power_on().

Maybe the default value of rtwdev->hal.rxfltmap1 should be set at
rtw_core_init()? But I don't have clear thought how to switch between
normal and monitor modes (or even sta + monitor mode). 

>  mac80211 only calls ieee80211_ops::configure_filter() when
> its own filter flags change, so after a stop/start cycle the flags are
> unchanged and the control frame filter silently reverts: monitor mode
> stops delivering control frames again.

This problem is also only encountered in monitor mode, right?
Let's do it under monitor mode condition?

> 
> Keep track of the value configure_filter() last asked for and restore
> it in rtw_core_start(), next to the RCR restore, which exists for the
> same reason.
> 
> Measured on an RTL8814AU and an RTL8812AU in monitor mode on channel 6,
> 40 s captures taken after a down/up cycle.  Control frames go from 0 to
> 23184 and from 0 to 483 respectively; without this change both are 0.
> 
> Fixes: ed51a86b787f ("wifi: rtw88: Enable receiving control frames in monitor mode")
> Assisted-by: LLM
> Signed-off-by: Jeremy Fareau <jeremy.fareau@gmail.com>
> ---
>  drivers/net/wireless/realtek/rtw88/mac80211.c | 5 +++--
>  drivers/net/wireless/realtek/rtw88/main.c     | 8 ++++++++
>  drivers/net/wireless/realtek/rtw88/main.h     | 1 +
>  3 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtw88/mac80211.c
> b/drivers/net/wireless/realtek/rtw88/mac80211.c
> index 827f38390969..84d869f1efe0 100644
> --- a/drivers/net/wireless/realtek/rtw88/mac80211.c
> +++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
> @@ -300,9 +300,10 @@ static void rtw_ops_configure_filter(struct ieee80211_hw *hw,
> 
>         if (changed_flags & FIF_CONTROL) {
>                 if (*new_flags & FIF_CONTROL)
> -                       rtw_write16(rtwdev, REG_RXFLTMAP1, 0xffff);

REG_RXFLTMAP1 should be 0xffff in monitor mode, right?
Maybe, just set the value in monitor mode. No need rxfltmap1_cur to store
current value. Maintaining two variables is hard and confusing...

> +                       rtwdev->hal.rxfltmap1_cur = 0xffff;
>                 else
> -                       rtw_write16(rtwdev, REG_RXFLTMAP1, rtwdev->hal.rxfltmap1);
> +                       rtwdev->hal.rxfltmap1_cur = rtwdev->hal.rxfltmap1;
> +               rtw_write16(rtwdev, REG_RXFLTMAP1, rtwdev->hal.rxfltmap1_cur);
>         }
>         if (changed_flags & FIF_ALLMULTI) {
>                 if (*new_flags & FIF_ALLMULTI)



      parent reply	other threads:[~2026-10-12  2:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-07  9:12 [PATCH wireless 0/2] wifi: rtw88: channel and control frame filter lost on interface restart Jeremy Fareau
2026-10-07  9:12 ` [PATCH wireless 1/2] wifi: rtw88: program the channel when the device is started Jeremy Fareau
2026-10-09 12:12   ` Luka Gejak
2026-10-12  2:07   ` Ping-Ke Shih
2026-10-07  9:12 ` [PATCH wireless 2/2] wifi: rtw88: restore the control frame filter " Jeremy Fareau
2026-10-11 13:08   ` Luka Gejak
2026-10-12  2:28   ` Ping-Ke Shih [this message]

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=87ffcecc1de34fbfa1a59a4013ee29ed@realtek.com \
    --to=pkshih@realtek.com \
    --cc=briannorris@chromium.org \
    --cc=jeremy.fareau@gmail.com \
    --cc=kvalo@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    /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.