msm: ipa: Set hard byte limit for coalescing pipe only
Change the set_aggr_limit to only set the hard byte limit for
coalescing pipe instead for every pipe in devices with IPA
HW version > 4.5 (support coalescing). Remove the warn on
for the hard byte limit in the 4.5 construct_aggr function.
Change-Id: I6e7b5cc7a58d09898060ba7fe94a88a8a51aa628
Signed-off-by: Michael Adisumarta <madisuma@codeaurora.org>
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c
index a93f6ff0..e5f2aee 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -3247,25 +3247,26 @@ static void ipa3_set_aggr_limit(struct ipa_sys_connect_params *in,
u32 *aggr_byte_limit = &in->ipa_ep_cfg.aggr.aggr_byte_limit;
u32 adjusted_sz = ipa_adjust_ra_buff_base_sz(*aggr_byte_limit);
- IPAERR("get close-by %u\n", adjusted_sz);
- IPAERR("set rx_buff_sz %lu\n", (unsigned long int)
+ IPADBG("get close-by %u\n", adjusted_sz);
+ IPADBG("set rx_buff_sz %lu\n", (unsigned long int)
IPA_GENERIC_RX_BUFF_SZ(adjusted_sz));
/* disable ipa_status */
sys->ep->status.status_en = false;
sys->rx_buff_sz = IPA_GENERIC_RX_BUFF_SZ(adjusted_sz);
- if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_5) {
- *aggr_byte_limit = sys->rx_buff_sz < *aggr_byte_limit ?
- IPA_ADJUST_AGGR_BYTE_LIMIT(sys->rx_buff_sz) :
- IPA_ADJUST_AGGR_BYTE_LIMIT(*aggr_byte_limit);
- } else {
+ if (in->client == IPA_CLIENT_APPS_WAN_COAL_CONS) {
*aggr_byte_limit = sys->rx_buff_sz < *aggr_byte_limit ?
IPA_ADJUST_AGGR_BYTE_HARD_LIMIT(sys->rx_buff_sz) :
IPA_ADJUST_AGGR_BYTE_HARD_LIMIT(*aggr_byte_limit);
in->ipa_ep_cfg.aggr.aggr_hard_byte_limit_en = 1;
+ } else {
+ *aggr_byte_limit = sys->rx_buff_sz < *aggr_byte_limit ?
+ IPA_ADJUST_AGGR_BYTE_LIMIT(sys->rx_buff_sz) :
+ IPA_ADJUST_AGGR_BYTE_LIMIT(*aggr_byte_limit);
}
- IPAERR("set aggr_limit %lu\n", (unsigned long int) *aggr_byte_limit);
+
+ IPADBG("set aggr_limit %lu\n", (unsigned long int) *aggr_byte_limit);
}
static int ipa3_assign_policy(struct ipa_sys_connect_params *in,
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c
index 13c1128..ff33340 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -1797,12 +1797,6 @@ static void ipareg_construct_endp_init_aggr_n_v4_5(enum ipahal_reg_name reg,
IPA_ENDP_INIT_AGGR_n_AGGR_SW_EOF_ACTIVE_SHFT_V4_5,
IPA_ENDP_INIT_AGGR_n_AGGR_SW_EOF_ACTIVE_BMSK_V4_5);
- /* At IPAv3 hard_byte_limit is not supported */
- if (ep_aggr->aggr_hard_byte_limit_en) {
- IPAHAL_ERR("hard byte limit aggr is not supported\n");
- WARN_ON(1);
- }
- ep_aggr->aggr_hard_byte_limit_en = 0;
IPA_SETFIELD_IN_REG(*val, ep_aggr->aggr_hard_byte_limit_en,
IPA_ENDP_INIT_AGGR_n_AGGR_HARD_BYTE_LIMIT_ENABLE_SHFT_V4_5,
IPA_ENDP_INIT_AGGR_n_AGGR_HARD_BYTE_LIMIT_ENABLE_BMSK_V4_5);