mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Luka Gejak" <luka.gejak@linux.dev>
To: "Ping-Ke Shih" <pkshih@realtek.com>
Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Michael  Straube" <straube.linux@gmail.com>,
	"Peter Robinson" <pbrobinson@gmail.com>,
	"Bitterblue Smith" <rtl8821cerfe2@gmail.com>,
	luka.gejak@linux.dev
Subject: Re: [PATCH rtw-next v7 4/6] wifi: rtw88: 8723b: add the RTL8723B chip driver
Date: Tue, 06 Oct 2026 04:30:27 +0000	[thread overview]
Message-ID: <a1d007fffc35466a2d63a3fe6839286f3488d7be@linux.dev> (raw)
In-Reply-To: <359ea3a6857d4aba9c83876a10f7f9e8@realtek.com>

October 6, 2026 at 02:39, "Ping-Ke Shih" <pkshih@realtek.com mailto:pkshih@realtek.com?to=%22Ping-Ke%20Shih%22%20%3Cpkshih%40realtek.com%3E > wrote:


> 
> Luka Gejak <luka.gejak@linux.dev> wrote:
> 
> > 
> > On Mon Oct 5, 2026 at 8:08 AM CEST, Ping-Ke Shih wrote:
> >  Luka Gejak <luka.gejak@linux.dev> wrote:
> >  [...]
> >  +/*
> >  + * Shares the receive PHY status layout, the SDIO aggregation burst fields
> >  + * and a few baseband registers with the RTL8703B; reuse that header.
> >  + */
> >  +#include "rtw8703b.h"
> > 
> >  Which layout you are using?
> >  Should you move the layout to rtw8723x.h ?
> > 
> >  
> >  The layout I reuse is the RTL8703B receive PHY status structure, struct
> >  phy_status_8703b, together with the SDIO aggregation burst fields and four
> >  baseband registers.
> > 
> Let's use another patch to move the struct out of rtw8703b.h, and rename
> to phy_status_8723x for example.

Understood, will do.

> 
> > 
> > However, including rtw8703b.h from another chip driver is
> >  already established, rtw8723cs.c includes it to reuse rtw8703b_hw_spec.
> > 
> As I know, 8723CS and 8723B are mutual alias, no?

As far as I know, they are not. They are different chips.

> 
> > 
> > So I
> >  would rather keep the same include here, and if you want the layout in rtw8723x.h
> >  I can send that as a separate patch later, so this series does not touch
> >  additional 2 drivers.
> > 
> Yes, another patch before this one. 
> 

Ok.

