qcacmn: Call HTT RxDMA and RxOLE PPE cfg API
Add a separate APIs to configure RxDMA and RXOLE configuration to enable the PPE based routing. Change-Id: I95b8fbb361402bc04fc1f38aa8b0dbc6f99f4f06 CRs-Fixed: 3147720
This commit is contained in:

committed by
Madan Koyyalamudi

parent
28d17d9290
commit
ea3efe6a60
@@ -6173,6 +6173,53 @@ static inline QDF_STATUS dp_print_swlm_stats(struct dp_soc *soc)
|
|||||||
}
|
}
|
||||||
#endif /* !WLAN_DP_FEATURE_SW_LATENCY_MGR */
|
#endif /* !WLAN_DP_FEATURE_SW_LATENCY_MGR */
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_PPEDS
|
||||||
|
/*
|
||||||
|
* dp_soc_target_ppe_rxole_rxdma_cfg() - Configure the RxOLe and RxDMA for PPE
|
||||||
|
* @soc: DP Tx/Rx handle
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
QDF_STATUS dp_soc_target_ppe_rxole_rxdma_cfg(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
struct dp_htt_rxdma_rxole_ppe_config htt_cfg = {0};
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Program RxDMA to override the reo destination indication
|
||||||
|
* with REO2PPE_DST_IND, when use_ppe is set to 1 in RX_MSDU_END,
|
||||||
|
* thereby driving the packet to REO2PPE ring.
|
||||||
|
* If the MSDU is spanning more than 1 buffer, then this
|
||||||
|
* override is not done.
|
||||||
|
*/
|
||||||
|
htt_cfg.override = 1;
|
||||||
|
htt_cfg.reo_destination_indication = REO2PPE_DST_IND;
|
||||||
|
htt_cfg.multi_buffer_msdu_override_en = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Override use_ppe to 0 in RxOLE for the following
|
||||||
|
* cases.
|
||||||
|
*/
|
||||||
|
htt_cfg.intra_bss_override = 1;
|
||||||
|
htt_cfg.decap_raw_override = 1;
|
||||||
|
htt_cfg.decap_nwifi_override = 1;
|
||||||
|
htt_cfg.ip_frag_override = 1;
|
||||||
|
|
||||||
|
status = dp_htt_rxdma_rxole_ppe_cfg_set(soc, &htt_cfg);
|
||||||
|
if (status != QDF_STATUS_SUCCESS)
|
||||||
|
dp_err("RxOLE and RxDMA PPE config failed %d", status);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline
|
||||||
|
QDF_STATUS dp_soc_target_ppe_rxole_rxdma_cfg(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif /* WLAN_SUPPORT_PPEDS */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dp_soc_attach_target_wifi3() - SOC initialization in the target
|
* dp_soc_attach_target_wifi3() - SOC initialization in the target
|
||||||
* @cdp_soc: Opaque Datapath SOC handle
|
* @cdp_soc: Opaque Datapath SOC handle
|
||||||
@@ -6187,6 +6234,12 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
|
|||||||
|
|
||||||
htt_soc_attach_target(soc->htt_handle);
|
htt_soc_attach_target(soc->htt_handle);
|
||||||
|
|
||||||
|
status = dp_soc_target_ppe_rxole_rxdma_cfg(soc);
|
||||||
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
|
dp_err("Failed to send htt RxOLE and RxDMA messages to target");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
status = dp_rxdma_ring_config(soc);
|
status = dp_rxdma_ring_config(soc);
|
||||||
if (status != QDF_STATUS_SUCCESS) {
|
if (status != QDF_STATUS_SUCCESS) {
|
||||||
dp_err("Failed to send htt srng setup messages to target");
|
dp_err("Failed to send htt srng setup messages to target");
|
||||||
|
@@ -1299,4 +1299,9 @@ struct hal_srng *hal_ring_handle_to_hal_srng(hal_ring_handle_t hal_ring)
|
|||||||
#define REO_QUEUE_REF_ML_TABLE_SIZE 69632
|
#define REO_QUEUE_REF_ML_TABLE_SIZE 69632
|
||||||
#define HAL_ML_PEER_ID_START 0x2000
|
#define HAL_ML_PEER_ID_START 0x2000
|
||||||
#define HAL_PEER_ID_IS_MLO(peer_id) ((peer_id) & HAL_ML_PEER_ID_START)
|
#define HAL_PEER_ID_IS_MLO(peer_id) ((peer_id) & HAL_ML_PEER_ID_START)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* REO2PPE destination indication
|
||||||
|
*/
|
||||||
|
#define REO2PPE_DST_IND 11
|
||||||
#endif /* _HAL_INTERNAL_H_ */
|
#endif /* _HAL_INTERNAL_H_ */
|
||||||
|
Reference in New Issue
Block a user