diff options
author | Gidon Studinski <gidons@codeaurora.org> | 2016-04-18 15:51:32 +0300 |
---|---|---|
committer | Jeevan Shriram <jshriram@codeaurora.org> | 2016-04-22 15:03:18 -0700 |
commit | 6a4f3ec86c9e205575d57a4c3132c31433a921c6 (patch) | |
tree | 0c51b2764997bad5a87db143b67a89ac7fe6f343 | |
parent | b391ac1b4859157ea8a386c41729d90f32914bb7 (diff) |
msm: ipa3: enable smart prefetch control for xDCI
Enable smart prefetch control for xDCI channels.
This is done by configuring the channel scratch in GSI.
Change-Id: I9a301da3c5426649b40069103d545e50bc75aad2
CRs-Fixed: 1004467
Signed-off-by: Gidon Studinski <gidons@codeaurora.org>
-rw-r--r-- | drivers/platform/msm/ipa/ipa_clients/ipa_usb.c | 5 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_client.c | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/platform/msm/ipa/ipa_clients/ipa_usb.c b/drivers/platform/msm/ipa/ipa_clients/ipa_usb.c index 8004fa9e42ae..d6baa0abd45e 100644 --- a/drivers/platform/msm/ipa/ipa_clients/ipa_usb.c +++ b/drivers/platform/msm/ipa/ipa_clients/ipa_usb.c @@ -1229,7 +1229,7 @@ static int ipa3_usb_request_xdci_channel( chan_params.chan_params.ring_base_addr = params->xfer_ring_base_addr; chan_params.chan_params.ring_base_vaddr = NULL; - chan_params.chan_params.use_db_eng = GSI_CHAN_DIRECT_MODE; + chan_params.chan_params.use_db_eng = GSI_CHAN_DB_MODE; chan_params.chan_params.max_prefetch = GSI_ONE_PREFETCH_SEG; if (params->dir == GSI_CHAN_DIR_FROM_GSI) chan_params.chan_params.low_weight = @@ -1250,6 +1250,9 @@ static int ipa3_usb_request_xdci_channel( params->xfer_scratch.depcmd_low_addr; chan_params.chan_scratch.xdci.depcmd_hi_addr = params->xfer_scratch.depcmd_hi_addr; + chan_params.chan_scratch.xdci.outstanding_threshold = + ((params->teth_prot == IPA_USB_MBIM) ? 1 : 2) * + chan_params.chan_params.re_size; /* max_outstanding_tre is set in ipa3_request_gsi_channel() */ result = ipa3_request_gsi_channel(&chan_params, out_params); if (result) { diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c index b1927802c627..3496a0f4f5fc 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_client.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_client.c @@ -1152,7 +1152,8 @@ int ipa3_request_gsi_channel(struct ipa_request_gsi_channel_params *params, memcpy(&ep->chan_scratch, ¶ms->chan_scratch, sizeof(union __packed gsi_channel_scratch)); - ep->chan_scratch.xdci.max_outstanding_tre = gsi_ep_cfg_ptr->ipa_if_aos; + ep->chan_scratch.xdci.max_outstanding_tre = + params->chan_params.re_size * gsi_ep_cfg_ptr->ipa_if_tlv; gsi_res = gsi_write_channel_scratch(ep->gsi_chan_hdl, params->chan_scratch); if (gsi_res != GSI_STATUS_SUCCESS) { |