Loading drivers/platform/msm/ipa/ipa_api.c +44 −0 Original line number Diff line number Diff line Loading @@ -1772,6 +1772,50 @@ int teth_bridge_connect(struct teth_bridge_connect_params *connect_params) } EXPORT_SYMBOL(teth_bridge_connect); /* ipa_set_client() - provide client mapping * @client: client type * * Return value: none */ void ipa_set_client(int index, enum ipacm_client_enum client, bool uplink) { IPA_API_DISPATCH(ipa_set_client, index, client, uplink); } EXPORT_SYMBOL(ipa_set_client); /** * ipa_get_client() - provide client mapping * @client: client type * * Return value: none */ enum ipacm_client_enum ipa_get_client(int pipe_idx) { int ret; IPA_API_DISPATCH_RETURN(ipa_get_client, pipe_idx); return ret; } EXPORT_SYMBOL(ipa_get_client); /** * ipa_get_client_uplink() - provide client mapping * @client: client type * * Return value: none */ bool ipa_get_client_uplink(int pipe_idx) { int ret; IPA_API_DISPATCH_RETURN(ipa_get_client_uplink, pipe_idx); return ret; } EXPORT_SYMBOL(ipa_get_client_uplink); /** * odu_bridge_init() - Initialize the ODU bridge driver * @params: initialization parameters Loading drivers/platform/msm/ipa/ipa_api.h +7 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,13 @@ struct ipa_api_controller { int (*teth_bridge_connect)( struct teth_bridge_connect_params *connect_params); void (*ipa_set_client)( int index, enum ipacm_client_enum client, bool uplink); enum ipacm_client_enum (*ipa_get_client)(int pipe_idx); bool (*ipa_get_client_uplink)(int pipe_idx); int (*odu_bridge_init)(struct odu_bridge_params *params); int (*odu_bridge_connect)(void); Loading drivers/platform/msm/ipa/ipa_v2/ipa_i.h +21 −0 Original line number Diff line number Diff line Loading @@ -1059,6 +1059,16 @@ struct ipa_sps_pm { atomic_t eot_activity; }; /** * struct ipacm_client_info - the client-info indicated from IPACM * @ipacm_client_enum: the enum to indicate tether-client * @ipacm_client_uplink: the bool to indicate pipe for uplink */ struct ipacm_client_info { enum ipacm_client_enum client_enum; bool uplink; }; /** * struct ipa_context - IPA context * @class: pointer to the struct class Loading Loading @@ -1238,6 +1248,8 @@ struct ipa_context { /* RMNET_IOCTL_INGRESS_FORMAT_AGG_DATA */ bool ipa_client_apps_wan_cons_agg_gro; /* M-release support to know client pipes */ struct ipacm_client_info ipacm_client[IPA_MAX_NUM_PIPES]; }; /** Loading Loading @@ -1643,6 +1655,15 @@ int ipa2_teth_bridge_disconnect(enum ipa_client_type client); int ipa2_teth_bridge_connect(struct teth_bridge_connect_params *connect_params); /* * Tethering client info */ void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink); enum ipacm_client_enum ipa2_get_client(int pipe_idx); bool ipa2_get_client_uplink(int pipe_idx); /* * ODU bridge */ Loading drivers/platform/msm/ipa/ipa_v2/ipa_qmi_service.h +6 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,12 @@ int rmnet_ipa_set_data_quota(struct wan_ioctl_set_data_quota *data); void ipa_broadcast_quota_reach_ind(uint32_t mux_id); int rmnet_ipa_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe *data); int rmnet_ipa_query_tethering_stats(struct wan_ioctl_query_tether_stats *data, bool reset); int ipa_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req, struct ipa_get_data_stats_resp_msg_v01 *resp); Loading drivers/platform/msm/ipa/ipa_v2/ipa_utils.c +48 −0 Original line number Diff line number Diff line Loading @@ -909,6 +909,51 @@ int ipa2_get_ep_mapping(enum ipa_client_type client) return ep_mapping[hw_type_index][client]; } /* ipa2_set_client() - provide client mapping * @client: client type * * Return value: none */ void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink) { if (client >= IPACM_CLIENT_MAX || client < IPACM_CLIENT_USB) { IPAERR("Bad client number! client =%d\n", client); } else if (index >= IPA_MAX_NUM_PIPES || index < 0) { IPAERR("Bad pipe index! index =%d\n", index); } else { ipa_ctx->ipacm_client[index].client_enum = client; ipa_ctx->ipacm_client[index].uplink = uplink; } } /** * ipa2_get_client() - provide client mapping * @client: client type * * Return value: none */ enum ipacm_client_enum ipa2_get_client(int pipe_idx) { if (pipe_idx >= IPA_MAX_NUM_PIPES || pipe_idx < 0) { IPAERR("Bad pipe index! pipe_idx =%d\n", pipe_idx); return IPACM_CLIENT_MAX; } else { return ipa_ctx->ipacm_client[pipe_idx].client_enum; } } /** * ipa2_get_client_uplink() - provide client mapping * @client: client type * * Return value: none */ bool ipa2_get_client_uplink(int pipe_idx) { return ipa_ctx->ipacm_client[pipe_idx].uplink; } /** * ipa2_get_rm_resource_from_ep() - get the IPA_RM resource which is related to * the supplied pipe index. Loading Loading @@ -4978,6 +5023,9 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->teth_bridge_init = ipa2_teth_bridge_init; api_ctrl->teth_bridge_disconnect = ipa2_teth_bridge_disconnect; api_ctrl->teth_bridge_connect = ipa2_teth_bridge_connect; api_ctrl->ipa_set_client = ipa2_set_client; api_ctrl->ipa_get_client = ipa2_get_client; api_ctrl->ipa_get_client_uplink = ipa2_get_client_uplink; api_ctrl->odu_bridge_init = ipa2_odu_bridge_init; api_ctrl->odu_bridge_connect = ipa2_odu_bridge_connect; api_ctrl->odu_bridge_disconnect = ipa2_odu_bridge_disconnect; Loading Loading
drivers/platform/msm/ipa/ipa_api.c +44 −0 Original line number Diff line number Diff line Loading @@ -1772,6 +1772,50 @@ int teth_bridge_connect(struct teth_bridge_connect_params *connect_params) } EXPORT_SYMBOL(teth_bridge_connect); /* ipa_set_client() - provide client mapping * @client: client type * * Return value: none */ void ipa_set_client(int index, enum ipacm_client_enum client, bool uplink) { IPA_API_DISPATCH(ipa_set_client, index, client, uplink); } EXPORT_SYMBOL(ipa_set_client); /** * ipa_get_client() - provide client mapping * @client: client type * * Return value: none */ enum ipacm_client_enum ipa_get_client(int pipe_idx) { int ret; IPA_API_DISPATCH_RETURN(ipa_get_client, pipe_idx); return ret; } EXPORT_SYMBOL(ipa_get_client); /** * ipa_get_client_uplink() - provide client mapping * @client: client type * * Return value: none */ bool ipa_get_client_uplink(int pipe_idx) { int ret; IPA_API_DISPATCH_RETURN(ipa_get_client_uplink, pipe_idx); return ret; } EXPORT_SYMBOL(ipa_get_client_uplink); /** * odu_bridge_init() - Initialize the ODU bridge driver * @params: initialization parameters Loading
drivers/platform/msm/ipa/ipa_api.h +7 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,13 @@ struct ipa_api_controller { int (*teth_bridge_connect)( struct teth_bridge_connect_params *connect_params); void (*ipa_set_client)( int index, enum ipacm_client_enum client, bool uplink); enum ipacm_client_enum (*ipa_get_client)(int pipe_idx); bool (*ipa_get_client_uplink)(int pipe_idx); int (*odu_bridge_init)(struct odu_bridge_params *params); int (*odu_bridge_connect)(void); Loading
drivers/platform/msm/ipa/ipa_v2/ipa_i.h +21 −0 Original line number Diff line number Diff line Loading @@ -1059,6 +1059,16 @@ struct ipa_sps_pm { atomic_t eot_activity; }; /** * struct ipacm_client_info - the client-info indicated from IPACM * @ipacm_client_enum: the enum to indicate tether-client * @ipacm_client_uplink: the bool to indicate pipe for uplink */ struct ipacm_client_info { enum ipacm_client_enum client_enum; bool uplink; }; /** * struct ipa_context - IPA context * @class: pointer to the struct class Loading Loading @@ -1238,6 +1248,8 @@ struct ipa_context { /* RMNET_IOCTL_INGRESS_FORMAT_AGG_DATA */ bool ipa_client_apps_wan_cons_agg_gro; /* M-release support to know client pipes */ struct ipacm_client_info ipacm_client[IPA_MAX_NUM_PIPES]; }; /** Loading Loading @@ -1643,6 +1655,15 @@ int ipa2_teth_bridge_disconnect(enum ipa_client_type client); int ipa2_teth_bridge_connect(struct teth_bridge_connect_params *connect_params); /* * Tethering client info */ void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink); enum ipacm_client_enum ipa2_get_client(int pipe_idx); bool ipa2_get_client_uplink(int pipe_idx); /* * ODU bridge */ Loading
drivers/platform/msm/ipa/ipa_v2/ipa_qmi_service.h +6 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,12 @@ int rmnet_ipa_set_data_quota(struct wan_ioctl_set_data_quota *data); void ipa_broadcast_quota_reach_ind(uint32_t mux_id); int rmnet_ipa_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe *data); int rmnet_ipa_query_tethering_stats(struct wan_ioctl_query_tether_stats *data, bool reset); int ipa_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req, struct ipa_get_data_stats_resp_msg_v01 *resp); Loading
drivers/platform/msm/ipa/ipa_v2/ipa_utils.c +48 −0 Original line number Diff line number Diff line Loading @@ -909,6 +909,51 @@ int ipa2_get_ep_mapping(enum ipa_client_type client) return ep_mapping[hw_type_index][client]; } /* ipa2_set_client() - provide client mapping * @client: client type * * Return value: none */ void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink) { if (client >= IPACM_CLIENT_MAX || client < IPACM_CLIENT_USB) { IPAERR("Bad client number! client =%d\n", client); } else if (index >= IPA_MAX_NUM_PIPES || index < 0) { IPAERR("Bad pipe index! index =%d\n", index); } else { ipa_ctx->ipacm_client[index].client_enum = client; ipa_ctx->ipacm_client[index].uplink = uplink; } } /** * ipa2_get_client() - provide client mapping * @client: client type * * Return value: none */ enum ipacm_client_enum ipa2_get_client(int pipe_idx) { if (pipe_idx >= IPA_MAX_NUM_PIPES || pipe_idx < 0) { IPAERR("Bad pipe index! pipe_idx =%d\n", pipe_idx); return IPACM_CLIENT_MAX; } else { return ipa_ctx->ipacm_client[pipe_idx].client_enum; } } /** * ipa2_get_client_uplink() - provide client mapping * @client: client type * * Return value: none */ bool ipa2_get_client_uplink(int pipe_idx) { return ipa_ctx->ipacm_client[pipe_idx].uplink; } /** * ipa2_get_rm_resource_from_ep() - get the IPA_RM resource which is related to * the supplied pipe index. Loading Loading @@ -4978,6 +5023,9 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->teth_bridge_init = ipa2_teth_bridge_init; api_ctrl->teth_bridge_disconnect = ipa2_teth_bridge_disconnect; api_ctrl->teth_bridge_connect = ipa2_teth_bridge_connect; api_ctrl->ipa_set_client = ipa2_set_client; api_ctrl->ipa_get_client = ipa2_get_client; api_ctrl->ipa_get_client_uplink = ipa2_get_client_uplink; api_ctrl->odu_bridge_init = ipa2_odu_bridge_init; api_ctrl->odu_bridge_connect = ipa2_odu_bridge_connect; api_ctrl->odu_bridge_disconnect = ipa2_odu_bridge_disconnect; Loading