Merge "msm: ipa: Disable csum offload and status for ODL pipe"

This commit is contained in:
qctecmdr 2019-11-01 18:37:36 -07:00 • committed by Gerrit - the friendly Code Review server
commit c2157915a1
2 changed files with 23 additions and 5 deletions

View file

@ -3808,7 +3808,16 @@ static int ipa3_assign_policy(struct ipa_sys_connect_params *in,
} else if (in->client == IPA_CLIENT_ODL_DPL_CONS) {
IPADBG("assigning policy to ODL client:%d\n",
in->client);
sys->ep->status.status_en = true;
/* Status enabling is needed for DPLv2 with
* IPA versions < 4.5.
* Dont enable ipa_status for APQ, since MDM IPA
* has IPA >= 4.5 with DPLv3.
*/
if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ &&
ipa3_is_mhip_offload_enabled())
sys->ep->status.status_en = false;
else
sys->ep->status.status_en = true;
sys->policy = IPA_POLICY_INTR_POLL_MODE;
INIT_WORK(&sys->work, ipa3_wq_handle_rx);
INIT_DELAYED_WORK(&sys->switch_to_intr_work,

View file

@ -287,10 +287,6 @@ int ipa_setup_odl_pipe(void)
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr_en = IPA_ENABLE_AGGR;
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr_hard_byte_limit_en = 1;
if (ipa3_is_mhip_offload_enabled()) {
IPADBG("MHIP is enabled, disable aggregation for ODL pipe");
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr_en = IPA_BYPASS_AGGR;
}
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr = IPA_GENERIC;
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr_byte_limit =
IPA_ODL_AGGR_BYTE_LIMIT;
@ -316,6 +312,19 @@ int ipa_setup_odl_pipe(void)
ipa_odl_ep_cfg->desc_fifo_sz = IPA_ODL_RX_RING_SIZE *
IPA_FIFO_ELEMENT_SIZE;
ipa3_odl_ctx->odl_client_hdl = -1;
/* For MHIP, ODL functionality is DMA. So bypass aggregation, checksum
* offload, hdr_len.
*/
if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ &&
ipa3_is_mhip_offload_enabled()) {
IPADBG("MHIP enabled: bypass aggr + csum offload for ODL");
ipa_odl_ep_cfg->ipa_ep_cfg.aggr.aggr_en = IPA_BYPASS_AGGR;
ipa_odl_ep_cfg->ipa_ep_cfg.cfg.cs_offload_en =
IPA_DISABLE_CS_OFFLOAD;
ipa_odl_ep_cfg->ipa_ep_cfg.hdr.hdr_len = 0;
}
ret = ipa3_setup_sys_pipe(ipa_odl_ep_cfg,
&ipa3_odl_ctx->odl_client_hdl);
return ret;