Loading drivers/platform/msm/ipa/ipa_v3/ipa_client.c +68 −46 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ static int ipa3_is_xdci_channel_empty(struct ipa3_ep_context *ep, bool *is_empty); static void ipa3_start_gsi_debug_monitor(u32 clnt_hdl); int ipa3_enable_data_path(u32 clnt_hdl) { Loading Loading @@ -254,6 +255,68 @@ static bool ipa3_is_legal_params(struct ipa_request_gsi_channel_params *params) return true; } static void ipa3_start_gsi_debug_monitor(u32 clnt_hdl) { struct IpaHwOffloadStatsAllocCmdData_t *gsi_info; struct ipa3_ep_context *ep; enum ipa_client_type client_type; IPADBG("entry\n"); if (clnt_hdl >= ipa3_ctx->ipa_num_pipes || ipa3_ctx->ep[clnt_hdl].valid == 0) { IPAERR("Bad parameters.\n"); return; } ep = &ipa3_ctx->ep[clnt_hdl]; client_type = ipa3_get_client_mapping(clnt_hdl); /* start uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: IPADBG("client_type %d not supported\n", client_type); } } } int ipa3_smmu_map_peer_reg(phys_addr_t phys_addr, bool map, enum ipa_smmu_cb_type cb_type) { Loading Loading @@ -756,6 +819,7 @@ int ipa3_xdci_start(u32 clnt_hdl, u8 xferrscidx, bool xferrscidx_valid) IPAERR("Error starting channel: %d\n", gsi_res); goto write_chan_scratch_fail; } ipa3_start_gsi_debug_monitor(clnt_hdl); if (!ep->keep_ipa_awake) IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl)); Loading Loading @@ -1517,6 +1581,7 @@ int ipa3_xdci_suspend(u32 ul_clnt_hdl, u32 dl_clnt_hdl, start_dl_and_exit: gsi_start_channel(dl_ep->gsi_chan_hdl); ipa3_start_gsi_debug_monitor(dl_clnt_hdl); unsuspend_dl_and_exit: if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_0) { /* Unsuspend the DL EP */ Loading @@ -1535,7 +1600,6 @@ int ipa3_start_gsi_channel(u32 clnt_hdl) int result = -EFAULT; enum gsi_status gsi_res; enum ipa_client_type client_type; struct IpaHwOffloadStatsAllocCmdData_t *gsi_info; IPADBG("entry\n"); if (clnt_hdl >= ipa3_ctx->ipa_num_pipes || Loading @@ -1554,51 +1618,7 @@ int ipa3_start_gsi_channel(u32 clnt_hdl) IPAERR("Error starting channel: %d\n", gsi_res); goto start_chan_fail; } /* start uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: IPADBG("client_type %d not supported\n", client_type); } } ipa3_start_gsi_debug_monitor(clnt_hdl); if (!ep->keep_ipa_awake) IPA_ACTIVE_CLIENTS_DEC_EP(client_type); Loading Loading @@ -1646,12 +1666,14 @@ int ipa3_xdci_resume(u32 ul_clnt_hdl, u32 dl_clnt_hdl, bool is_dpl) gsi_res = gsi_start_channel(dl_ep->gsi_chan_hdl); if (gsi_res != GSI_STATUS_SUCCESS) IPAERR("Error starting DL channel: %d\n", gsi_res); ipa3_start_gsi_debug_monitor(dl_clnt_hdl); /* Start UL channel */ if (!is_dpl) { gsi_res = gsi_start_channel(ul_ep->gsi_chan_hdl); if (gsi_res != GSI_STATUS_SUCCESS) IPAERR("Error starting UL channel: %d\n", gsi_res); ipa3_start_gsi_debug_monitor(ul_clnt_hdl); } IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(dl_clnt_hdl)); Loading drivers/platform/msm/ipa/ipa_v3/ipa_uc_offload_i.h +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ enum ipa3_hw_features { * @IPA_HW_PROTOCOL_WDI : protocol related to WDI operation in IPA HW * @IPA_HW_PROTOCOL_WDI3: protocol related to WDI3 operation in IPA HW * @IPA_HW_PROTOCOL_ETH : protocol related to ETH operation in IPA HW * @IPA_HW_PROTOCOL_MHIP: protocol related to MHIP operation in IPA HW * @IPA_HW_PROTOCOL_USB : protocol related to USB operation in IPA HW */ enum ipa4_hw_protocol { IPA_HW_PROTOCOL_COMMON = 0x0, Loading drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +8 −8 Original line number Diff line number Diff line Loading @@ -7152,43 +7152,43 @@ static int __ipa3_stop_gsi_channel(u32 clnt_hdl) client_type = ipa3_get_client_mapping(clnt_hdl); memset(&mem, 0, sizeof(mem)); /* start uC gsi dbg stats monitor */ /* stop uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].ch_id = 0xff; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].ch_id = 0xff; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].ch_id = 0xff; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].ch_id = 0xff; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].ch_id = 0xff; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_CONSUMER; gsi_info->ch_id_info[1].ch_id = 0xff; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_client.c +68 −46 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ static int ipa3_is_xdci_channel_empty(struct ipa3_ep_context *ep, bool *is_empty); static void ipa3_start_gsi_debug_monitor(u32 clnt_hdl); int ipa3_enable_data_path(u32 clnt_hdl) { Loading Loading @@ -254,6 +255,68 @@ static bool ipa3_is_legal_params(struct ipa_request_gsi_channel_params *params) return true; } static void ipa3_start_gsi_debug_monitor(u32 clnt_hdl) { struct IpaHwOffloadStatsAllocCmdData_t *gsi_info; struct ipa3_ep_context *ep; enum ipa_client_type client_type; IPADBG("entry\n"); if (clnt_hdl >= ipa3_ctx->ipa_num_pipes || ipa3_ctx->ep[clnt_hdl].valid == 0) { IPAERR("Bad parameters.\n"); return; } ep = &ipa3_ctx->ep[clnt_hdl]; client_type = ipa3_get_client_mapping(clnt_hdl); /* start uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: IPADBG("client_type %d not supported\n", client_type); } } } int ipa3_smmu_map_peer_reg(phys_addr_t phys_addr, bool map, enum ipa_smmu_cb_type cb_type) { Loading Loading @@ -756,6 +819,7 @@ int ipa3_xdci_start(u32 clnt_hdl, u8 xferrscidx, bool xferrscidx_valid) IPAERR("Error starting channel: %d\n", gsi_res); goto write_chan_scratch_fail; } ipa3_start_gsi_debug_monitor(clnt_hdl); if (!ep->keep_ipa_awake) IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl)); Loading Loading @@ -1517,6 +1581,7 @@ int ipa3_xdci_suspend(u32 ul_clnt_hdl, u32 dl_clnt_hdl, start_dl_and_exit: gsi_start_channel(dl_ep->gsi_chan_hdl); ipa3_start_gsi_debug_monitor(dl_clnt_hdl); unsuspend_dl_and_exit: if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_0) { /* Unsuspend the DL EP */ Loading @@ -1535,7 +1600,6 @@ int ipa3_start_gsi_channel(u32 clnt_hdl) int result = -EFAULT; enum gsi_status gsi_res; enum ipa_client_type client_type; struct IpaHwOffloadStatsAllocCmdData_t *gsi_info; IPADBG("entry\n"); if (clnt_hdl >= ipa3_ctx->ipa_num_pipes || Loading @@ -1554,51 +1618,7 @@ int ipa3_start_gsi_channel(u32 clnt_hdl) IPAERR("Error starting channel: %d\n", gsi_res); goto start_chan_fail; } /* start uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: IPADBG("client_type %d not supported\n", client_type); } } ipa3_start_gsi_debug_monitor(clnt_hdl); if (!ep->keep_ipa_awake) IPA_ACTIVE_CLIENTS_DEC_EP(client_type); Loading Loading @@ -1646,12 +1666,14 @@ int ipa3_xdci_resume(u32 ul_clnt_hdl, u32 dl_clnt_hdl, bool is_dpl) gsi_res = gsi_start_channel(dl_ep->gsi_chan_hdl); if (gsi_res != GSI_STATUS_SUCCESS) IPAERR("Error starting DL channel: %d\n", gsi_res); ipa3_start_gsi_debug_monitor(dl_clnt_hdl); /* Start UL channel */ if (!is_dpl) { gsi_res = gsi_start_channel(ul_ep->gsi_chan_hdl); if (gsi_res != GSI_STATUS_SUCCESS) IPAERR("Error starting UL channel: %d\n", gsi_res); ipa3_start_gsi_debug_monitor(ul_clnt_hdl); } IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(dl_clnt_hdl)); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_uc_offload_i.h +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ enum ipa3_hw_features { * @IPA_HW_PROTOCOL_WDI : protocol related to WDI operation in IPA HW * @IPA_HW_PROTOCOL_WDI3: protocol related to WDI3 operation in IPA HW * @IPA_HW_PROTOCOL_ETH : protocol related to ETH operation in IPA HW * @IPA_HW_PROTOCOL_MHIP: protocol related to MHIP operation in IPA HW * @IPA_HW_PROTOCOL_USB : protocol related to USB operation in IPA HW */ enum ipa4_hw_protocol { IPA_HW_PROTOCOL_COMMON = 0x0, Loading
drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +8 −8 Original line number Diff line number Diff line Loading @@ -7152,43 +7152,43 @@ static int __ipa3_stop_gsi_channel(u32 clnt_hdl) client_type = ipa3_get_client_mapping(clnt_hdl); memset(&mem, 0, sizeof(mem)); /* start uC gsi dbg stats monitor */ /* stop uC gsi dbg stats monitor */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { switch (client_type) { case IPA_CLIENT_MHI_PRIME_TETH_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].ch_id = 0xff; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_TETH_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[1].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[1].ch_id = 0xff; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[2].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[2].ch_id = 0xff; gsi_info->ch_id_info[2].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_MHI_PRIME_RMNET_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_MHIP]; gsi_info->ch_id_info[3].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[3].ch_id = 0xff; gsi_info->ch_id_info[3].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_PROD: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].ch_id = 0xff; gsi_info->ch_id_info[0].dir = DIR_PRODUCER; ipa3_uc_debug_stats_alloc(*gsi_info); break; case IPA_CLIENT_USB_CONS: gsi_info = &ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_USB]; gsi_info->ch_id_info[0].ch_id = ep->gsi_chan_hdl; gsi_info->ch_id_info[0].dir = DIR_CONSUMER; gsi_info->ch_id_info[1].ch_id = 0xff; gsi_info->ch_id_info[1].dir = DIR_CONSUMER; ipa3_uc_debug_stats_alloc(*gsi_info); break; default: Loading