]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Move rxdma ring config functions to wifi7 directory
authorPavankumar Nandeshwar <quic_pnandesh@quicinc.com>
Thu, 28 Aug 2025 17:35:41 +0000 (23:05 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Wed, 3 Sep 2025 17:06:58 +0000 (10:06 -0700)
Move architecture specific RxDMA functions to wifi7 directory.

The moved APIs will be a part of dp_rx.c file inside wifi7 directory.
wifi7/dp_rx.c file will continue to be part of ath12k.ko temporarily
until the corresponding infra for movement to ath12k_wifi7.ko arrives
in upcoming patches.

Architecture specific APIs:
ath12k_dp_rxdma_ring_sel_config_qcn9274
ath12k_dp_rxdma_ring_sel_config_wcn7850

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Pavankumar Nandeshwar <quic_pnandesh@quicinc.com>
Signed-off-by: Ripan Deuri <quic_rdeuri@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20250828173553.3341351-9-quic_rdeuri@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/dp_rx.c
drivers/net/wireless/ath/ath12k/dp_rx.h
drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c
drivers/net/wireless/ath/ath12k/wifi7/dp_rx.h
drivers/net/wireless/ath/ath12k/wifi7/hw.c

index 3da3ed5844c78c4ec6a6da1b548e8b9c3fb48f7d..4f666fd077fc24a3d03165bc11b2a028009e0539 100644 (file)
@@ -3765,91 +3765,6 @@ void ath12k_dp_rx_pdev_free(struct ath12k_base *ab, int mac_id)
        ath12k_dp_rx_pdev_srng_free(ar);
 }
 
