]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: mac: define preload_init for generations
authorPing-Ke Shih <pkshih@realtek.com>
Thu, 8 Jan 2026 12:03:16 +0000 (20:03 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 13 Jan 2026 02:29:15 +0000 (10:29 +0800)
The preload_init is to define preload size from memory to transmitting
buffer. The different generations should call its callback respectively
but suddenly it is missed. However, the register definitions of WiFi 6/7
are the same, things are well. For the coming RTL8922D, settings are
different, so abstract it.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260108120320.2217402-10-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/mac_be.c

index a008a1a02fe9a0ca67b4ec75daeb2fabe523c586..5bf81ef0313bb0da078b3f189b5d6291efcadbf3 100644 (file)
@@ -2283,8 +2283,8 @@ error:
        return ret;
 }
 
-static int preload_init_set(struct rtw89_dev *rtwdev, enum rtw89_mac_idx mac_idx,
-                           enum rtw89_qta_mode mode)
+static int preload_init_set_ax(struct rtw89_dev *rtwdev, u8 mac_idx,
+                              enum rtw89_qta_mode mode)
 {
        u32 reg, max_preld_size, min_rsvd_size;
 
@@ -2312,13 +2312,14 @@ static bool is_qta_poh(struct rtw89_dev *rtwdev)
 int rtw89_mac_preload_init(struct rtw89_dev *rtwdev, enum rtw89_mac_idx mac_idx,
                           enum rtw89_qta_mode mode)
 {
+       const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
        const struct rtw89_chip_info *chip = rtwdev->chip;
 
        if (chip->chip_id == RTL8852A || rtw89_is_rtl885xb(rtwdev) ||
            !is_qta_poh(rtwdev))
                return 0;
 
-       return preload_init_set(rtwdev, mac_idx, mode);
+       return mac->preload_init(rtwdev, mac_idx, mode);
 }
 
 static bool dle_is_txq_empty(struct rtw89_dev *rtwdev)
@@ -7287,6 +7288,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
        .check_mac_en = rtw89_mac_check_mac_en_ax,
        .sys_init = sys_init_ax,
        .trx_init = trx_init_ax,
+       .preload_init = preload_init_set_ax,
        .err_imr_ctrl = err_imr_ctrl_ax,
        .hci_func_en = rtw89_mac_hci_func_en_ax,
        .dmac_func_pre_en = rtw89_mac_dmac_func_pre_en_ax,
index 8ecb15f335eb8a4a2e697b91300f194927034970..815e12de0853115e541350e30eec55c929a3b1eb 100644 (file)
@@ -1037,6 +1037,8 @@ struct rtw89_mac_gen_def {
                            enum rtw89_mac_hwmod_sel sel);
        int (*sys_init)(struct rtw89_dev *rtwdev);
        int (*trx_init)(struct rtw89_dev *rtwdev);
+       int (*preload_init)(struct rtw89_dev *rtwdev, u8 mac_idx,
+                           enum rtw89_qta_mode mode);
        void (*err_imr_ctrl)(struct rtw89_dev *rtwdev, bool en);
        void (*hci_func_en)(struct rtw89_dev *rtwdev);
        void (*dmac_func_pre_en)(struct rtw89_dev *rtwdev);
index 5df243cf448e67e38f17d550da08bf433fa0e472..475d941d41a76517fc797817fc54edc36fc305df 100644 (file)
@@ -2832,6 +2832,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_be = {
        .check_mac_en = rtw89_mac_check_mac_en_be,
        .sys_init = sys_init_be,
        .trx_init = trx_init_be,
+       .preload_init = preload_init_be,
        .err_imr_ctrl = err_imr_ctrl_be,
        .hci_func_en = rtw89_mac_hci_func_en_be,
        .dmac_func_pre_en = rtw89_mac_dmac_func_pre_en_be,