Re: [PATCH v5 rtw-next 2/7] wifi: rtw88: assign the RCR per chip in rtw_core_init
From: Bitterblue Smith
Date: Wed Sep 30 2026 - 14:17:05 EST
On 30/09/2026 12:15, Luka Gejak wrote:
> The receive control word is the same for every chip today. The generic
> default is written in rtw_core_init(), so a chip that needs a different
> value has to overwrite it afterwards, in its own init path, far away
> from where the default is decided.
I still don't understand why RTL8723B(S) would need a different value.
>
> Add an rcr field to struct rtw_chip_info and assign hal.rcr from it in
> rtw_core_init(). Chips that do not set one keep the generic default, so
> the field is optional and no existing chip changes behaviour.
>
> Signed-off-by: Luka Gejak <luka.gejak@xxxxxxxxx>
> ---
> drivers/net/wireless/realtek/rtw88/main.c | 10 ++++++----
> drivers/net/wireless/realtek/rtw88/main.h | 1 +
> 2 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
> index 0f23498b5c96..53d8552c0d35 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.c
> +++ b/drivers/net/wireless/realtek/rtw88/main.c
> @@ -2191,10 +2191,12 @@ int rtw_core_init(struct rtw_dev *rtwdev)
>
> rtw_stats_init(rtwdev);
>
> - /* default rx filter setting */
> - rtwdev->hal.rcr = BIT_APP_FCS | BIT_APP_MIC | BIT_APP_ICV |
> - BIT_PKTCTL_DLEN | BIT_HTC_LOC_CTRL | BIT_APP_PHYSTS |
> - BIT_AB | BIT_AM | BIT_APM;
> + /* default rx filter setting, or the chip's own value if it has one */
> + rtwdev->hal.rcr = chip->rcr;
> + if (!chip->rcr)
> + rtwdev->hal.rcr = BIT_APP_FCS | BIT_APP_MIC | BIT_APP_ICV |
> + BIT_PKTCTL_DLEN | BIT_HTC_LOC_CTRL |
> + BIT_APP_PHYSTS | BIT_AB | BIT_AM | BIT_APM;
>
> ret = rtw_load_firmware(rtwdev, RTW_NORMAL_FW);
> if (ret) {
> diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h
> index d59f6e323adf..e0f389040089 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.h
> +++ b/drivers/net/wireless/realtek/rtw88/main.h
> @@ -1253,6 +1253,7 @@ struct rtw_chip_info {
>
> /* init values */
> u8 sys_func_en;
> + u32 rcr;
> const struct rtw_pwr_seq_cmd * const *pwr_on_seq;
> const struct rtw_pwr_seq_cmd * const *pwr_off_seq;
> const struct rtw_rqpn *rqpn_table;