The branch main has been updated by bz:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=80ba8933a991d245b3983f9e2ed1171b11ccaf8a

commit 80ba8933a991d245b3983f9e2ed1171b11ccaf8a
Author:     Bjoern A. Zeeb <[email protected]>
AuthorDate: 2026-01-20 10:56:33 +0000
Commit:     Bjoern A. Zeeb <[email protected]>
CommitDate: 2026-01-21 19:57:15 +0000

    rtw88: update Realtek's rtw88 driver
    
    This version is based on
    git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 ( tag: v6.19-rc6 ).
    
    Sponsored by:   The FreeBSD Foundation
---
 sys/contrib/dev/rtw88/bf.c        | 8 +++++++-
 sys/contrib/dev/rtw88/bf.h        | 7 +++++++
 sys/contrib/dev/rtw88/rtw8822bu.c | 2 ++
 sys/contrib/dev/rtw88/rtw8822cu.c | 2 ++
 sys/contrib/dev/rtw88/sdio.c      | 4 +++-
 sys/modules/rtw88/Makefile        | 2 +-
 6 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/sys/contrib/dev/rtw88/bf.c b/sys/contrib/dev/rtw88/bf.c
index 16c6a1d972e5..8969a1e0cb47 100644
--- a/sys/contrib/dev/rtw88/bf.c
+++ b/sys/contrib/dev/rtw88/bf.c
@@ -129,8 +129,11 @@ void rtw_bf_init_bfer_entry_mu(struct rtw_dev *rtwdev,
 void rtw_bf_cfg_sounding(struct rtw_dev *rtwdev, struct rtw_vif *vif,
                         enum rtw_trx_desc_rate rate)
 {
+       u8 csi_rsc = CSI_RSC_FOLLOW_RX_PACKET_BW;
        u32 psf_ctl = 0;
-       u8 csi_rsc = 0x1;
+
+       if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C)
+               csi_rsc = CSI_RSC_PRIMARY_20M_BW;
 
        psf_ctl = rtw_read32(rtwdev, REG_BBPSF_CTRL) |
                  BIT_WMAC_USE_NDPARATE |
@@ -392,6 +395,9 @@ void rtw_bf_cfg_csi_rate(struct rtw_dev *rtwdev, u8 rssi, 
u8 cur_rate,
        csi_cfg = rtw_read32(rtwdev, REG_BBPSF_CTRL) & ~BIT_MASK_CSI_RATE;
        cur_rrsr = rtw_read16(rtwdev, REG_RRSR);
 
+       if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C)
+               csi_cfg |= BIT_CSI_FORCE_RATE;
+
        if (rssi >= 40) {
                if (cur_rate != DESC_RATE54M) {
                        cur_rrsr |= BIT(DESC_RATE54M);
diff --git a/sys/contrib/dev/rtw88/bf.h b/sys/contrib/dev/rtw88/bf.h
index 7b40c2c03856..a5d3010e6be6 100644
--- a/sys/contrib/dev/rtw88/bf.h
+++ b/sys/contrib/dev/rtw88/bf.h
@@ -33,6 +33,7 @@
 #define BIT_SHIFT_R_MU_RL              12
 #define BIT_SHIFT_WMAC_TXMU_ACKPOLICY  4
 #define BIT_SHIFT_CSI_RATE             24
+#define BIT_CSI_FORCE_RATE             BIT(15)
 
 #define BIT_MASK_R_MU_RL (R_MU_RL << BIT_SHIFT_R_MU_RL)
 #define BIT_MASK_R_MU_TABLE_VALID      0x3f
@@ -48,6 +49,12 @@
 #define RTW_SND_CTRL_REMOVE    0x98
 #define RTW_SND_CTRL_SOUNDING  0x9B
 
+enum csi_rsc {
+       CSI_RSC_PRIMARY_20M_BW = 0,
+       CSI_RSC_FOLLOW_RX_PACKET_BW = 1,
+       CSI_RSC_DUPLICATE_MODE = 2,
+};
+
 enum csi_seg_len {
        HAL_CSI_SEG_4K = 0,
        HAL_CSI_SEG_8K = 1,
diff --git a/sys/contrib/dev/rtw88/rtw8822bu.c 
b/sys/contrib/dev/rtw88/rtw8822bu.c
index efda9887cc41..2886f470df71 100644
--- a/sys/contrib/dev/rtw88/rtw8822bu.c
+++ b/sys/contrib/dev/rtw88/rtw8822bu.c
@@ -79,6 +79,8 @@ static const struct usb_device_id rtw_8822bu_id_table[] = {
          .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* D-Link 
DWA-T185 rev. A1 */
        { USB_DEVICE_AND_INTERFACE_INFO(0x0411, 0x03d1, 0xff, 0xff, 0xff),
          .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* BUFFALO 
WI-U2-866DM */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x0411, 0x03d0, 0xff, 0xff, 0xff),
+         .driver_info = (kernel_ulong_t)&(rtw8822b_hw_spec) }, /* BUFFALO 
WI-U3-866DHP */
        {},
 };
 MODULE_DEVICE_TABLE(usb, rtw_8822bu_id_table);
diff --git a/sys/contrib/dev/rtw88/rtw8822cu.c 
b/sys/contrib/dev/rtw88/rtw8822cu.c
index 90fcbb8ec629..a5f8311c022b 100644
--- a/sys/contrib/dev/rtw88/rtw8822cu.c
+++ b/sys/contrib/dev/rtw88/rtw8822cu.c
@@ -21,6 +21,8 @@ static const struct usb_device_id rtw_8822cu_id_table[] = {
          .driver_info = (kernel_ulong_t)&(rtw8822c_hw_spec) },
        { USB_DEVICE_AND_INTERFACE_INFO(0x13b1, 0x0043, 0xff, 0xff, 0xff),
          .driver_info = (kernel_ulong_t)&(rtw8822c_hw_spec) }, /* Alpha - 
Alpha */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3329, 0xff, 0xff, 0xff),
+         .driver_info = (kernel_ulong_t)&(rtw8822c_hw_spec) }, /* D-Link AC13U 
rev. A1 */
        {},
 };
 MODULE_DEVICE_TABLE(usb, rtw_8822cu_id_table);
