瀏覽代碼

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 年之前
父節點
當前提交
03d77e6590
共有 3 個文件被更改,包括 16 次插入0 次删除
  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,