All of lore.kernel.org
 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 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.