diff --git a/sys/contrib/dev/rtw88/sdio.c b/sys/contrib/dev/rtw88/sdio.c
index 99d7c629eac6..e35de52d8eb4 100644
--- a/sys/contrib/dev/rtw88/sdio.c
+++ b/sys/contrib/dev/rtw88/sdio.c
@@ -144,8 +144,10 @@ static u32 rtw_sdio_to_io_address(struct rtw_dev *rtwdev, 
u32 addr,
 
 static bool rtw_sdio_use_direct_io(struct rtw_dev *rtwdev, u32 addr)
 {
+       bool might_indirect_under_power_off = rtwdev->chip->id == 
RTW_CHIP_TYPE_8822C;
+
        if (!test_bit(RTW_FLAG_POWERON, rtwdev->flags) &&
-           !rtw_sdio_is_bus_addr(addr))
+           !rtw_sdio_is_bus_addr(addr) && might_indirect_under_power_off)
                return false;
 
        return !rtw_sdio_is_sdio30_supported(rtwdev) ||
diff --git a/sys/modules/rtw88/Makefile b/sys/modules/rtw88/Makefile
index ee47df54bcf9..0ce6ad3f99bb 100644
--- a/sys/modules/rtw88/Makefile
+++ b/sys/modules/rtw88/Makefile
@@ -46,7 +46,7 @@ SRCS+=        ${LINUXKPI_GENSRCS}
 SRCS+= opt_wlan.h opt_inet6.h opt_inet.h
 
 CFLAGS+=       -DKBUILD_MODNAME='"rtw88"'
-CFLAGS+=       -DLINUXKPI_VERSION=61700
+CFLAGS+=       -DLINUXKPI_VERSION=61900
 
 CFLAGS+=       -I${DEVRTW88DIR}
 CFLAGS+=       ${LINUXKPI_INCLUDES}

Reply via email to