qcacmn: Add support for Direct Link refill ring

Add support and ops for initialization and
deinitialization of Direct Link refill ring.

Change-Id: I2c7018c4f8411fb7a590cfbb8b991f9152b22397
CRs-Fixed: 3316656
此提交包含在:
Yeshwanth Sriram Guntuka
2022-11-04 00:58:18 +05:30
提交者 Madan Koyyalamudi
父節點 4fb2121bbe
當前提交 99615e170d
共有 6 個檔案被更改,包括 118 行新增3 行删除

查看文件

@@ -17157,3 +17157,54 @@ static QDF_STATUS dp_pdev_init_wifi3(struct cdp_soc_t *txrx_soc,
return dp_pdev_init(txrx_soc, htc_handle, qdf_osdev, pdev_id);
}
#ifdef FEATURE_DIRECT_LINK
struct dp_srng *dp_setup_direct_link_refill_ring(struct cdp_soc_t *soc_hdl,
uint8_t pdev_id)
{
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
if (!pdev) {
dp_err("DP pdev is NULL");
return NULL;
}
if (dp_srng_alloc(soc, &pdev->rx_refill_buf_ring4,
RXDMA_BUF, DIRECT_LINK_REFILL_RING_ENTRIES, false)) {
dp_err("SRNG alloc failed for rx_refill_buf_ring4");
return NULL;
}
if (dp_srng_init(soc, &pdev->rx_refill_buf_ring4,
RXDMA_BUF, DIRECT_LINK_REFILL_RING_IDX, 0)) {
dp_err("SRNG init failed for rx_refill_buf_ring4");
dp_srng_free(soc, &pdev->rx_refill_buf_ring4);
return NULL;
}
if (htt_srng_setup(soc->htt_handle, pdev_id,
pdev->rx_refill_buf_ring4.hal_srng, RXDMA_BUF)) {
dp_srng_deinit(soc, &pdev->rx_refill_buf_ring4, RXDMA_BUF,
DIRECT_LINK_REFILL_RING_IDX);
dp_srng_free(soc, &pdev->rx_refill_buf_ring4);
return NULL;
}
return &pdev->rx_refill_buf_ring4;
}
void dp_destroy_direct_link_refill_ring(struct cdp_soc_t *soc_hdl,
uint8_t pdev_id)
{
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id);
if (!pdev) {
dp_err("DP pdev is NULL");
return;
}
dp_srng_deinit(soc, &pdev->rx_refill_buf_ring4, RXDMA_BUF, 0);
dp_srng_free(soc, &pdev->rx_refill_buf_ring4);
}
#endif