Browse Source

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
Sathish Kumar 7 years ago
parent
commit
03d77e6590
3 changed files with 16 additions and 0 deletions
  1. 1 0
      hal/wifi3.0/hal_api.h
  2. 3 0
      hal/wifi3.0/hal_internal.h
  3. 12 0
      hal/wifi3.0/hal_srng.c

+ 1 - 0
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

+ 3 - 0
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

+ 12 - 0
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,