]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: Add rtw89_core_get_ch_dma_v2()
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Sat, 1 Nov 2025 19:20:38 +0000 (21:20 +0200)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 4 Nov 2025 01:31:25 +0000 (09:31 +0800)
RTL8852CU, RTL8852AU, and RTL8922AU need a different mapping of TX
queue to DMA channel compared to their PCI versions, so make
get_ch_dma in struct rtw89_chip_ops an array and add
rtw89_core_get_ch_dma_v2().

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/6c7b2f01-2c78-47c8-a4c4-98cd3060d7f3@gmail.com
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/core.h
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

index 1b5a40e9821cd816cab9883ddf98303e5e02feca..1f92be300ea7bb9649519ed29378226b38a19de8 100644 (file)
@@ -759,6 +759,25 @@ u8 rtw89_core_get_ch_dma_v1(struct rtw89_dev *rtwdev, u8 qsel)
 }
 EXPORT_SYMBOL(rtw89_core_get_ch_dma_v1);
 
+u8 rtw89_core_get_ch_dma_v2(struct rtw89_dev *rtwdev, u8 qsel)
+{
+       switch (qsel) {
+       default:
+               rtw89_warn(rtwdev, "Cannot map qsel to dma v2: %d\n", qsel);
+               fallthrough;
+       case RTW89_TX_QSEL_BE_0:
+       case RTW89_TX_QSEL_VO_0:
+               return RTW89_TXCH_ACH0;
+       case RTW89_TX_QSEL_BK_0:
+       case RTW89_TX_QSEL_VI_0:
+               return RTW89_TXCH_ACH2;
+       case RTW89_TX_QSEL_B0_MGMT:
+       case RTW89_TX_QSEL_B0_HI:
+               return RTW89_TXCH_CH8;
+       }
+}
+EXPORT_SYMBOL(rtw89_core_get_ch_dma_v2);
+
 static void
 rtw89_core_tx_update_mgmt_info(struct rtw89_dev *rtwdev,
                               struct rtw89_core_tx_request *tx_req)
index f8b443894db99174b51f325abdf06fcde5e6f747..c7b48bd000c7291c983b35c3f3c7c25ea06581d7 100644 (file)
@@ -3764,7 +3764,7 @@ struct rtw89_chip_ops {
        void (*fill_txdesc_fwcmd)(struct rtw89_dev *rtwdev,
                                  struct rtw89_tx_desc_info *desc_info,
                                  void *txdesc);
-       u8 (*get_ch_dma)(struct rtw89_dev *rtwdev, u8 qsel);
+       u8 (*get_ch_dma[RTW89_HCI_TYPE_NUM])(struct rtw89_dev *rtwdev, u8 qsel);
        int (*cfg_ctrl_path)(struct rtw89_dev *rtwdev, bool wl);
        int (*mac_cfg_gnt)(struct rtw89_dev *rtwdev,
                           const struct rtw89_mac_ax_coex_gnt *gnt_cfg);
@@ -7253,7 +7253,7 @@ u8 rtw89_chip_get_ch_dma(struct rtw89_dev *rtwdev, u8 qsel)
 {
        const struct rtw89_chip_info *chip = rtwdev->chip;
 
-       return chip->ops->get_ch_dma(rtwdev, qsel);
+       return chip->ops->get_ch_dma[rtwdev->hci.type](rtwdev, qsel);
 }
 
 static inline
@@ -7507,6 +7507,7 @@ void rtw89_core_fill_txdesc_fwcmd_v2(struct rtw89_dev *rtwdev,
                                     void *txdesc);
 u8 rtw89_core_get_ch_dma(struct rtw89_dev *rtwdev, u8 qsel);
 u8 rtw89_core_get_ch_dma_v1(struct rtw89_dev *rtwdev, u8 qsel);
+u8 rtw89_core_get_ch_dma_v2(struct rtw89_dev *rtwdev, u8 qsel);
 void rtw89_core_rx(struct rtw89_dev *rtwdev,
                   struct rtw89_rx_desc_info *desc_info,
                   struct sk_buff *skb);
index edcbda124916c0d909fc2ff3ce3584bcf3210672..2019f6022cbb4d3e76f5785f976acee4d3b3befc 100644 (file)
@@ -2537,7 +2537,9 @@ static const struct rtw89_chip_ops rtw8851b_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc,
        .fill_txdesc            = rtw89_core_fill_txdesc,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  rtw89_core_get_ch_dma,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
index 232f4c1bee1babfbef7610efac9ce4c8124338dd..fa347dbebf9acb633825be91f755cf734f3deafb 100644 (file)
@@ -2178,7 +2178,9 @@ static const struct rtw89_chip_ops rtw8852a_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc,
        .fill_txdesc            = rtw89_core_fill_txdesc,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  rtw89_core_get_ch_dma_v2,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
index 0777e336aaa1d6ad48a57c517da5e356d04081d9..38cd151f8c3f22fa94d67b735563983953befd1b 100644 (file)
@@ -842,7 +842,9 @@ static const struct rtw89_chip_ops rtw8852b_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc,
        .fill_txdesc            = rtw89_core_fill_txdesc,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  rtw89_core_get_ch_dma,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
index b3a79ebc7e754ab03e281952fe128c697b12084e..15ba780492d617235932892ed99184722467617c 100644 (file)
@@ -708,7 +708,9 @@ static const struct rtw89_chip_ops rtw8852bt_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc,
        .fill_txdesc            = rtw89_core_fill_txdesc,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  NULL,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
index 440801d633437d0a71838b8b2a257b28e470280c..ee191530737676a203663ab5818db29e75de02eb 100644 (file)
@@ -2962,7 +2962,9 @@ static const struct rtw89_chip_ops rtw8852c_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc,
        .fill_txdesc            = rtw89_core_fill_txdesc_v1,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc_fwcmd_v1,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  rtw89_core_get_ch_dma_v2,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path_v1,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt_v1,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx_v1,
index 6aa19ad259acab9c1261e91ec61d85e8be536ff4..61f3a0a3f440fc98f991586c52831154106226e8 100644 (file)
@@ -2821,7 +2821,9 @@ static const struct rtw89_chip_ops rtw8922a_chip_ops = {
        .query_rxdesc           = rtw89_core_query_rxdesc_v2,
        .fill_txdesc            = rtw89_core_fill_txdesc_v2,
        .fill_txdesc_fwcmd      = rtw89_core_fill_txdesc_fwcmd_v2,
-       .get_ch_dma             = rtw89_core_get_ch_dma,
+       .get_ch_dma             = {rtw89_core_get_ch_dma,
+                                  rtw89_core_get_ch_dma_v2,
+                                  NULL,},
        .cfg_ctrl_path          = rtw89_mac_cfg_ctrl_path_v2,
        .mac_cfg_gnt            = rtw89_mac_cfg_gnt_v2,
        .stop_sch_tx            = rtw89_mac_stop_sch_tx_v2,