-int ath12k_dp_rxdma_ring_sel_config_qcn9274(struct ath12k_base *ab)
-{
-       struct ath12k_dp *dp = &ab->dp;
-       struct htt_rx_ring_tlv_filter tlv_filter = {};
-       u32 ring_id;
-       int ret;
-       u32 hal_rx_desc_sz = ab->hal.hal_desc_sz;
-
-       ring_id = dp->rx_refill_buf_ring.refill_buf_ring.ring_id;
-
-       tlv_filter.rx_filter = HTT_RX_TLV_FLAGS_RXDMA_RING;
-       tlv_filter.pkt_filter_flags2 = HTT_RX_FP_CTRL_PKT_FILTER_TLV_FLAGS2_BAR;
-       tlv_filter.pkt_filter_flags3 = HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_MCAST |
-                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_UCAST |
-                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_NULL_DATA;
-       tlv_filter.offset_valid = true;
-       tlv_filter.rx_packet_offset = hal_rx_desc_sz;
-
-       tlv_filter.rx_mpdu_start_offset =
-               ab->hal_rx_ops->rx_desc_get_mpdu_start_offset();
-       tlv_filter.rx_msdu_end_offset =
-               ab->hal_rx_ops->rx_desc_get_msdu_end_offset();
-
-       if (ath12k_dp_wmask_compaction_rx_tlv_supported(ab)) {
-               tlv_filter.rx_mpdu_start_wmask =
-                       ab->hw_params->hal_ops->rxdma_ring_wmask_rx_mpdu_start();
-               tlv_filter.rx_msdu_end_wmask =
-                       ab->hw_params->hal_ops->rxdma_ring_wmask_rx_msdu_end();
-               ath12k_dbg(ab, ATH12K_DBG_DATA,
-                          "Configuring compact tlv masks rx_mpdu_start_wmask 0x%x rx_msdu_end_wmask 0x%x\n",
-                          tlv_filter.rx_mpdu_start_wmask, tlv_filter.rx_msdu_end_wmask);
-       }
-
-       ret = ath12k_dp_tx_htt_rx_filter_setup(ab, ring_id, 0,
-                                              HAL_RXDMA_BUF,
-                                              DP_RXDMA_REFILL_RING_SIZE,
-                                              &tlv_filter);
-
-       return ret;
-}
-EXPORT_SYMBOL(ath12k_dp_rxdma_ring_sel_config_qcn9274);
-
-int ath12k_dp_rxdma_ring_sel_config_wcn7850(struct ath12k_base *ab)
-{
-       struct ath12k_dp *dp = &ab->dp;
-       struct htt_rx_ring_tlv_filter tlv_filter = {};
-       u32 ring_id;
-       int ret = 0;
-       u32 hal_rx_desc_sz = ab->hal.hal_desc_sz;
-       int i;
-
-       ring_id = dp->rx_refill_buf_ring.refill_buf_ring.ring_id;
-
-       tlv_filter.rx_filter = HTT_RX_TLV_FLAGS_RXDMA_RING;
-       tlv_filter.pkt_filter_flags2 = HTT_RX_FP_CTRL_PKT_FILTER_TLV_FLAGS2_BAR;
-       tlv_filter.pkt_filter_flags3 = HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_MCAST |
-                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_UCAST |
-                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_NULL_DATA;
-       tlv_filter.offset_valid = true;
-       tlv_filter.rx_packet_offset = hal_rx_desc_sz;
-
-       tlv_filter.rx_header_offset = offsetof(struct hal_rx_desc_wcn7850, pkt_hdr_tlv);
-
-       tlv_filter.rx_mpdu_start_offset =
-               ab->hal_rx_ops->rx_desc_get_mpdu_start_offset();
-       tlv_filter.rx_msdu_end_offset =
-               ab->hal_rx_ops->rx_desc_get_msdu_end_offset();
-
-       /* TODO: Selectively subscribe to required qwords within msdu_end
-        * and mpdu_start and setup the mask in below msg
-        * and modify the rx_desc struct
-        */
-
-       for (i = 0; i < ab->hw_params->num_rxdma_per_pdev; i++) {
-               ring_id = dp->rx_mac_buf_ring[i].ring_id;
-               ret = ath12k_dp_tx_htt_rx_filter_setup(ab, ring_id, i,
-                                                      HAL_RXDMA_BUF,
-                                                      DP_RXDMA_REFILL_RING_SIZE,
-                                                      &tlv_filter);
-       }
-
-       return ret;
-}
-EXPORT_SYMBOL(ath12k_dp_rxdma_ring_sel_config_wcn7850);
-
 int ath12k_dp_rx_htt_setup(struct ath12k_base *ab)
 {
        struct ath12k_dp *dp = &ab->dp;
index caff92bffb84d3df7695ce9d57000d9d899d9b96..542f08efe0cd2b4793b2283c3d2c3640008ba216 100644 (file)
@@ -402,9 +402,6 @@ u8 ath12k_dp_rx_h_decap_type(struct ath12k_base *ab,
                             struct hal_rx_desc *desc);
 u32 ath12k_dp_rx_h_mpdu_err(struct ath12k_base *ab,
                            struct hal_rx_desc *desc);
-int ath12k_dp_rxdma_ring_sel_config_qcn9274(struct ath12k_base *ab);
-int ath12k_dp_rxdma_ring_sel_config_wcn7850(struct ath12k_base *ab);
-
 int ath12k_dp_htt_tlv_iter(struct ath12k_base *ab, const void *ptr, size_t len,
                           int (*iter)(struct ath12k_base *ar, u16 tag, u16 len,
                                       const void *ptr, void *data),
index 26539a4d4b3033a4658235306bdc44a6aa17afc0..a002e3839fff8bc9fec78d35cbb815d62c1aa9f4 100644 (file)
@@ -348,3 +348,88 @@ int ath12k_dp_rx_process_wbm_err(struct ath12k_base *ab,
 done:
        return total_num_buffs_reaped;
 }
+
+int ath12k_dp_rxdma_ring_sel_config_qcn9274(struct ath12k_base *ab)
+{
+       struct ath12k_dp *dp = &ab->dp;
+       struct htt_rx_ring_tlv_filter tlv_filter = {};
+       u32 ring_id;
+       int ret;
+       u32 hal_rx_desc_sz = ab->hal.hal_desc_sz;
+
+       ring_id = dp->rx_refill_buf_ring.refill_buf_ring.ring_id;
+
+       tlv_filter.rx_filter = HTT_RX_TLV_FLAGS_RXDMA_RING;
+       tlv_filter.pkt_filter_flags2 = HTT_RX_FP_CTRL_PKT_FILTER_TLV_FLAGS2_BAR;
+       tlv_filter.pkt_filter_flags3 = HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_MCAST |
+                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_UCAST |
+                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_NULL_DATA;
+       tlv_filter.offset_valid = true;
+       tlv_filter.rx_packet_offset = hal_rx_desc_sz;
+
+       tlv_filter.rx_mpdu_start_offset =
+               ab->hal_rx_ops->rx_desc_get_mpdu_start_offset();
+       tlv_filter.rx_msdu_end_offset =
+               ab->hal_rx_ops->rx_desc_get_msdu_end_offset();
+
+       if (ath12k_dp_wmask_compaction_rx_tlv_supported(ab)) {
+               tlv_filter.rx_mpdu_start_wmask =
+                       ab->hw_params->hal_ops->rxdma_ring_wmask_rx_mpdu_start();
+               tlv_filter.rx_msdu_end_wmask =
+                       ab->hw_params->hal_ops->rxdma_ring_wmask_rx_msdu_end();
+               ath12k_dbg(ab, ATH12K_DBG_DATA,
+                          "Configuring compact tlv masks rx_mpdu_start_wmask 0x%x rx_msdu_end_wmask 0x%x\n",
+                          tlv_filter.rx_mpdu_start_wmask, tlv_filter.rx_msdu_end_wmask);
+       }
+
+       ret = ath12k_dp_tx_htt_rx_filter_setup(ab, ring_id, 0,
+                                              HAL_RXDMA_BUF,
+                                              DP_RXDMA_REFILL_RING_SIZE,
+                                              &tlv_filter);
+
+       return ret;
+}
+EXPORT_SYMBOL(ath12k_dp_rxdma_ring_sel_config_qcn9274);
+
+int ath12k_dp_rxdma_ring_sel_config_wcn7850(struct ath12k_base *ab)
+{
+       struct ath12k_dp *dp = &ab->dp;
+       struct htt_rx_ring_tlv_filter tlv_filter = {};
+       u32 ring_id;
+       int ret = 0;
+       u32 hal_rx_desc_sz = ab->hal.hal_desc_sz;
+       int i;
+
+       ring_id = dp->rx_refill_buf_ring.refill_buf_ring.ring_id;
+
+       tlv_filter.rx_filter = HTT_RX_TLV_FLAGS_RXDMA_RING;
+       tlv_filter.pkt_filter_flags2 = HTT_RX_FP_CTRL_PKT_FILTER_TLV_FLAGS2_BAR;
+       tlv_filter.pkt_filter_flags3 = HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_MCAST |
+                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_UCAST |
+                                       HTT_RX_FP_DATA_PKT_FILTER_TLV_FLASG3_NULL_DATA;
+       tlv_filter.offset_valid = true;
+       tlv_filter.rx_packet_offset = hal_rx_desc_sz;
+
+       tlv_filter.rx_header_offset = offsetof(struct hal_rx_desc_wcn7850, pkt_hdr_tlv);
+
+       tlv_filter.rx_mpdu_start_offset =
+               ab->hal_rx_ops->rx_desc_get_mpdu_start_offset();
+       tlv_filter.rx_msdu_end_offset =
+               ab->hal_rx_ops->rx_desc_get_msdu_end_offset();
+
+       /* TODO: Selectively subscribe to required qwords within msdu_end
+        * and mpdu_start and setup the mask in below msg
+        * and modify the rx_desc struct
+        */
+
+       for (i = 0; i < ab->hw_params->num_rxdma_per_pdev; i++) {
+               ring_id = dp->rx_mac_buf_ring[i].ring_id;
+               ret = ath12k_dp_tx_htt_rx_filter_setup(ab, ring_id, i,
+                                                      HAL_RXDMA_BUF,
+                                                      DP_RXDMA_REFILL_RING_SIZE,
+                                                      &tlv_filter);
+       }
+
+       return ret;
+}
+EXPORT_SYMBOL(ath12k_dp_rxdma_ring_sel_config_wcn7850);
index a6da98962345df5d6311e4e06d2ab9a686c56ddc..154018c221dad21614361be279036d631206d62a 100644 (file)
@@ -11,4 +11,6 @@
 
 int ath12k_dp_rx_process_wbm_err(struct ath12k_base *ab,
                                 struct napi_struct *napi, int budget);
+int ath12k_dp_rxdma_ring_sel_config_qcn9274(struct ath12k_base *ab);
+int ath12k_dp_rxdma_ring_sel_config_wcn7850(struct ath12k_base *ab);
 #endif
index 82b4f5b9f570076e3ca64dec7b866e1d88787789..909f7311619cd397fdd755871be61fd76d8f06f6 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: BSD-3-Clause-Clear
 /*
  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
  */
 
 #include <linux/types.h>
@@ -16,7 +16,7 @@
 #include "hw.h"
 #include "../mhi.h"
 #include "mhi.h"
-#include "../dp_rx.h"
+#include "dp_rx.h"
 #include "../peer.h"
 #include "wmi.h"