qcacmn: FISA init code movement
Move the FISA initialization code out of cmn DP. Change-Id: I744a69d559225d4a0496b84be9007ab230f2f4a0 CRs-Fixed: 3512034
This commit is contained in:

committed by
Rahul Choudhary

parent
aa7c47fe95
commit
60e91fe20b
@@ -3190,4 +3190,19 @@ cdp_get_tqm_offset(ol_txrx_soc_handle soc, uint64_t *value)
|
||||
|
||||
soc->ops->cmn_drv_ops->txrx_get_tqm_offset(soc, value);
|
||||
}
|
||||
|
||||
static inline uint64_t cdp_get_fst_cem_base(ol_txrx_soc_handle soc,
|
||||
uint64_t size)
|
||||
{
|
||||
if (!soc) {
|
||||
dp_cdp_debug("Invalid Instance");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!soc->ops->cmn_drv_ops ||
|
||||
!soc->ops->cmn_drv_ops->get_fst_cmem_base)
|
||||
return 0;
|
||||
|
||||
return soc->ops->cmn_drv_ops->get_fst_cmem_base(soc, size);
|
||||
}
|
||||
#endif /* _CDP_TXRX_CMN_H_ */
|
||||
|
@@ -727,6 +727,7 @@ struct cdp_cmn_ops {
|
||||
void (*txrx_get_tsf2_offset)(struct cdp_soc_t *soc_hdl, uint8_t mac_id,
|
||||
uint64_t *value);
|
||||
void (*txrx_get_tqm_offset)(struct cdp_soc_t *soc_hdl, uint64_t *value);
|
||||
uint64_t (*get_fst_cmem_base)(struct cdp_soc_t *soc_hdl, uint64_t size);
|
||||
};
|
||||
|
||||
struct cdp_ctrl_ops {
|
||||
|
@@ -168,19 +168,19 @@ static uint64_t dp_get_cmem_chunk(struct dp_soc *soc, uint64_t size,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WLAN_SUPPORT_RX_FISA)
|
||||
static inline QDF_STATUS dp_fisa_fst_cmem_addr_init(struct dp_soc *soc)
|
||||
#ifdef WLAN_SUPPORT_RX_FISA
|
||||
static uint64_t dp_get_fst_cmem_base_be(struct dp_soc *soc, uint64_t size)
|
||||
{
|
||||
soc->fst_cmem_size = DP_CMEM_FST_SIZE;
|
||||
soc->fst_cmem_base = dp_get_cmem_chunk(soc, soc->fst_cmem_size,
|
||||
FISA_FST);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
return dp_get_cmem_chunk(soc, size, FISA_FST);
|
||||
}
|
||||
#else /* !WLAN_SUPPORT_RX_FISA */
|
||||
static inline QDF_STATUS dp_fisa_fst_cmem_addr_init(struct dp_soc *soc)
|
||||
|
||||
static void dp_initialize_arch_ops_be_fisa(struct dp_arch_ops *arch_ops)
|
||||
{
|
||||
arch_ops->dp_get_fst_cmem_base = dp_get_fst_cmem_base_be;
|
||||
}
|
||||
#else
|
||||
static void dp_initialize_arch_ops_be_fisa(struct dp_arch_ops *arch_ops)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -335,9 +335,6 @@ static QDF_STATUS dp_get_cmem_allocation(struct dp_soc *soc,
|
||||
case COOKIE_CONVERSION:
|
||||
status = dp_hw_cc_cmem_addr_init(soc);
|
||||
break;
|
||||
case FISA_FST:
|
||||
status = dp_fisa_fst_cmem_addr_init(soc);
|
||||
break;
|
||||
default:
|
||||
dp_err("Invalid CMEM request");
|
||||
}
|
||||
@@ -988,10 +985,6 @@ static QDF_STATUS dp_soc_attach_be(struct dp_soc *soc,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
qdf_status = dp_get_cmem_allocation(soc, FISA_FST);
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||
goto fail;
|
||||
|
||||
for (i = 0; i < MAX_RXDESC_POOLS; i++) {
|
||||
num_entries =
|
||||
wlan_cfg_get_dp_soc_rx_sw_desc_num(soc->wlan_cfg_ctx);
|
||||
@@ -2953,6 +2946,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
|
||||
#endif
|
||||
dp_initialize_arch_ops_be_ipa(arch_ops);
|
||||
dp_initialize_arch_ops_be_single_dev(arch_ops);
|
||||
dp_initialize_arch_ops_be_fisa(arch_ops);
|
||||
}
|
||||
|
||||
#ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE
|
||||
|
@@ -55,13 +55,10 @@ enum CMEM_MEM_CLIENTS {
|
||||
#define DP_CC_PPT_MEM_SIZE 8192
|
||||
#endif
|
||||
|
||||
/* FST required CMEM offset from CMEM pool */
|
||||
/* FST required CMEM offset M pool */
|
||||
#define DP_FST_MEM_OFFSET_IN_CMEM \
|
||||
(DP_CC_MEM_OFFSET_IN_CMEM + DP_CC_PPT_MEM_SIZE)
|
||||
|
||||
/* CMEM size for FISA FST 16K */
|
||||
#define DP_CMEM_FST_SIZE 16384
|
||||
|
||||
/* lower 9 bits in Desc ID for offset in page of SPT */
|
||||
#define DP_CC_DESC_ID_SPT_VA_OS_SHIFT 0
|
||||
|
||||
|
@@ -3926,7 +3926,7 @@ struct cdp_soc_t *dp_soc_to_cdp_soc_t(struct dp_soc *psoc)
|
||||
return (struct cdp_soc_t *)psoc;
|
||||
}
|
||||
|
||||
#if defined(WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)
|
||||
#if defined(WLAN_SUPPORT_RX_FLOW_TAG)
|
||||
/**
|
||||
* dp_rx_flow_get_fse_stats() - Retrieve a flow's statistics
|
||||
* @pdev: pdev handle
|
||||
@@ -3977,16 +3977,6 @@ QDF_STATUS dp_rx_fst_attach(struct dp_soc *soc, struct dp_pdev *pdev);
|
||||
*/
|
||||
void dp_rx_fst_detach(struct dp_soc *soc, struct dp_pdev *pdev);
|
||||
|
||||
/**
|
||||
* 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_mon_rx_update_rx_flow_tag_stats() - Update a mon flow's statistics
|
||||
* @pdev: pdev handle
|
||||
@@ -3996,33 +3986,18 @@ QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_mon_rx_update_rx_flow_tag_stats(struct dp_pdev *pdev, uint32_t flow_id);
|
||||
#endif
|
||||
|
||||
#else /* !((WLAN_SUPPORT_RX_FLOW_TAG) || defined(WLAN_SUPPORT_RX_FISA)) */
|
||||
|
||||
#ifdef WLAN_SUPPORT_RX_FLOW_TAG
|
||||
/**
|
||||
* dp_rx_fst_attach() - Initialize Rx FST and setup necessary parameters
|
||||
* dp_rx_flow_send_fst_fw_setup() - Program FST parameters in FW/HW post-attach
|
||||
* @soc: SoC handle
|
||||
* @pdev: Pdev handle
|
||||
*
|
||||
* Return: Handle to flow search table entry
|
||||
* Return: Success when fst parameters are programmed in FW, error otherwise
|
||||
*/
|
||||
static inline
|
||||
QDF_STATUS dp_rx_fst_attach(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_rx_fst_detach() - De-initialize Rx FST
|
||||
* @soc: SoC handle
|
||||
* @pdev: Pdev handle
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline
|
||||
void dp_rx_fst_detach(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -2633,18 +2633,6 @@ dp_rx_fst_detach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
}
|
||||
pdev->rx_fst = NULL;
|
||||
}
|
||||
#elif defined(WLAN_SUPPORT_RX_FISA)
|
||||
QDF_STATUS
|
||||
dp_rx_fst_attach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
{
|
||||
return dp_rx_fst_attach(soc, pdev);
|
||||
}
|
||||
|
||||
void
|
||||
dp_rx_fst_detach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
{
|
||||
dp_rx_fst_detach(soc, pdev);
|
||||
}
|
||||
#else
|
||||
QDF_STATUS
|
||||
dp_rx_fst_attach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
@@ -3346,65 +3334,14 @@ dp_rx_target_fst_config(struct dp_soc *soc)
|
||||
}
|
||||
return status;
|
||||
}
|
||||
#elif defined(WLAN_SUPPORT_RX_FISA)
|
||||
/**
|
||||
* dp_rx_target_fst_config() - Configure RX OLE FSE engine in HW
|
||||
* @soc: SoC handle
|
||||
*
|
||||
* Return: Success
|
||||
*/
|
||||
static inline QDF_STATUS dp_rx_target_fst_config(struct dp_soc *soc)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct dp_rx_fst *fst = soc->rx_fst;
|
||||
|
||||
/* Check if it is enabled in the INI */
|
||||
if (!soc->fisa_enable) {
|
||||
dp_err("RX FISA feature is disabled");
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
status = dp_rx_flow_send_fst_fw_setup(soc, soc->pdev_list[0]);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
dp_err("dp_rx_flow_send_fst_fw_setup failed %d",
|
||||
status);
|
||||
return status;
|
||||
}
|
||||
|
||||
if (soc->fst_cmem_base) {
|
||||
soc->fst_in_cmem = true;
|
||||
dp_rx_fst_update_cmem_params(soc, fst->max_entries,
|
||||
soc->fst_cmem_base & 0xffffffff,
|
||||
soc->fst_cmem_base >> 32);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
#define FISA_MAX_TIMEOUT 0xffffffff
|
||||
#define FISA_DISABLE_TIMEOUT 0
|
||||
static QDF_STATUS dp_rx_fisa_config(struct dp_soc *soc)
|
||||
{
|
||||
struct dp_htt_rx_fisa_cfg fisa_config;
|
||||
|
||||
fisa_config.pdev_id = 0;
|
||||
fisa_config.fisa_timeout = FISA_MAX_TIMEOUT;
|
||||
|
||||
return dp_htt_rx_fisa_config(soc->pdev_list[0], &fisa_config);
|
||||
}
|
||||
|
||||
#else /* !WLAN_SUPPORT_RX_FISA */
|
||||
static inline QDF_STATUS dp_rx_target_fst_config(struct dp_soc *soc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* !WLAN_SUPPORT_RX_FISA */
|
||||
#endif
|
||||
|
||||
#ifndef WLAN_SUPPORT_RX_FISA
|
||||
static QDF_STATUS dp_rx_fisa_config(struct dp_soc *soc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS dp_rx_dump_fisa_stats(struct dp_soc *soc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -3552,14 +3489,6 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
|
||||
return status;
|
||||
}
|
||||
|
||||
if (status == QDF_STATUS_SUCCESS) {
|
||||
status = dp_rx_fisa_config(soc);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
dp_err("Failed to send htt FISA config message to target");
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
DP_STATS_INIT(soc);
|
||||
|
||||
dp_runtime_init(soc);
|
||||
@@ -11054,6 +10983,17 @@ void dp_set_tx_pause(struct cdp_soc_t *soc_hdl, bool flag)
|
||||
soc->is_tx_pause = flag;
|
||||
}
|
||||
|
||||
static inline uint64_t dp_rx_fisa_get_cmem_base(struct cdp_soc_t *soc_hdl,
|
||||
uint64_t size)
|
||||
{
|
||||
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
||||
|
||||
if (soc->arch_ops.dp_get_fst_cmem_base)
|
||||
return soc->arch_ops.dp_get_fst_cmem_base(soc, size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
|
||||
/**
|
||||
* dp_evaluate_update_tx_ilp_config() - Evaluate and update DP TX
|
||||
@@ -11242,6 +11182,9 @@ static struct cdp_cmn_ops dp_ops_cmn = {
|
||||
.txrx_get_tsf_time = dp_get_tsf_time,
|
||||
.txrx_get_tsf2_offset = dp_get_tsf2_scratch_reg,
|
||||
.txrx_get_tqm_offset = dp_get_tqm_scratch_reg,
|
||||
#ifdef WLAN_SUPPORT_RX_FISA
|
||||
.get_fst_cmem_base = dp_rx_fisa_get_cmem_base,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct cdp_ctrl_ops dp_ops_ctrl = {
|
||||
|
@@ -2237,6 +2237,7 @@ enum dp_context_type {
|
||||
* @txrx_soc_ppeds_enabled_check:
|
||||
* @txrx_soc_ppeds_txdesc_pool_reset:
|
||||
* @dp_update_ring_hptp: Update rings hptp during suspend/resume
|
||||
* @dp_get_fst_cmem_base: Get CMEM base address for FISA
|
||||
*/
|
||||
struct dp_arch_ops {
|
||||
/* INIT/DEINIT Arch Ops */
|
||||
@@ -2496,6 +2497,7 @@ struct dp_arch_ops {
|
||||
qdf_nbuf_t *nbuf_list);
|
||||
#endif
|
||||
void (*dp_update_ring_hptp)(struct dp_soc *soc, bool force_flush_tx);
|
||||
uint64_t (*dp_get_fst_cmem_base)(struct dp_soc *soc, uint64_t size);
|
||||
};
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user