Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +16 −0 Original line number Diff line number Diff line Loading @@ -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); Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +9 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) { Loading drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +23 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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"); Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +16 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.h +9 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) { Loading
drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +23 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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"); Loading