Ver código fonte

qcacld-3.0: Add support to send FISA HTT msg using CDP

Add CDP APIs to send FISA related HTT msgs from the
non-converged DP component.

Change-Id: Ie8dcb5d68497ac0de4c0781c981ede2239df0a78
CRs-Fixed: 3512045
Rakesh Pillai 1 ano atrás
pai
commit
4c897fe85d

+ 0 - 10
components/dp/core/src/wlan_dp_fisa_rx.h

@@ -187,16 +187,6 @@ void dp_rx_fst_detach(struct wlan_dp_psoc_context *dp_ctx);
  */
 void dp_resume_fse_cache_flush(struct wlan_dp_psoc_context *dp_ctx);
 
-/**
- * dp_rx_flow_send_fst_fw_setup() - Program FST parameters in FW/HW post-attach
- * @soc: SoC handle
- * @pdev: Pdev handle
- *
- * Return: Success when fst parameters are programmed in FW, error otherwise
- */
-QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
-					struct dp_pdev *pdev);
-
 /**
  * dp_rx_fst_update_pm_suspend_status() - Update Suspend status in FISA
  * @dp_ctx: DP component context

+ 28 - 14
components/dp/core/src/wlan_dp_rx_fst.c

@@ -28,6 +28,7 @@
 #include "wlan_dp_rx_thread.h"
 #include <wlan_dp_main.h>
 #include <wlan_dp_fisa_rx.h>
+#include <cdp_txrx_ctrl.h>
 
 /* Timeout in milliseconds to wait for CMEM FST HTT response */
 #define DP_RX_FST_CMEM_RESP_TIMEOUT 2000
@@ -186,30 +187,34 @@ void dp_print_fisa_rx_stats(enum cdp_fisa_stats_id stats_id)
 
 /**
  * dp_rx_flow_send_htt_operation_cmd() - Invalidate FSE cache on FT change
- * @pdev: handle to DP pdev
+ * @dp_ctx: DP component handle
  * @fse_op: Cache operation code
  * @rx_flow_tuple: flow tuple whose entry has to be invalidated
  *
  * Return: Success if we successfully send FW HTT command
  */
 static QDF_STATUS
