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);
|
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_ */
|
#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,
|
void (*txrx_get_tsf2_offset)(struct cdp_soc_t *soc_hdl, uint8_t mac_id,
|
||||||
uint64_t *value);
|
uint64_t *value);
|
||||||
void (*txrx_get_tqm_offset)(struct cdp_soc_t *soc_hdl, 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 {
|
struct cdp_ctrl_ops {
|
||||||
|
@@ -168,19 +168,19 @@ static uint64_t dp_get_cmem_chunk(struct dp_soc *soc, uint64_t size,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WLAN_SUPPORT_RX_FISA)
|
#ifdef WLAN_SUPPORT_RX_FISA
|
||||||
static inline QDF_STATUS dp_fisa_fst_cmem_addr_init(struct dp_soc *soc)
|
static uint64_t dp_get_fst_cmem_base_be(struct dp_soc *soc, uint64_t size)
|
||||||
{
|
{
|
||||||
soc->fst_cmem_size = DP_CMEM_FST_SIZE;
|
return dp_get_cmem_chunk(soc, size, FISA_FST);
|
||||||
soc->fst_cmem_base = dp_get_cmem_chunk(soc, soc->fst_cmem_size,
|
|
||||||
FISA_FST);
|
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
#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
|
#endif
|
||||||
|
|
||||||
@@ -335,9 +335,6 @@ static QDF_STATUS dp_get_cmem_allocation(struct dp_soc *soc,
|
|||||||
case COOKIE_CONVERSION:
|
case COOKIE_CONVERSION:
|
||||||
status = dp_hw_cc_cmem_addr_init(soc);
|
status = dp_hw_cc_cmem_addr_init(soc);
|
||||||
break;
|
break;
|
||||||
case FISA_FST:
|
|
||||||
status = dp_fisa_fst_cmem_addr_init(soc);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
dp_err("Invalid CMEM request");
|
dp_err("Invalid CMEM request");
|
||||||
}
|
}
|
||||||
@@ -988,10 +985,6 @@ static QDF_STATUS dp_soc_attach_be(struct dp_soc *soc,
|
|||||||
goto fail;
|
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++) {
|
for (i = 0; i < MAX_RXDESC_POOLS; i++) {
|
||||||
num_entries =
|
num_entries =
|
||||||
wlan_cfg_get_dp_soc_rx_sw_desc_num(soc->wlan_cfg_ctx);
|
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
|
#endif
|
||||||
dp_initialize_arch_ops_be_ipa(arch_ops);
|
dp_initialize_arch_ops_be_ipa(arch_ops);
|
||||||
dp_initialize_arch_ops_be_single_dev(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
|
#ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE
|
||||||
|
@@ -55,13 +55,10 @@ enum CMEM_MEM_CLIENTS {
|
|||||||
#define DP_CC_PPT_MEM_SIZE 8192
|
#define DP_CC_PPT_MEM_SIZE 8192
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* FST required CMEM offset from CMEM pool */
|
/* FST required CMEM offset M pool */
|
||||||
#define DP_FST_MEM_OFFSET_IN_CMEM \
|
#define DP_FST_MEM_OFFSET_IN_CMEM \
|
||||||
(DP_CC_MEM_OFFSET_IN_CMEM + DP_CC_PPT_MEM_SIZE)
|
(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 */
|
/* lower 9 bits in Desc ID for offset in page of SPT */
|
||||||
#define DP_CC_DESC_ID_SPT_VA_OS_SHIFT 0
|
#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;
|
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
|
* dp_rx_flow_get_fse_stats() - Retrieve a flow's statistics
|
||||||
* @pdev: pdev handle
|
* @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);
|
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
|
* dp_mon_rx_update_rx_flow_tag_stats() - Update a mon flow's statistics
|
||||||
* @pdev: pdev handle
|
* @pdev: pdev handle
|
||||||
@@ -3996,33 +3986,18 @@ QDF_STATUS dp_rx_flow_send_fst_fw_setup(struct dp_soc *soc,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
dp_mon_rx_update_rx_flow_tag_stats(struct dp_pdev *pdev, uint32_t flow_id);
|
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
|
* @soc: SoC handle
|
||||||
* @pdev: Pdev 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_flow_send_fst_fw_setup(struct dp_soc *soc,
|
||||||
QDF_STATUS dp_rx_fst_attach(struct dp_soc *soc, struct dp_pdev *pdev)
|
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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2633,18 +2633,6 @@ dp_rx_fst_detach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
|||||||
}
|
}
|
||||||
pdev->rx_fst = NULL;
|
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
|
#else
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
dp_rx_fst_attach_wrapper(struct dp_soc *soc, struct dp_pdev *pdev)
|
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;
|
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 */
|
#else /* !WLAN_SUPPORT_RX_FISA */
|
||||||
static inline QDF_STATUS dp_rx_target_fst_config(struct dp_soc *soc)
|
static inline QDF_STATUS dp_rx_target_fst_config(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif /* !WLAN_SUPPORT_RX_FISA */
|
#endif
|
||||||
|
|
||||||
#ifndef WLAN_SUPPORT_RX_FISA
|
#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)
|
static QDF_STATUS dp_rx_dump_fisa_stats(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
@@ -3552,14 +3489,6 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
|
|||||||
return status;
|
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_STATS_INIT(soc);
|
||||||
|
|
||||||
dp_runtime_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;
|
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
|
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
|
||||||
/**
|
/**
|
||||||
* dp_evaluate_update_tx_ilp_config() - Evaluate and update DP TX
|
* 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_tsf_time = dp_get_tsf_time,
|
||||||
.txrx_get_tsf2_offset = dp_get_tsf2_scratch_reg,
|
.txrx_get_tsf2_offset = dp_get_tsf2_scratch_reg,
|
||||||
.txrx_get_tqm_offset = dp_get_tqm_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 = {
|
static struct cdp_ctrl_ops dp_ops_ctrl = {
|
||||||
|
@@ -2237,6 +2237,7 @@ enum dp_context_type {
|
|||||||
* @txrx_soc_ppeds_enabled_check:
|
* @txrx_soc_ppeds_enabled_check:
|
||||||
* @txrx_soc_ppeds_txdesc_pool_reset:
|
* @txrx_soc_ppeds_txdesc_pool_reset:
|
||||||
* @dp_update_ring_hptp: Update rings hptp during suspend/resume
|
* @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 {
|
struct dp_arch_ops {
|
||||||
/* INIT/DEINIT Arch Ops */
|
/* INIT/DEINIT Arch Ops */
|
||||||
@@ -2496,6 +2497,7 @@ struct dp_arch_ops {
|
|||||||
qdf_nbuf_t *nbuf_list);
|
qdf_nbuf_t *nbuf_list);
|
||||||
#endif
|
#endif
|
||||||
void (*dp_update_ring_hptp)(struct dp_soc *soc, bool force_flush_tx);
|
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