Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53418a95 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa4: Send new QMI indication message to modem for RSC pipe"

parents b015f306 72ffd109
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -2162,6 +2162,22 @@ int ipa3_qmi_send_mhi_cleanup_request(struct ipa_mhi_cleanup_req_msg_v01 *req)
		resp.resp.error, "ipa_mhi_cleanup_req_msg");
}

int ipa3_qmi_send_rsc_pipe_indication(
	struct ipa_endp_desc_indication_msg_v01 *req)
{
	IPAWANDBG("Sending QMI_IPA_ENDP_DESC_INDICATION_V01\n");

	if (unlikely(!ipa3_svc_handle))
		return -ETIMEDOUT;

	return qmi_send_indication(ipa3_svc_handle,
		&ipa3_qmi_ctx->client_sq,
		QMI_IPA_ENDP_DESC_INDICATION_V01,
		IPA_ENDP_DESC_INDICATION_MSG_V01_MAX_MSG_LEN,
		ipa_endp_desc_indication_msg_v01_ei,
		req);
}

void ipa3_qmi_init(void)
{
	mutex_init(&ipa3_qmi_lock);
+9 −0
Original line number Diff line number Diff line
@@ -333,6 +333,9 @@ int ipa3_qmi_get_per_client_packet_stats(
int ipa3_qmi_send_mhi_ready_indication(
	struct ipa_mhi_ready_indication_msg_v01 *req);

int ipa3_qmi_send_rsc_pipe_indication(
	struct ipa_endp_desc_indication_msg_v01 *req);

int ipa3_qmi_send_mhi_cleanup_request(struct ipa_mhi_cleanup_req_msg_v01 *req);

void ipa3_qmi_init(void);
@@ -475,6 +478,12 @@ static inline int ipa3_qmi_send_mhi_ready_indication(
	return -EPERM;
}

static int ipa3_qmi_send_rsc_pipe_indication(
	struct ipa_endp_desc_indication_msg_v01 *req)
{
	return -EPERM;
}

static inline int ipa3_qmi_send_mhi_cleanup_request(
	struct ipa_mhi_cleanup_req_msg_v01 *req)
{
+23 −0
Original line number Diff line number Diff line
@@ -1427,6 +1427,26 @@ static void apps_ipa_packet_receive_notify(void *priv,
	}
}

/* Send RSC endpoint info to modem using QMI indication message */

static int ipa_send_rsc_pipe_ind_to_modem(void)
{
	struct ipa_endp_desc_indication_msg_v01 req;
	struct ipa_ep_id_type_v01 *ep_info;

	memset(&req, 0, sizeof(struct ipa_endp_desc_indication_msg_v01));
	req.ep_info_len = 1;
	req.ep_info_valid = true;
	req.num_eps_valid = true;
	req.num_eps = 1;
	ep_info = &req.ep_info[req.ep_info_len - 1];
	ep_info->ep_id = rmnet_ipa3_ctx->ipa3_to_apps_hdl;
	ep_info->ic_type = DATA_IC_TYPE_AP_V01;
	ep_info->ep_type = DATA_EP_DESC_TYPE_RSC_PROD_V01;
	ep_info->ep_status = DATA_EP_STATUS_CONNECTED_V01;
	return ipa3_qmi_send_rsc_pipe_indication(&req);
}

static int handle3_ingress_format(struct net_device *dev,
			struct rmnet_ioctl_extended_s *in)
{
@@ -1528,6 +1548,9 @@ static int handle3_ingress_format(struct net_device *dev,
	if (ret)
		ipa3_del_a7_qmap_hdr();

	/* Sending QMI indication message share RSC pipe details*/
	if (dev->features & NETIF_F_GRO_HW)
		ipa_send_rsc_pipe_ind_to_modem();
end:
	if (ret)
		IPAWANERR("failed to configure ingress\n");