> > 
> > +/*
> >  + * Row 20 (-6.0 dB) intentionally does not match the v5.2.17 vendor driver,
> > 
> >  I really don't want to mention vendor driver here. If you really need it,
> >  mention it in commit message or cover-letter.
> > 
> >  + * which has 0x1c, 0x1a, 0x18, 0x12, 0x0e, 0x08 there. Every other row agrees.
> >  + * The values below are what rtl8723be, the mainline driver for this same
> >  + * chip, uses at the same index, and they are also what the vendor's own
> >  + * cck_swing_table_ch1_ch13_92e and the staging rtl8723bs driver use. They
> >  + * also track the 0.5 dB step of the surrounding rows: against row 32 as 0 dB,
> >  + * 0x1b is within 0.06 of the ideal -6.0 dB value while 0x1c is 0.94 away,
> >  + * the largest error anywhere in the table. Treat the vendor row as the
> >  + * anomaly and do not "fix" this towards it.
> > 
> >  And you have comments each row. Is it still need this block comment to explain?
> > 
> >  
> >  I agree, will drop vendor reference and block comment.
> > 
> I'm not sure if LLM writes this? LLM always write verbose comments for
> each line it added. Just ask LLM to write self-explained code.

No, I wrote it because only 1 row differs from vendor driver and I
thought I should mention it.

> 
> [...]
> 
> > 
> > +
> >  +static const struct rtw_chip_ops rtw8723b_ops = {
> >  + .power_on = rtw_power_on,
> >  + .power_off = rtw_power_off,
> >  +
> >  + .mac_init = rtw8723x_mac_init,
> >  + .mac_postinit = rtw8723x_mac_postinit,
> >  +
> >  + .dump_fw_crash = NULL,
> >  + /*
> >  + * 8723d sets REG_HCI_OPT_CTRL BIT_USB_SUS_DIS in its shutdown
> >  + * function; that is USB-only.
> >  + */
> >  + .shutdown = NULL,
> >  + .read_efuse = rtw8723b_read_efuse,
> >  + .phy_set_param = rtw8723b_phy_set_param,
> >  +
> >  + .set_channel = rtw8723b_set_channel,
> >  +
> >  + .query_phy_status = rtw8723b_query_phy_status,
> >  + .read_rf = rtw_phy_read_rf_sipi,
> >  + .write_rf = rtw_phy_write_rf_reg_sipi,
> >  + .set_tx_power_index = rtw8723x_set_tx_power_index,
> >  + .rsvd_page_dump = NULL,
> >  + .set_antenna = NULL,
> >  + .cfg_ldo25 = rtw8723b_cfg_ldo25,
> >  + .efuse_grant = rtw8723b_efuse_grant,
> >  + .set_ampdu_factor = NULL,
> >  + .false_alarm_statistics = rtw8723x_false_alarm_statistics,
> >  + .phy_calibration = rtw8723b_phy_calibration,
> >  + .dpk_track = NULL,
> >  + .cck_pd_set = rtw_phy_cck_pd_set,
> >  + .pwr_track = rtw8723b_pwr_track,
> >  + .config_bfee = NULL,
> >  + .set_gid_table = NULL,
> >  + .cfg_csi_rate = NULL,
> >  + .adaptivity_init = NULL,
> >  + .adaptivity = NULL,
> >  + .cfo_init = NULL,
> >  + .cfo_track = NULL,
> >  + .config_tx_path = NULL,
> >  + .config_txrx_mode = NULL,
> >  + .led_set = NULL,
> >  + .fill_txdesc_checksum = rtw8723b_fill_txdesc_checksum,
> >  +
> >  + .coex_set_init = rtw8723b_coex_cfg_init,
> >  + .coex_set_ant_switch = rtw8723b_coex_cfg_ant_switch,
> >  + .coex_set_gnt_fix = rtw8723b_coex_set_gnt_fix,
> >  + .coex_set_gnt_debug = rtw8723b_coex_set_gnt_debug,
> >  + .coex_set_rfe_type = rtw8723b_coex_set_rfe_type,
> >  + .coex_set_wl_tx_power = rtw8723b_coex_set_wl_tx_power,
> >  + .coex_set_wl_rx_gain = rtw8723b_coex_set_wl_rx_gain,
> >  +};
> >  +
> >  +const struct rtw_chip_info rtw8723b_hw_spec = {
> >  + .ops = &rtw8723b_ops,
> >  + .id = RTW_CHIP_TYPE_8723B,
> >  + .fw_name = "rtw88/rtw8723b_fw.bin",
> >  + .wlan_cpu = RTW_WCPU_8051,
> >  + .tx_pkt_desc_sz = 40,
> >  + .tx_buf_desc_sz = 16,
> >  + .rx_pkt_desc_sz = 24,
> >  + .rx_buf_desc_sz = 8,
> >  + .phy_efuse_size = 512,
> >  + .log_efuse_size = 512,
> >  + .ptct_efuse_size = 15,
> >  + .txff_size = 32768,
> >  + .rxff_size = 16384,
> >  + .rsvd_drv_pg_num = 8,
> >  + .txgi_factor = 1,
> >  + .is_pwr_by_rate_dec = true,
> >  + .max_power_index = 0x3f,
> >  + .csi_buf_pg_num = 0,
> >  + .band = RTW_BAND_2G,
> >  + .page_size = TX_PAGE_SIZE,
> >  + .dig_min = 0x20,
> >  + .usb_tx_agg_desc_num = 6,
> >  + /*
> >  + * The firmware reports id 0xfd instead of C2H_HW_FEATURE_REPORT, so
> >  + * the hardware feature report is not supported on this chip.
> >  + */
> >  + .hw_feature_report = false,
> >  + .c2h_ra_report_size = 4,
> >  + .old_datarate_fb_limit = true,
> >  + .path_div_supported = false,
> >  + .ht_supported = true,
> >  + .vht_supported = false,
> >  + .lps_deep_mode_supported = 0,
> >  + .sys_func_en = 0xfd,
> >  + .pwr_on_seq = card_enable_flow_8723b,
> >  + .pwr_off_seq = card_disable_flow_8723b,
> >  + .page_table = page_table_8723b,
> >  + .rqpn_table = rqpn_table_8723b,
> >  + /* same shared table as the sibling rtw8703b and rtw8723d */
> >  + .prioq_addrs = &rtw8723x_common.prioq_addrs,
> >  + /* used only in pci.c, not needed for SDIO devices */
> >  + .intf_table = NULL,
> >  + .dig = rtw8723x_common.dig,
> >  + /* The vendor driver never writes the CCK IGI on this chip. */
> >  + .dig_cck = NULL,
> >  + .rf_sipi_addr = {0x840, 0x844},
> >  + .rf_sipi_read_addr = rtw8723x_common.rf_sipi_addr,
> >  + .fix_rf_phy_num = 2,
> >  + /* This chip has no LTE coex registers. */
> >  + .ltecoex_addr = NULL,
> >  + .mac_tbl = &rtw8723b_mac_tbl,
> >  + .agc_tbl = &rtw8723b_agc_tbl,
> >  + .bb_tbl = &rtw8723b_bb_tbl,
> >  + .rf_tbl = {&rtw8723b_rf_a_tbl},
> >  + .rfe_defs = rtw8723b_rfe_defs,
> >  + .rfe_defs_size = ARRAY_SIZE(rtw8723b_rfe_defs),
> >  + .iqk_threshold = 8,
> >  + .rx_ldpc = false,
> >  + .tx_stbc = false,
> >  + .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
> >  + .max_scan_ie_len = IEEE80211_MAX_DATA_LEN,
> >  + .coex_para_ver = 20180201, /* glcoex_ver_date_8723b_1ant */
> >  + .bt_desired_ver = 0x6d,
> >  + .scbd_support = false,
> >  + .new_scbd10_def = true,
> >  + .ble_hid_profile_support = false,
> >  + .wl_mimo_ps_support = false,
> >  + .pstdma_type = COEX_PSTDMA_FORCE_LPSOFF,
> >  + .bt_rssi_type = COEX_BTRSSI_RATIO,
> >  + .ant_isolation = 15,
> >  + .rssi_tolerance = 2,
> >  + .wl_rssi_step = wl_rssi_step_8723b,
> >  + .bt_rssi_step = bt_rssi_step_8723b,
> >  + .table_sant_num = ARRAY_SIZE(table_sant_8723b),
> >  + .table_sant = table_sant_8723b,
> >  + .table_nsant_num = ARRAY_SIZE(table_nsant_8723b),
> >  + .table_nsant = table_nsant_8723b,
> >  + .tdma_sant_num = ARRAY_SIZE(tdma_sant_8723b),
> >  + .tdma_sant = tdma_sant_8723b,
> >  + .tdma_nsant_num = ARRAY_SIZE(tdma_nsant_8723b),
> >  + .tdma_nsant = tdma_nsant_8723b,
> >  + .wl_rf_para_num = ARRAY_SIZE(rf_para_tx_8723b),
> >  + .wl_rf_para_tx = rf_para_tx_8723b,
> >  + .wl_rf_para_rx = rf_para_rx_8723b,
> >  + .bt_afh_span_bw20 = 0x20,
> >  + .bt_afh_span_bw40 = 0x30,
> >  + .afh_5g_num = ARRAY_SIZE(afh_5g_8723b),
> >  + .afh_5g = afh_5g_8723b,
> >  + /* BTG_SEL is driven by the cardemu_to_act power sequence instead. */
> >  + .btg_reg = NULL,
> >  + .coex_info_hw_regs_num = 0,
> >  + .coex_info_hw_regs = NULL,
> >  +};
> >  +EXPORT_SYMBOL(rtw8723b_hw_spec);
> > 
> >  I guess you copy these two tables from somewhere and modify the values.
> >  However, when I compare these with RTL8822C's ones. The order is very
> >  different... Can you align the order?
> > 
> >  Realtek WiFi chips are different from one to another, and we add many
> >  parameters to support the variants. To prevent the order being messed
> >  up, I ask people to add dummy (unused) fields (e.g. .xxx = NULL, .yyy = 0)
> >  to keep the order and consistent. But now, rtw88 becomes very different
> >  again.
> > 
> >  Let me know your source, I'd think how we can align them sometime.
> >  
> >  I took the ordering from the sibling rtw8703b and rtw8723d drivers. rtw8723b_ops
> >  is already in the order of the struct rtw_chip_ops declaration, and it follows the
> >  same order as rtw8703b_ops. I believe rtw8822c_ops is the one that differs, since it
> >  groups the fields by function instead of following the struct.
> > 
> Okay. Please make sure the ordering are the same as the one you copied. 
> 
> > 
> > The values were taken
> >  from the v5.2.17 vendor driver and checked against the staging rtl8723bs.
> > 
> I have no objection to values. 
> 
> > 
> > So I would
> >  prefer to leave both tables as they are. If you want the unused fields listed as dummies
> >  to pin the order, I can add them, but the sequence itself would not change.
> > 
> I will think a bit how to align these messed tables. 

