From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
To: Luka Gejak <luka.gejak@linux.dev>, Ping-Ke Shih <pkshih@realtek.com>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Michael Straube <straube.linux@gmail.com>,
Peter Robinson <pbrobinson@gmail.com>
Subject: Re: [PATCH v3 3/6] wifi: rtw88: 8723b: add the RTL8723B chip driver
Date: Sun, 27 Sep 2026 20:37:52 +0300 [thread overview]
Message-ID: <62a91a6c-f18f-4f74-a4a8-90a15489ac26@gmail.com> (raw)
In-Reply-To: <DLN10FU8L1PQ.3NK0M6NVQ3Y53@linux.dev>
On 24/09/2026 00:50, Luka Gejak wrote:
> On Wed Sep 23, 2026 at 10:30 AM CEST, Ping-Ke Shih wrote:
>> Luka Gejak <luka.gejak@linux.dev> wrote:
>>> Add the Realtek RTL8723B 802.11n chip driver: the chip operations, the
>>> power sequences, the efuse layout, the RF and IQ calibration, and the
>>> chip specific coexistence handling.
>>>
>
> Thanks for the review. Everything that could be turned into a change is
> in v4, and six of your points are worth an answer as much as a change,
> so here they are.
>
>>> +#include <linux/unaligned.h>
>>> +#include "main.h"
>>> +#include "coex.h"
>> [...]
>>> +#include "tx.h"
>>
>> In increasing alphabet order.
>
> The list is already in increasing alphabetical order after main.h, and
> main.h cannot be sorted into place. The other rtw88 headers have no
> includes of their own and are written expecting main.h to be first: it is
> what brings in struct rtw_dev and even BIT() and GENMASK(). With mac.h
> ahead of main.h the build stops after 179 error lines, the first of them
>
> 'struct rtw_dev' declared inside parameter list will not be visible
> outside of this definition or declaration
> implicit declaration of function 'GENMASK'
> passing argument 1 of 'rtw_set_channel_mac' from incompatible pointer
> type
>
> I tried the sort and reverted it. A strict order needs main.h added to
> those headers first. I can send that as a separate patch ahead of this
> series, but I would rather not fold a shared header change into the chip
> driver.
>
>>> +#define MASK_NETTYPE 0x30000
>>> +#define _NETTYPE(x) (((x) & 0x3) << 16)
>>> +#define NT_LINK_AP 0x2
>>
>> The PORT_SET_NET_TYPE in rtw_vif_port_config() does similar thing
>> relying on static const struct rtw_vif_port rtw_vif_port[].
>>
>> Is that not suitable for RTL8723B? If so, should the common flow
>> avoid RTL8723B?
>
> It is suitable, and the common flow does not need to avoid RTL8723B.
> PORT_SET_NET_TYPE writes the same field with the same value:
> rtw_vif_port[0].net_type is address 0x0100 with mask 0x30000, which is
> REG_CR bits 17:16, and rtwvif->net_type is RTW_NET_MGD_LINKED, 2, the
> value NT_LINK_AP carried.
>
> Only the timing differs, and there the common flow is the better one.
> rtw_ops_add_interface() sets net_type from the interface type,
> RTW_NET_NO_LINK for a station, and the association path moves it to
> RTW_NET_MGD_LINKED, writing REG_CR after both. The chip local call ran
> during mac_init and forced the linked value before there was a link,
> and the core's write replaced it a moment later in any case.
>
> So v4 drops rtw8723b_init_network_type() with MASK_NETTYPE, _NETTYPE()
> and NT_LINK_AP, and the chip relies on rtw_vif_port[] like the others.
> No other rtw88 chip defines a net type value of its own.
>
>>> + /* Override the default rcr filter for 8723B */
>>> + rtwdev->hal.rcr = WLAN_RCR_CFG;
>>
>> Why? The default value doesn't work to RTL8723B?
>
> Two things say it does not.
>
> hal.rcr is not only written at init. fw.c clears and restores
> BIT_CBSSID_BCN in it around the beacon filter, and mac80211.c toggles
> BIT_AM, so whatever is left there has to keep those bits.
I don't understand the conclusion...
>
> And this is not a private filter. It is the RCR that rtw8723x_mac_init()
> writes for the whole 8723x family, 0x700060ce, with BIT_APP_FCS added.
> The generic default is a different set: it has BIT_PKTCTL_DLEN and lacks
> BIT_CBSSID_DATA, BIT_CBSSID_BCN and BIT_AMF, so it drops exactly the bits
> fw.c manipulates on this chip.
That's fine. The value written by rtw8723x_mac_init() gets overwritten
with the default value from rtw_core_init().
>
> BIT_APP_FCS has to be set because rtw88 advertises RX_INCLUDES_FCS for
> every chip and the shared 8723x value has bit 31 clear; without it
> mac80211 trims four bytes of real frame data. v4 says this at the
> assignment.
>
>>> + rtw8723b_init_adaptive_ctrl(rtwdev);
>>> + rtw8723b_init_edca(rtwdev);
>>> + rtw8723b_init_retry_function(rtwdev);
>>
>> So RTL8723B is very different from existing chips?
>
> No, and the siblings write the same registers with the same values.
>
> rtw8703b_phy_set_param() writes REG_SPEC_SIFS, REG_MAC_SPEC_SIFS, REG_SIFS
> and REG_SIFS + 2 with the same 0x100a, ACKTO is 0x40 in both, and
> REG_RETRY_LIMIT uses the same 0x3030 in both. Its four EDCA registers are
> the same magnitudes as here:
>
> 8703b 0x002FA226 VO 0x005EA324 VI 0x005EA42B BE 0x0000A44F BK
> 8723b 0x002FA226 VO 0x005EA324 VI 0x005EA42B BE 0x0000A44F BK
>
> rtw88xxa.c writes REG_RRSR with the same 0xfffff / 0xffff1 pair used here,
> and REG_RESP_SIFS_CCK and REG_RESP_SIFS_OFDM are the pair that only this
> chip and 8822c write. So I read the three helpers as the family pattern
> rather than as something chip specific. Say the word if you would rather
> have them inlined into rtw8723b_phy_set_param() the way 8703b has them;
> that is a smaller diff.
>
>>> +static bool rtw8723b_sdio_needs_rx_path_fix(struct rtw_dev *rtwdev)
>>
>> What does it mean?
>>
>> In many places using this function are not RX path.
>
> Right, the name hid what it is, and it is a test the preparation series
> already provides. The function gates the SDIO only register work: the PAD
> mux restore in post_enable_flow, the path control save and restore around
> IQK, and the trailing re-assert in set_channel. v4 drops the local helper
> and calls rtw_is_8723bs() at those seven places, which is what rx.c, tx.c
> and sdio.c already use.
>
> One more, where the review asked for a change that was already there.
> The declarations in rtw8723b_reassert_rx_path() that you marked for
> reverse X'mas order are already longest first, three u32 lines followed
> by two u8 lines, and they are the same in the sent v3 and in v4. If you
> had a different order in mind, tell me which and I will apply it.
>
> I re-ran the hardware validation on this exact tip after these changes.
> The suite and the soak both pass: association, WPA2, DHCP, throughput,
> latency, scans under traffic, 20/20 reload/reassociate, link cycles and
> reconnects, with no error, TX-report, H2C, LPS or lockdep lines in dmesg,
> and no regression against the branch that was validated before.
>
> Best regards,
> Luka Gejak
next prev parent reply other threads:[~2026-09-27 17:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 15:43 [PATCH v3 0/6] wifi: rtw88: add RTL8723B/RTL8723BS support Luka Gejak
2026-09-21 15:43 ` [PATCH v3 1/6] wifi: rtw88: 8723b: add the RTL8723B register definitions Luka Gejak
2026-09-23 7:44 ` Ping-Ke Shih
2026-09-21 15:43 ` [PATCH v3 2/6] wifi: rtw88: 8723b: add the RTL8723B BB, RF and AGC tables Luka Gejak
2026-09-23 7:50 ` Ping-Ke Shih
2026-09-23 8:27 ` Luka Gejak
2026-09-23 8:34 ` Ping-Ke Shih
2026-09-23 8:44 ` Luka Gejak
2026-09-23 8:59 ` Ping-Ke Shih
2026-09-23 9:09 ` Luka Gejak
2026-09-21 15:43 ` [PATCH v3 3/6] wifi: rtw88: 8723b: add the RTL8723B chip driver Luka Gejak
2026-09-23 8:30 ` Ping-Ke Shih
2026-09-23 21:50 ` Luka Gejak
2026-09-24 3:11 ` Ping-Ke Shih
2026-09-24 8:30 ` Luka Gejak
2026-09-29 2:04 ` Ping-Ke Shih
2026-09-28 6:25 ` Johannes Berg
2026-09-28 6:57 ` Luka Gejak
2026-09-27 17:37 ` Bitterblue Smith [this message]
2026-09-21 15:43 ` [PATCH v3 4/6] wifi: rtw88: 8723bs: add the RTL8723BS SDIO bind Luka Gejak
2026-09-23 9:04 ` Ping-Ke Shih
2026-09-21 15:43 ` [PATCH v3 5/6] wifi: rtw88: 8723bs: enable building the RTL8723BS driver Luka Gejak
2026-09-21 15:43 ` [PATCH v3 6/6] MAINTAINERS: add entry for the RTL8723B rtw88 driver Luka Gejak
2026-09-21 16:25 ` Johannes Berg
2026-09-21 16:49 ` Luka Gejak
2026-09-21 18:14 ` Johannes Berg
2026-09-21 22:35 ` Jeff Johnson
2026-09-21 23:53 ` Luka Gejak
2026-09-22 0:28 ` Ping-Ke Shih
2026-09-22 0:43 ` Luka Gejak
2026-09-22 0:50 ` Ping-Ke Shih
2026-09-22 1:07 ` Luka Gejak
2026-09-24 1:42 ` Ping-Ke Shih
2026-09-24 17:43 ` Jeff Johnson
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=62a91a6c-f18f-4f74-a4a8-90a15489ac26@gmail.com \
--to=rtl8821cerfe2@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=luka.gejak@linux.dev \
--cc=pbrobinson@gmail.com \
--cc=pkshih@realtek.com \
--cc=straube.linux@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
all inboxes | Powered by JetHome®