]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: mac: consolidate quota into a struct for variant chips
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 15 May 2026 01:44:32 +0000 (09:44 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 25 May 2026 06:01:32 +0000 (14:01 +0800)
RTL8922D has many variants, using different quota tables. Consolidate the
quota data into a struct, and then select corresponding table for the
chip variant.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260515014433.16168-13-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/rtw8851b.c
drivers/net/wireless/realtek/rtw89/rtw8852a.c
drivers/net/wireless/realtek/rtw89/rtw8852b.c
drivers/net/wireless/realtek/rtw89/rtw8852bt.c
drivers/net/wireless/realtek/rtw89/rtw8852c.c
drivers/net/wireless/realtek/rtw89/rtw8922a.c
drivers/net/wireless/realtek/rtw89/rtw8922d.c

index aaef2c8b35bec97c690d04c8b9f56135661e4034..27d9a916d58cb5941c54b8f670a185a2758e8376 100644 (file)
@@ -4239,6 +4239,11 @@ struct rtw89_fw_def {
        u16 fw_b_aid;
 };
 
+struct rtw89_qta_def {
+       const struct rtw89_hfc_param_ini *hfc_param_ini[RTW89_HCI_DLE_TYPE_NUM];
+       const struct rtw89_dle_mem *dle_mem[RTW89_HCI_DLE_TYPE_NUM];
+};
+
 struct rtw89_phy_table {
        const struct rtw89_reg2_def *regs;
        u32 n_regs;
@@ -4654,8 +4659,7 @@ struct rtw89_chip_info {
        u16 max_rx_agg_num;
        bool dis_2g_40m_ul_ofdma;
        u32 rsvd_ple_ofst;
-       const struct rtw89_hfc_param_ini *hfc_param_ini[RTW89_HCI_DLE_TYPE_NUM];
-       const struct rtw89_dle_mem *dle_mem[RTW89_HCI_DLE_TYPE_NUM];
+       struct rtw89_qta_def qta_def;
        u8 wde_qempty_acq_grpnum;
        u8 wde_qempty_mgq_grpsel;
        u32 rf_base_addr[2];
@@ -4784,6 +4788,7 @@ struct rtw89_chip_variant {
        bool no_mcs_12_13: 1;
        u32 fw_min_ver_code;
        const struct rtw89_fw_def *fw_def_override;
+       const struct rtw89_qta_def *qta_def_override;
 };
 
 union rtw89_bus_info {
@@ -7743,6 +7748,17 @@ const struct rtw89_fw_def *rtw89_chip_get_fw_def(struct rtw89_dev *rtwdev)
        return __rtw89_chip_get_fw_def(rtwdev->chip, rtwdev->variant);
 }
 
+static inline
+const struct rtw89_qta_def *rtw89_chip_get_qta_def(struct rtw89_dev *rtwdev)
+{
+       const struct rtw89_chip_variant *variant = rtwdev->variant;
+
+       if (variant && variant->qta_def_override)
+               return variant->qta_def_override;
+
+       return &rtwdev->chip->qta_def;
+}
+
 static inline void rtw89_load_txpwr_table(struct rtw89_dev *rtwdev,
                                          const struct rtw89_txpwr_table *tbl)
 {
index 5c22b2accf7c07ec045e0d8f9ef287797c063edd..bd606d1da6346192fbdc64fba930f9d3759c0eb9 100644 (file)
@@ -894,11 +894,12 @@ EXPORT_SYMBOL(rtw89_mac_set_err_status);
 
 static int hfc_reset_param(struct rtw89_dev *rtwdev)
 {
+       const struct rtw89_qta_def *qta_def = rtw89_chip_get_qta_def(rtwdev);
        const struct rtw89_hfc_param_ini *param_ini, *param_inis;
        struct rtw89_hfc_param *param = &rtwdev->mac.hfc_param;
        u8 qta_mode = rtwdev->mac.dle_info.qta_mode;
 
-       param_inis = rtwdev->chip->hfc_param_ini[rtwdev->hci.dle_type];
+       param_inis = qta_def->hfc_param_ini[rtwdev->hci.dle_type];
        if (!param_inis)
                return -EINVAL;
 
@@ -1897,10 +1898,11 @@ EXPORT_SYMBOL(rtw89_mac_size);
 static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev,
                                                   enum rtw89_qta_mode mode)
 {
+       const struct rtw89_qta_def *qta_def = rtw89_chip_get_qta_def(rtwdev);
        struct rtw89_mac_info *mac = &rtwdev->mac;
        const struct rtw89_dle_mem *cfg, *cfgs;
 
-       cfgs = rtwdev->chip->dle_mem[rtwdev->hci.dle_type];
+       cfgs = qta_def->dle_mem[rtwdev->hci.dle_type];
        if (!cfgs)
                return NULL;
 
index 2fb54e1fc7ab23bc8a8f79deba5a23c2855d7b95..60f3625936966f528b67da31eb3661ee81a33a8f 100644 (file)
@@ -2648,14 +2648,16 @@ const struct rtw89_chip_info rtw8851b_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = true,
        .rsvd_ple_ofst          = 0x2f800,
-       .hfc_param_ini          = {rtw8851b_hfc_param_ini_pcie,
+       .qta_def = {
+               .hfc_param_ini  = {rtw8851b_hfc_param_ini_pcie,
                                   rtw8851b_hfc_param_ini_usb,
                                   rtw8851b_hfc_param_ini_usb,
                                   NULL},
-       .dle_mem                = {rtw8851b_dle_mem_pcie,
+               .dle_mem        = {rtw8851b_dle_mem_pcie,
                                   rtw8851b_dle_mem_usb2,
                                   rtw8851b_dle_mem_usb3,
                                   NULL},
+       },
        .wde_qempty_acq_grpnum  = 4,
        .wde_qempty_mgq_grpsel  = 4,
        .rf_base_addr           = {0xe000},
index d3b6e8a7f5bdba76cc7d47c05ba719b070d463d9..2c1f166e687f06d192ef5cf2d423351a33fd2d14 100644 (file)
@@ -2385,14 +2385,16 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = true,
        .rsvd_ple_ofst          = 0x6f800,
-       .hfc_param_ini          = {rtw8852a_hfc_param_ini_pcie,
+       .qta_def = {
+               .hfc_param_ini  = {rtw8852a_hfc_param_ini_pcie,
                                   rtw8852a_hfc_param_ini_usb,
                                   rtw8852a_hfc_param_ini_usb,
                                   NULL},
-       .dle_mem                = {rtw8852a_dle_mem_pcie,
+               .dle_mem        = {rtw8852a_dle_mem_pcie,
                                   rtw8852a_dle_mem_usb,
                                   rtw8852a_dle_mem_usb,
                                   NULL},
+       },
        .wde_qempty_acq_grpnum  = 16,
        .wde_qempty_mgq_grpsel  = 16,
        .rf_base_addr           = {0xc000, 0xd000},
index 989ac38fe3598f51923bbafeddd1d644c19ed07b..4e7b068aaa75b1d4d7908039cc337a8b0ae0cc3c 100644 (file)
@@ -979,14 +979,16 @@ const struct rtw89_chip_info rtw8852b_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = true,
        .rsvd_ple_ofst          = 0x2f800,
-       .hfc_param_ini          = {rtw8852b_hfc_param_ini_pcie,
+       .qta_def = {
+               .hfc_param_ini  = {rtw8852b_hfc_param_ini_pcie,
                                   rtw8852b_hfc_param_ini_usb,
                                   rtw8852b_hfc_param_ini_usb,
                                   NULL},
-       .dle_mem                = {rtw8852b_dle_mem_pcie,
+               .dle_mem        = {rtw8852b_dle_mem_pcie,
                                   rtw8852b_dle_mem_usb3,
                                   rtw8852b_dle_mem_usb3,
                                   NULL},
+       },
        .wde_qempty_acq_grpnum  = 4,
        .wde_qempty_mgq_grpsel  = 4,
        .rf_base_addr           = {0xe000, 0xf000},
index b58561e141cbcc2372c6d003380ac44e5f052800..7fcc877f6ea0c4422d1f36e3904c2116d006cb67 100644 (file)
@@ -825,8 +825,10 @@ const struct rtw89_chip_info rtw8852bt_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = true,
        .rsvd_ple_ofst          = 0x6f800,
-       .hfc_param_ini          = {rtw8852bt_hfc_param_ini_pcie, NULL, NULL, NULL},
-       .dle_mem                = {rtw8852bt_dle_mem_pcie, NULL, NULL, NULL},
+       .qta_def = {
+               .hfc_param_ini  = {rtw8852bt_hfc_param_ini_pcie, NULL, NULL, NULL},
+               .dle_mem        = {rtw8852bt_dle_mem_pcie, NULL, NULL, NULL},
+       },
        .wde_qempty_acq_grpnum  = 4,
        .wde_qempty_mgq_grpsel  = 4,
        .rf_base_addr           = {0xe000, 0xf000},
index 9ecd140dcdd582c09475d9bba6d0dddd50a5790e..7bb1264bcaef2658a015eb9cec329b1b4d306f31 100644 (file)
@@ -3174,14 +3174,16 @@ const struct rtw89_chip_info rtw8852c_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = false,
        .rsvd_ple_ofst          = 0x6f800,
-       .hfc_param_ini          = {rtw8852c_hfc_param_ini_pcie,
+       .qta_def = {
+               .hfc_param_ini  = {rtw8852c_hfc_param_ini_pcie,
                                   rtw8852c_hfc_param_ini_usb,
                                   rtw8852c_hfc_param_ini_usb,
                                   NULL},
-       .dle_mem                = {rtw8852c_dle_mem_pcie,
+               .dle_mem        = {rtw8852c_dle_mem_pcie,
                                   rtw8852c_dle_mem_usb2,
                                   rtw8852c_dle_mem_usb3,
                                   NULL},
+       },
        .wde_qempty_acq_grpnum  = 16,
        .wde_qempty_mgq_grpsel  = 16,
        .rf_base_addr           = {0xe000, 0xf000},
index 07270e83b778d59671fb7fbb0ab4c7638dd748e6..ad3618dfd57d00159bdd44193644db493dd08914 100644 (file)
@@ -3169,14 +3169,16 @@ const struct rtw89_chip_info rtw8922a_chip_info = {
        .max_rx_agg_num         = 64,
        .dis_2g_40m_ul_ofdma    = false,
        .rsvd_ple_ofst          = 0x8f800,
-       .hfc_param_ini          = {rtw8922a_hfc_param_ini_pcie,
+       .qta_def = {
+               .hfc_param_ini  = {rtw8922a_hfc_param_ini_pcie,
                                   rtw8922a_hfc_param_ini_usb2,
                                   rtw8922a_hfc_param_ini_usb3,
                                   NULL},
-       .dle_mem                = {rtw8922a_dle_mem_pcie,
+               .dle_mem        = {rtw8922a_dle_mem_pcie,
                                   rtw8922a_dle_mem_usb2,
                                   rtw8922a_dle_mem_usb3,
                                   NULL},
+       },
        .wde_qempty_acq_grpnum  = 4,
        .wde_qempty_mgq_grpsel  = 4,
        .rf_base_addr           = {0xe000, 0xf000},
@@ -3307,6 +3309,7 @@ const struct rtw89_chip_variant rtw8922ae_vs_variant = {
        .no_mcs_12_13 = true,
        .fw_min_ver_code = RTW89_FW_VER_CODE(0, 35, 54, 0),
        .fw_def_override = NULL,
+       .qta_def_override = NULL,
 };
 EXPORT_SYMBOL(rtw8922ae_vs_variant);
 
index c1ce507a250a4d78f78551becba41a257eea5bb7..fe3b0dc2a027cee91dda38ea4415bcdb6495f534 100644 (file)
@@ -3171,8 +3171,10 @@ const struct rtw89_chip_info rtw8922d_chip_info = {
        .max_rx_agg_num         = 256,
        .dis_2g_40m_ul_ofdma    = false,
        .rsvd_ple_ofst          = 0x5f800,
-       .hfc_param_ini          = {rtw8922d_hfc_param_ini_pcie, NULL, NULL, NULL},
-       .dle_mem                = {rtw8922d_dle_mem_pcie, NULL, NULL, NULL},
+       .qta_def = {
+               .hfc_param_ini  = {rtw8922d_hfc_param_ini_pcie, NULL, NULL, NULL},
+               .dle_mem        = {rtw8922d_dle_mem_pcie, NULL, NULL, NULL},
+       },
        .wde_qempty_acq_grpnum  = 8,
        .wde_qempty_mgq_grpsel  = 8,
        .rf_base_addr           = {0x3e000, 0x3f000},
@@ -3308,6 +3310,7 @@ const struct rtw89_chip_variant rtw8922de_vs_variant = {
        .no_mcs_12_13 = true,
        .fw_min_ver_code = RTW89_FW_VER_CODE(0, 0, 0, 0),
        .fw_def_override = &rtw8922de_vs_fw_def,
+       .qta_def_override = NULL,
 };
 EXPORT_SYMBOL(rtw8922de_vs_variant);