Merge "msm: ipa: fix to delete napi tx object"

This commit is contained in:
qctecmdr 2020-10-10 14:01:25 -07:00 committed by Gerrit - the friendly Code Review server
commit 1903fc4aed

View File

@ -1202,7 +1202,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
if (ipa3_assign_policy(sys_in, ep->sys)) {
IPAERR("failed to sys ctx for client %d\n", sys_in->client);
result = -ENOMEM;
goto fail_gen2;
goto fail_napi;
}
ep->valid = 1;
@ -1219,17 +1219,17 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
ep->sys->status_stat =
kzalloc(sizeof(struct ipa3_status_stats), GFP_KERNEL);
if (!ep->sys->status_stat)
goto fail_gen2;
goto fail_napi;
}
if (!ep->skip_ep_cfg) {
if (ipa3_cfg_ep(ipa_ep_idx, &sys_in->ipa_ep_cfg)) {
IPAERR("fail to configure EP.\n");
goto fail_gen2;
goto fail_napi;
}
if (ipa3_cfg_ep_status(ipa_ep_idx, &ep->status)) {
IPAERR("fail to configure status of EP.\n");
goto fail_gen2;
goto fail_napi;
}
IPADBG("ep %d configuration successful\n", ipa_ep_idx);
} else {
@ -1239,7 +1239,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
result = ipa_gsi_setup_channel(sys_in, ep);
if (result) {
IPAERR("Failed to setup GSI channel\n");
goto fail_gen2;
goto fail_napi;
}
*clnt_hdl = ipa_ep_idx;
@ -1250,7 +1250,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
IPAERR("failed to alloc repl for client %d\n",
sys_in->client);
result = -ENOMEM;
goto fail_gen2;
goto fail_napi;
}
atomic_set(&ep->sys->repl->pending, 0);
ep->sys->repl->capacity = ep->sys->rx_pool_sz + 1;
@ -1275,7 +1275,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
IPAERR("failed to alloc repl for client %d\n",
sys_in->client);
result = -ENOMEM;
goto fail_gen2;
goto fail_napi;
}
atomic_set(&ep->sys->page_recycle_repl->pending, 0);
ep->sys->page_recycle_repl->capacity =
@ -1380,6 +1380,11 @@ fail_page_recycle_repl:
ep->sys->page_recycle_repl->capacity = 0;
kfree(ep->sys->page_recycle_repl);
}
fail_napi:
/* Delete NAPI TX object. */
if (ipa3_ctx->tx_napi_enable &&
(IPA_CLIENT_IS_PROD(sys_in->client)))
netif_napi_del(&ep->sys->napi_tx);
fail_gen2:
ipa_pm_deregister(ep->sys->pm_hdl);
fail_pm: