Răsfoiți Sursa

Merge "msm: ipa: fix updating the rx_buff size from netmngr"

qctecmdr 4 ani în urmă
părinte
comite
6a476e89a2
1 a modificat fișierele cu 17 adăugiri și 10 ștergeri
  1. 17 10
      drivers/platform/msm/ipa/ipa_v3/ipa_dp.c

+ 17 - 10
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c

@@ -1199,6 +1199,11 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
 			sys_in->client);
 	}
 
+	ep->client = sys_in->client;
+	ep->sys->ext_ioctl_v2 = sys_in->ext_ioctl_v2;
+	ep->sys->int_modt = sys_in->int_modt;
+	ep->sys->int_modc = sys_in->int_modc;
+	ep->sys->buff_size = sys_in->buff_size;
 	ep->skip_ep_cfg = sys_in->skip_ep_cfg;
 	if (ipa3_assign_policy(sys_in, ep->sys)) {
 		IPAERR("failed to sys ctx for client %d\n", sys_in->client);
@@ -1207,13 +1212,8 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
 	}
 
 	ep->valid = 1;
-	ep->client = sys_in->client;
 	ep->client_notify = sys_in->notify;
 	ep->sys->napi_obj = sys_in->napi_obj;
-	ep->sys->ext_ioctl_v2 = sys_in->ext_ioctl_v2;
-	ep->sys->int_modt = sys_in->int_modt;
-	ep->sys->int_modc = sys_in->int_modc;
-	ep->sys->buff_size = sys_in->buff_size;
 	ep->priv = sys_in->priv;
 	ep->keep_ipa_awake = sys_in->keep_ipa_awake;
 	atomic_set(&ep->avail_fifo_desc,
@@ -3910,15 +3910,22 @@ static void ipa3_set_aggr_limit(struct ipa_sys_connect_params *in,
 		struct ipa3_sys_context *sys)
 {
 	u32 *aggr_byte_limit = &in->ipa_ep_cfg.aggr.aggr_byte_limit;
-	u32 adjusted_sz = ipa_adjust_ra_buff_base_sz(*aggr_byte_limit);
+	u32 adjusted_sz;
 
-	IPADBG("get close-by %u\n", adjusted_sz);
-	IPADBG("set rx_buff_sz %lu\n", (unsigned long)
-		IPA_GENERIC_RX_BUFF_SZ(adjusted_sz));
+	if (sys->ext_ioctl_v2) {
+		IPAERR("set rx_buff_sz config from netmngr %lu\n", (unsigned long)
+			sys->buff_size);
+		sys->rx_buff_sz = IPA_GENERIC_RX_BUFF_SZ(sys->buff_size);
+	} else {
+		adjusted_sz = ipa_adjust_ra_buff_base_sz(*aggr_byte_limit);
+		IPAERR("get close-by %u\n", adjusted_sz);
+		IPAERR("set default rx_buff_sz %lu\n", (unsigned long)
+				IPA_GENERIC_RX_BUFF_SZ(adjusted_sz));
+		sys->rx_buff_sz = 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 (in->client == IPA_CLIENT_APPS_WAN_COAL_CONS)
 		in->ipa_ep_cfg.aggr.aggr_hard_byte_limit_en = 1;