From 03d77e65907a8fa7baa1b411898ed590c87cb09f Mon Sep 17 00:00:00 2001 From: Sathish Kumar Date: Fri, 17 Nov 2017 17:27:52 +0530 Subject: [PATCH] qcacmn: Add source ring for direct buffer rx module Direct Buffer Receive provides the driver with a mechanism by which target can transfer information directly into host memory via DMA. DMA rings must be initialized and configured before they can be shared to the target for transfer ot data. Host driver will use the HAL SRNG APIs to create, initialize and configure the DMA rings. Change-Id: I43cd39ccbb5f5069c9a14092459d5c88ea514dca CRs-Fixed: 2157986 --- hal/wifi3.0/hal_api.h | 1 + hal/wifi3.0/hal_internal.h | 3 +++ hal/wifi3.0/hal_srng.c | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/hal/wifi3.0/hal_api.h b/hal/wifi3.0/hal_api.h index 2a77b2f578a3..81e368061a87 100644 --- a/hal/wifi3.0/hal_api.h +++ b/hal/wifi3.0/hal_api.h @@ -157,6 +157,7 @@ enum hal_ring_type { RXDMA_MONITOR_STATUS, RXDMA_MONITOR_DST, RXDMA_MONITOR_DESC, + DIR_BUF_RX_DMA_SRC, #ifdef WLAN_FEATURE_CIF_CFR WIFI_POS_SRC, #endif diff --git a/hal/wifi3.0/hal_internal.h b/hal/wifi3.0/hal_internal.h index 8f5b635e5860..1147215eb3ab 100644 --- a/hal/wifi3.0/hal_internal.h +++ b/hal/wifi3.0/hal_internal.h @@ -173,6 +173,9 @@ enum hal_srng_ring_id { HAL_SRNG_WMAC1_SW2RXDMA1_DESC = (HAL_SRNG_WMAC1_RXDMA2SW1 + 1), #ifdef WLAN_FEATURE_CIF_CFR HAL_SRNG_WIFI_POS_SRC_DMA_RING = (HAL_SRNG_WMAC1_SW2RXDMA1_DESC + 1), + HAL_SRNG_DIR_BUF_RX_SRC_DMA_RING = (HAL_SRNG_WIFI_POS_SRC_DMA_RING + 1), +#else + HAL_SRNG_DIR_BUF_RX_SRC_DMA_RING = (HAL_SRNG_WMAC1_SW2RXDMA1_DESC + 1), #endif /* -142 unused */ HAL_SRNG_LMAC1_ID_END = 143 diff --git a/hal/wifi3.0/hal_srng.c b/hal/wifi3.0/hal_srng.c index b2e893041074..027268a1f421 100644 --- a/hal/wifi3.0/hal_srng.c +++ b/hal/wifi3.0/hal_srng.c @@ -497,6 +497,18 @@ static struct hal_hw_srng_config hw_srng_table[] = { .reg_start = {}, .reg_size = {}, }, + { /* DIR_BUF_RX_DMA_SRC */ + .start_ring_id = HAL_SRNG_DIR_BUF_RX_SRC_DMA_RING, + .max_rings = 1, + .entry_size = 2, + .lmac_ring = TRUE, + .ring_dir = HAL_SRNG_SRC_RING, + /* reg_start is not set because LMAC rings are not accessed + * from host + */ + .reg_start = {}, + .reg_size = {}, + }, #ifdef WLAN_FEATURE_CIF_CFR { /* WIFI_POS_SRC */ .start_ring_id = HAL_SRNG_WIFI_POS_SRC_DMA_RING,