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
This commit is contained in:

committato da
Rahul Choudhary

parent
5c54710c38
commit
4c897fe85d
@@ -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,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,
|
||||
|
Fai riferimento in un nuovo problema
Block a user