Merge "dataipa: ipa_eth: Dynamic NTN3 client moderation configuration"
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_eth_i.c b/drivers/platform/msm/ipa/ipa_v3/ipa_eth_i.c
index ff0d085..dd90faf 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_eth_i.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_eth_i.c
@@ -719,7 +719,7 @@
 	return result;
 }
 
-static int ipa_eth_setup_ntn3_gsi_channel(
+static int ipa_eth_setup_ntn_gsi_channel(
 	struct ipa_eth_client_pipe_info *pipe,
 	struct ipa3_ep_context *ep)
 {
@@ -751,11 +751,8 @@
 	gsi_evt_ring_props.int_modt = IPA_ETH_NTN_MODT;
 	/* len / RE_SIZE == len in counts (convert from bytes) */
 	len = pipe->info.transfer_ring_size;
-	/*
-	 * int_modc = 2 is experiments based best value for tput.
-	 * we shall use a framework setup in the future.
-	 */
-	gsi_evt_ring_props.int_modc = 2;
+	gsi_evt_ring_props.int_modc = len * IPA_ETH_AQC_MODC_FACTOR /
+		(100 * GSI_EVT_RING_RE_SIZE_16B);
 	gsi_evt_ring_props.exclusive = true;
 	gsi_evt_ring_props.err_cb = ipa_eth_gsi_evt_ring_err_cb;
 	gsi_evt_ring_props.user_data = NULL;
@@ -1025,7 +1022,7 @@
 		result = ipa_eth_setup_aqc_gsi_channel(pipe, ep);
 		break;
 	case IPA_HW_PROTOCOL_NTN3:
-		result = ipa_eth_setup_ntn3_gsi_channel(pipe, ep);
+		result = ipa_eth_setup_ntn_gsi_channel(pipe, ep);
 		break;
 	default:
 		IPAERR("unknown protocol %d\n", prot);
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c
index 4fabe64..8aef35c 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c
@@ -989,6 +989,8 @@
 	[IPA_4_7][IPA_QMB_INSTANCE_DDR]	        = {13, 12, 120},
 	[IPA_4_9][IPA_QMB_INSTANCE_DDR]	        = {16, 8, 120},
 	[IPA_4_11][IPA_QMB_INSTANCE_DDR] = {13, 12, 120},
+	[IPA_5_5][IPA_QMB_INSTANCE_DDR]		= {16, 12, 0},
+	[IPA_5_5][IPA_QMB_INSTANCE_PCIE]	= {16, 8, 0},
 };
 
 enum ipa_tx_instance {