浏览代码

qcacmn: Update HAL generic APIs for Rhine architecture

Update HAL generic APIs for Rhine architecture to set the link
desc address and to get the rbm and cookie info from the rx desc.

Change-Id: I0e9f0553c19508a8404106ada780b37db2e78857
CRs-Fixed: 3631599
Venkateswara Naralasetty 1 年之前
父节点
当前提交
627e19ca45
共有 2 个文件被更改,包括 38 次插入5 次删除
  1. 27 5
      hal/wifi3.0/rh/hal_rh_generic_api.c
  2. 11 0
      hal/wifi3.0/rh/hal_rh_rx.h

+ 27 - 5
hal/wifi3.0/rh/hal_rh_generic_api.c

@@ -38,6 +38,16 @@ static void hal_set_link_desc_addr_rh(void *desc, uint32_t cookie,
 				      qdf_dma_addr_t link_desc_paddr,
 				      uint8_t bm_id)
 {
+	uint32_t *buf_addr = (uint32_t *)desc;
+
+	HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_0, BUFFER_ADDR_31_0,
+			   link_desc_paddr & 0xffffffff);
+	HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, BUFFER_ADDR_39_32,
+			   (uint64_t)link_desc_paddr >> 32);
+	HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, RETURN_BUFFER_MANAGER,
+			   bm_id);
+	HAL_DESC_SET_FIELD(buf_addr, BUFFER_ADDR_INFO_1, SW_BUFFER_COOKIE,
+			   cookie);
 }
 
 static void hal_tx_init_data_ring_rh(hal_soc_handle_t hal_soc_hdl,
@@ -73,15 +83,27 @@ hal_rx_msdu_link_desc_set_rh(hal_soc_handle_t hal_soc_hdl,
 {
 }
 
-static
-void hal_rx_buf_cookie_rbm_get_rh(uint32_t *buf_addr_info_hdl,
-				  hal_buf_info_t buf_info_hdl)
+static uint8_t hal_rx_ret_buf_manager_get_rh(hal_ring_desc_t ring_desc)
 {
+	return HAL_RX_BUF_RBM_GET(ring_desc);
 }
 
-static uint8_t hal_rx_ret_buf_manager_get_rh(hal_ring_desc_t ring_desc)
+static
+void hal_rx_buf_cookie_rbm_get_rh(uint32_t *buf_addr_info_hdl,
+				  hal_buf_info_t buf_info_hdl)
 {
-	return 0;
+	struct hal_buf_info *buf_info =
+		(struct hal_buf_info *)buf_info_hdl;
+	struct buffer_addr_info *buf_addr_info =
+		(struct buffer_addr_info *)buf_addr_info_hdl;
+
+	buf_info->sw_cookie = HAL_RX_BUF_COOKIE_GET(buf_addr_info);
+	/*
+	 * buffer addr info is the first member of ring desc, so the typecast
+	 * can be done.
+	 */
+	buf_info->rbm =
+		hal_rx_ret_buf_manager_get_rh((hal_ring_desc_t)buf_addr_info);
 }
 
 static uint32_t hal_rx_get_reo_error_code_rh(hal_ring_desc_t rx_desc)

+ 11 - 0
hal/wifi3.0/rh/hal_rh_rx.h

@@ -22,6 +22,17 @@
 
 #include <hal_rx.h>
 
+#define HAL_RX_BUF_COOKIE_GET(buff_addr_info)			\
+	(_HAL_MS((*_OFFSET_TO_WORD_PTR(buff_addr_info,		\
+		BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_OFFSET)),	\
+		BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_MASK,	\
+		BUFFER_ADDR_INFO_1_SW_BUFFER_COOKIE_LSB))
+
+#define HAL_RX_BUF_RBM_GET(buff_addr_info)			\
+	(_HAL_MS((*_OFFSET_TO_WORD_PTR(buff_addr_info,		\
+		BUFFER_ADDR_INFO_1_RETURN_BUFFER_MANAGER_OFFSET)),\
+		BUFFER_ADDR_INFO_1_RETURN_BUFFER_MANAGER_MASK,	\
+		BUFFER_ADDR_INFO_1_RETURN_BUFFER_MANAGER_LSB))
 /*
  * macro to set the cookie into the rxdma ring entry
  */