I understand. I am gonna send v8 today, and do you think that v8 could
be merged, so driver lands in 7.4 release?

Best regards,
Luka Gejak

  reply	other threads:[~2026-10-06  4:30 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-02  7:38 [PATCH rtw-next v7 0/6] wifi: rtw88: add RTL8723B/RTL8723BS support Luka Gejak
2026-10-02  7:38 ` [PATCH rtw-next v7 1/6] wifi: rtw88: move the 88xxa CCK power detect setter to phy.c Luka Gejak
2026-10-05  3:52   ` Ping-Ke Shih
2026-10-02  7:38 ` [PATCH rtw-next v7 2/6] wifi: rtw88: 8723b: add the RTL8723B register definitions Luka Gejak
2026-10-05  3:54   ` Ping-Ke Shih
2026-10-02  7:38 ` [PATCH rtw-next v7 3/6] wifi: rtw88: 8723b: add the RTL8723B BB, RF and AGC tables Luka Gejak
2026-10-05  3:58   ` Ping-Ke Shih
2026-10-02  7:38 ` [PATCH rtw-next v7 4/6] wifi: rtw88: 8723b: add the RTL8723B chip driver Luka Gejak
2026-10-05  6:08   ` Ping-Ke Shih
2026-10-05 13:30     ` Luka Gejak
2026-10-06  0:39       ` Ping-Ke Shih
2026-10-06  4:30         ` Luka Gejak [this message]
2026-10-06  5:29           ` Ping-Ke Shih
2026-10-06  7:07             ` Luka Gejak
2026-10-06  9:05               ` Luka Gejak
2026-10-06 10:41                 ` Luka Gejak
2026-10-06 12:38                   ` Ping-Ke Shih
2026-10-06 11:18         ` Bitterblue Smith
2026-10-06 12:19           ` Luka Gejak
2026-10-02  7:38 ` [PATCH rtw-next v7 5/6] wifi: rtw88: 8723bs: add the RTL8723BS SDIO bind Luka Gejak
2026-10-05  6:09   ` Ping-Ke Shih
2026-10-02  7:38 ` [PATCH rtw-next v7 6/6] wifi: rtw88: 8723bs: enable building the RTL8723BS driver Luka Gejak
2026-10-05  6:10   ` Ping-Ke Shih
2026-10-03 21:26 ` [PATCH rtw-next v7 0/6] wifi: rtw88: add RTL8723B/RTL8723BS support Bitterblue Smith
2026-10-03 21:46   ` 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=a1d007fffc35466a2d63a3fe6839286f3488d7be@linux.dev \
    --to=luka.gejak@linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pbrobinson@gmail.com \
    --cc=pkshih@realtek.com \
    --cc=rtl8821cerfe2@gmail.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®