msm:ipa: changes to defer remote channel starting for rndis connect

this change defers starting of remote channels on device for rndis to
wan state ioctl is received thus avoiding double channel starts from
usb connect and wan state ioctl.

Change-Id: Ibd0960927496a1c2fd14b2df8fa94287dd2388a7
Signed-off-by: Michael Adisumarta <madisuma@codeaurora.org>
This commit is contained in:
Michael Adisumarta 2020-04-15 18:44:18 -07:00
parent 764c42be07
commit e5127624bd

View File

@ -2744,11 +2744,18 @@ int ipa_mpm_mhip_xdci_pipe_enable(enum ipa_usb_teth_prot xdci_teth_prot)
}
}
if (probe_id == IPA_MPM_MHIP_CH_ID_MAX) {
if ((probe_id < IPA_MPM_MHIP_CH_ID_0) ||
(probe_id >= IPA_MPM_MHIP_CH_ID_MAX)) {
IPA_MPM_ERR("Unknown probe_id\n");
return 0;
}
if (probe_id == IPA_MPM_MHIP_CH_ID_0) {
/* For rndis, the MPM processing happens in WAN State IOCTL */
IPA_MPM_DBG("MPM Xdci connect for rndis, no -op\n");
return 0;
}
IPA_MPM_DBG("Connect xdci prot %d -> mhip_client = %d probe_id = %d\n",
xdci_teth_prot, mhip_client, probe_id);
@ -2793,7 +2800,7 @@ int ipa_mpm_mhip_xdci_pipe_enable(enum ipa_usb_teth_prot xdci_teth_prot)
atomic_set(&ipa_mpm_ctx->adpl_over_usb_available, 1);
return 0;
default:
IPA_MPM_DBG("mhip_client = %d not processed\n", mhip_client);
IPA_MPM_ERR("mhip_client = %d not processed\n", mhip_client);
if (is_acted) {
ret = ipa_mpm_vote_unvote_pcie_clk(CLK_OFF, probe_id,
false, &is_acted);
@ -2803,7 +2810,8 @@ int ipa_mpm_mhip_xdci_pipe_enable(enum ipa_usb_teth_prot xdci_teth_prot)
return ret;
}
}
return 0;
ipa_assert();
return -EINVAL;
}
if (mhip_client != IPA_MPM_MHIP_USB_DPL)
@ -2876,12 +2884,19 @@ int ipa_mpm_mhip_xdci_pipe_disable(enum ipa_usb_teth_prot xdci_teth_prot)
}
}
if (probe_id == IPA_MPM_MHIP_CH_ID_MAX) {
IPA_MPM_ERR("Invalid probe_id\n");
if ((probe_id < IPA_MPM_MHIP_CH_ID_0) ||
(probe_id >= IPA_MPM_MHIP_CH_ID_MAX)) {
IPA_MPM_ERR("Unknown probe_id\n");
return 0;
}
IPA_MPM_ERR("xdci disconnect prot %d mhip_client = %d probe_id = %d\n",
if (probe_id == IPA_MPM_MHIP_CH_ID_0) {
/* For rndis, the MPM processing happens in WAN State IOCTL */
IPA_MPM_DBG("MPM Xdci disconnect for rndis, no -op\n");
return 0;
}
IPA_MPM_DBG("xdci disconnect prot %d mhip_client = %d probe_id = %d\n",
xdci_teth_prot, mhip_client, probe_id);
/*
* Make sure to stop Device side channels before