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:
Neelansh Mittal
2022-01-18 00:18:11 +05:30
committed by Madan Koyyalamudi
parent 28d17d9290
commit ea3efe6a60
2 changed files with 58 additions and 0 deletions

View File

@@ -6173,6 +6173,53 @@ static inline QDF_STATUS dp_print_swlm_stats(struct dp_soc *soc)
}
#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
* @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);
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);
if (status != QDF_STATUS_SUCCESS) {
dp_err("Failed to send htt srng setup messages to target");