-dp_rx_flow_send_htt_operation_cmd(struct dp_pdev *pdev,
+dp_rx_flow_send_htt_operation_cmd(struct wlan_dp_psoc_context *dp_ctx,
 				  enum dp_htt_flow_fst_operation fse_op,
 				  struct cdp_rx_flow_tuple_info *rx_flow_tuple)
 {
 	struct dp_htt_rx_flow_fst_operation fse_op_cmd;
 	struct cdp_rx_flow_info rx_flow_info;
+	union cdp_fisa_config cfg;
 
 	rx_flow_info.is_addr_ipv4 = true;
 	rx_flow_info.op_code = CDP_FLOW_FST_ENTRY_ADD;
 	qdf_mem_copy(&rx_flow_info.flow_tuple_info, rx_flow_tuple,
 		     sizeof(struct cdp_rx_flow_tuple_info));
 	rx_flow_info.fse_metadata = 0xDADA;
-	fse_op_cmd.pdev_id = pdev->pdev_id;
+	fse_op_cmd.pdev_id = OL_TXRX_PDEV_ID;
 	fse_op_cmd.op_code = fse_op;
 	fse_op_cmd.rx_flow = &rx_flow_info;
 
-	return dp_htt_rx_flow_fse_operation(pdev, &fse_op_cmd);
+	cfg.fse_op_cmd = &fse_op_cmd;
+
+	return cdp_txrx_fisa_config(dp_ctx->cdp_soc, OL_TXRX_PDEV_ID,
+				    CDP_FISA_HTT_RX_FSE_OP_CFG, &cfg);
 }
 
 /**
@@ -222,7 +227,6 @@ static void dp_fisa_fse_cache_flush_timer(void *arg)
 {
 	struct wlan_dp_psoc_context *dp_ctx =
 					(struct wlan_dp_psoc_context *)arg;
-	struct dp_soc *soc = cdp_soc_t_to_dp_soc(dp_ctx->cdp_soc);
 	struct dp_rx_fst *fisa_hdl = dp_ctx->rx_fst;
 	struct cdp_rx_flow_tuple_info rx_flow_tuple_info = { 0 };
 	static uint32_t fse_cache_flush_rec_idx;
@@ -247,7 +251,7 @@ static void dp_fisa_fse_cache_flush_timer(void *arg)
 		fse_cache_flush_rec->flows_added);
 
 	status =
-	 dp_rx_flow_send_htt_operation_cmd(soc->pdev_list[0],
+	 dp_rx_flow_send_htt_operation_cmd(dp_ctx,
 					   DP_HTT_FST_CACHE_INVALIDATE_FULL,
 					   &rx_flow_tuple_info);
 	if (QDF_IS_STATUS_ERROR(status)) {
@@ -532,13 +536,18 @@ static void dp_rx_fst_check_cmem_support(struct wlan_dp_psoc_context *dp_ctx)
 	fst->fst_in_cmem = true;
 }
 
-QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
-					struct dp_pdev *pdev)
+/**
+ * dp_rx_flow_send_fst_fw_setup() - Program FST parameters in FW/HW post-attach
+ * @dp_ctx: DP component context
+ *
+ * Return: Success when fst parameters are programmed in FW, error otherwise
+ */
+static QDF_STATUS
+dp_rx_flow_send_fst_fw_setup(struct wlan_dp_psoc_context *dp_ctx)
 {
 	struct dp_htt_rx_flow_fst_setup fisa_hw_fst_setup_cmd = {0};
-	/* TODO - Make this better */
-	struct wlan_dp_psoc_context *dp_ctx = dp_get_context();
 	struct dp_rx_fst *fst = dp_ctx->rx_fst;
+	union cdp_fisa_config cfg;
 	QDF_STATUS status;
 
 	/* check if FW has support to place FST in CMEM */
@@ -566,8 +575,10 @@ QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
 	fisa_hw_fst_setup_cmd.hash_key_len = HAL_FST_HASH_KEY_SIZE_BYTES;
 	fisa_hw_fst_setup_cmd.hash_key = fst->rx_toeplitz_hash_key;
 
-	status = dp_htt_rx_flow_fst_setup(pdev, &fisa_hw_fst_setup_cmd);
+	cfg.fse_setup_info = &fisa_hw_fst_setup_cmd;
 
+	status = cdp_txrx_fisa_config(dp_ctx->cdp_soc, OL_TXRX_PDEV_ID,
+				      CDP_FISA_HTT_RX_FSE_SETUP_CFG, &cfg);
 	if (!fst->fst_in_cmem || dp_ctx->fst_cmem_base) {
 		/**
 		 * Return from here if fst_cmem is not enabled or cmem address
@@ -676,7 +687,7 @@ QDF_STATUS dp_rx_fst_target_config(struct wlan_dp_psoc_context *dp_ctx)
 		return QDF_STATUS_E_NOSUPPORT;
 	}
 
-	status = dp_rx_flow_send_fst_fw_setup(soc, soc->pdev_list[0]);
+	status = dp_rx_flow_send_fst_fw_setup(dp_ctx);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		dp_err("dp_rx_flow_send_fst_fw_setup failed %d",
 		       status);
@@ -696,13 +707,16 @@ QDF_STATUS dp_rx_fst_target_config(struct wlan_dp_psoc_context *dp_ctx)
 #define FISA_DISABLE_TIMEOUT 0
 QDF_STATUS dp_rx_fisa_config(struct wlan_dp_psoc_context *dp_ctx)
 {
-	struct dp_soc *soc = (struct dp_soc *)dp_ctx->cdp_soc;
 	struct dp_htt_rx_fisa_cfg fisa_config;
+	union cdp_fisa_config cfg;
 
 	fisa_config.pdev_id = 0;
 	fisa_config.fisa_timeout = FISA_MAX_TIMEOUT;
 
-	return dp_htt_rx_fisa_config(soc->pdev_list[0], &fisa_config);
+	cfg.fisa_config = &fisa_config;
+
+	return cdp_txrx_fisa_config(dp_ctx->cdp_soc, OL_TXRX_PDEV_ID,
+				    CDP_FISA_HTT_RX_FISA_CFG, &cfg);
 }
 
 void dp_fisa_cfg_init(struct wlan_dp_psoc_cfg *config,