summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPing-Ke Shih <pkshih@realtek.com>2026-05-15 09:44:32 +0800
committerPing-Ke Shih <pkshih@realtek.com>2026-05-25 14:01:32 +0800
commit77be46f2819c141c6f970156e155fcfaf4c8dddd (patch)
tree82b991cb2aaeab73c377cd96ef2d592f86b8b33e
parentd270863883b93fa058f36f57a261b4a518642b78 (diff)
wifi: rtw89: mac: consolidate quota into a struct for variant chips
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
-rw-r--r--drivers/net/wireless/realtek/rtw89/core.h20
-rw-r--r--drivers/net/wireless/realtek/rtw89/mac.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8851b.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8852a.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8852b.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8852bt.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8852c.c6
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8922a.c7
-rw-r--r--drivers/net/wireless/realtek/rtw89/rtw8922d.c7
9 files changed, 52 insertions, 18 deletions
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
index aaef2c8b35be..27d9a916d58c 100644
--- a/drivers/net/wireless/realtek/rtw89/core.h
+++ b/drivers/net/wireless/realtek/rtw89/core.h
@@ -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)
{
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 5c22b2accf7c..bd606d1da634 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -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;
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c
index 2fb54e1fc7ab..60f362593696 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c
@@ -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},
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
index d3b6e8a7f5bd..2c1f166e687f 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
@@ -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},
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
index 989ac38fe359..4e7b068aaa75 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
@@ -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},
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c
index b58561e141cb..7fcc877f6ea0 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c
@@ -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},
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c
index 9ecd140dcdd5..7bb1264bcaef 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c
@@ -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},
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c
index 07270e83b778..ad3618dfd57d 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c
@@ -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);
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922d.c b/drivers/net/wireless/realtek/rtw89/rtw8922d.c
index c1ce507a250a..fe3b0dc2a027 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8922d.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8922d.c
@@ -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);