Loading drivers/platform/msm/ipa/ipa_api.c +34 −1 Original line number Original line Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3536,6 +3536,39 @@ int ipa_disable_wdi_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) return ret; return ret; } } /** * ipa_add_socksv5_conn()- Add socksv5 entry in IPA * * Return value: 0 on success, negative otherwise */ int ipa_add_socksv5_conn(struct ipa_socksv5_info *info) { int ret; IPA_API_DISPATCH_RETURN(ipa_add_socksv5_conn, info); return ret; } EXPORT_SYMBOL(ipa_add_socksv5_conn); /** * ipa_del_socksv5_conn()- Del socksv5 entry in IPA * * Return value: 0 on success, negative otherwise */ int ipa_del_socksv5_conn(uint32_t handle) { int ret; IPA_API_DISPATCH_RETURN(ipa_del_socksv5_conn, handle); return ret; } EXPORT_SYMBOL(ipa_del_socksv5_conn); /** /** * ipa_get_lan_rx_napi() - returns if NAPI is enabled in LAN RX * ipa_get_lan_rx_napi() - returns if NAPI is enabled in LAN RX */ */ Loading drivers/platform/msm/ipa/ipa_api.h +6 −1 Original line number Original line Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -487,6 +487,11 @@ struct ipa_api_controller { struct ipa_uc_dbg_ring_stats *stats); struct ipa_uc_dbg_ring_stats *stats); int (*ipa_get_prot_id)(enum ipa_client_type client); int (*ipa_get_prot_id)(enum ipa_client_type client); int (*ipa_add_socksv5_conn)(struct ipa_socksv5_info *info); int (*ipa_del_socksv5_conn)(uint32_t handle); }; }; #ifdef CONFIG_IPA3 #ifdef CONFIG_IPA3 Loading drivers/platform/msm/ipa/ipa_v3/ipa.c +8 −1 Original line number Original line Diff line number Diff line Loading @@ -6238,6 +6238,10 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p, mutex_unlock(&ipa3_ctx->lock); mutex_unlock(&ipa3_ctx->lock); ipa3_trigger_ipa_ready_cbs(); ipa3_trigger_ipa_ready_cbs(); /* init uc-activation tbl*/ ipa3_setup_uc_act_tbl(); complete_all(&ipa3_ctx->init_completion_obj); complete_all(&ipa3_ctx->init_completion_obj); pr_info("IPA driver initialization was successful.\n"); pr_info("IPA driver initialization was successful.\n"); Loading Loading @@ -6745,7 +6749,9 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, ipa3_ctx->secure_debug_check_action = ipa3_ctx->secure_debug_check_action = resource_p->secure_debug_check_action; resource_p->secure_debug_check_action; ipa3_ctx->ipa_mhi_proxy = resource_p->ipa_mhi_proxy; ipa3_ctx->ipa_mhi_proxy = resource_p->ipa_mhi_proxy; ipa3_ctx->ipa_config_is_auto = resource_p->ipa_config_is_auto; ipa3_ctx->uc_act_tbl_valid = false; ipa3_ctx->uc_act_tbl_total = 0; ipa3_ctx->uc_act_tbl_next_index = 0; if (ipa3_ctx->secure_debug_check_action == USE_SCM) { if (ipa3_ctx->secure_debug_check_action == USE_SCM) { if (ipa_is_mem_dump_allowed()) if (ipa_is_mem_dump_allowed()) Loading Loading @@ -7066,6 +7072,7 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, mutex_init(&ipa3_ctx->lock); mutex_init(&ipa3_ctx->lock); mutex_init(&ipa3_ctx->q6_proxy_clk_vote_mutex); mutex_init(&ipa3_ctx->q6_proxy_clk_vote_mutex); mutex_init(&ipa3_ctx->ipa_cne_evt_lock); mutex_init(&ipa3_ctx->ipa_cne_evt_lock); mutex_init(&ipa3_ctx->act_tbl_lock); idr_init(&ipa3_ctx->ipa_idr); idr_init(&ipa3_ctx->ipa_idr); spin_lock_init(&ipa3_ctx->idr_lock); spin_lock_init(&ipa3_ctx->idr_lock); Loading drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,10 @@ const char *ipa3_event_name[] = { __stringify(IPA_GSB_DISCONNECT), __stringify(IPA_GSB_DISCONNECT), __stringify(IPA_COALESCE_ENABLE), __stringify(IPA_COALESCE_ENABLE), __stringify(IPA_COALESCE_DISABLE), __stringify(IPA_COALESCE_DISABLE), __stringify(WIGIG_CLIENT_CONNECT), __stringify(WIGIG_FST_SWITCH), __stringify(IPA_SOCKV5_ADD), __stringify(IPA_SOCKV5_DEL), }; }; const char *ipa3_hdr_l2_type_name[] = { const char *ipa3_hdr_l2_type_name[] = { Loading drivers/platform/msm/ipa/ipa_v3/ipa_i.h +13 −0 Original line number Original line Diff line number Diff line Loading @@ -285,6 +285,8 @@ enum { #define IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE 4096 #define IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE 4096 #define IPA_UC_ACT_TBL_SIZE 1000 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_EP 0 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_EP 0 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_SIMPLE 1 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_SIMPLE 1 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_RESOURCE 2 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_RESOURCE 2 Loading Loading @@ -2008,6 +2010,11 @@ struct ipa3_context { bool ipa_wan_skb_page; bool ipa_wan_skb_page; struct ipahal_imm_cmd_pyld *coal_cmd_pyld; struct ipahal_imm_cmd_pyld *coal_cmd_pyld; struct ipa3_app_clock_vote app_clock_vote; struct ipa3_app_clock_vote app_clock_vote; struct ipa_mem_buffer uc_act_tbl; bool uc_act_tbl_valid; struct mutex act_tbl_lock; int uc_act_tbl_total; int uc_act_tbl_next_index; }; }; struct ipa3_plat_drv_res { struct ipa3_plat_drv_res { Loading Loading @@ -2393,6 +2400,12 @@ int ipa3_cfg_ep_holb_by_client(enum ipa_client_type client, int ipa3_cfg_ep_ctrl(u32 clnt_hdl, const struct ipa_ep_cfg_ctrl *ep_ctrl); int ipa3_cfg_ep_ctrl(u32 clnt_hdl, const struct ipa_ep_cfg_ctrl *ep_ctrl); int ipa3_setup_uc_act_tbl(void); int ipa3_add_socksv5_conn(struct ipa_socksv5_info *info); int ipa3_del_socksv5_conn(uint32_t handle); /* /* * Header removal / addition * Header removal / addition */ */ Loading Loading
drivers/platform/msm/ipa/ipa_api.c +34 −1 Original line number Original line Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3536,6 +3536,39 @@ int ipa_disable_wdi_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) return ret; return ret; } } /** * ipa_add_socksv5_conn()- Add socksv5 entry in IPA * * Return value: 0 on success, negative otherwise */ int ipa_add_socksv5_conn(struct ipa_socksv5_info *info) { int ret; IPA_API_DISPATCH_RETURN(ipa_add_socksv5_conn, info); return ret; } EXPORT_SYMBOL(ipa_add_socksv5_conn); /** * ipa_del_socksv5_conn()- Del socksv5 entry in IPA * * Return value: 0 on success, negative otherwise */ int ipa_del_socksv5_conn(uint32_t handle) { int ret; IPA_API_DISPATCH_RETURN(ipa_del_socksv5_conn, handle); return ret; } EXPORT_SYMBOL(ipa_del_socksv5_conn); /** /** * ipa_get_lan_rx_napi() - returns if NAPI is enabled in LAN RX * ipa_get_lan_rx_napi() - returns if NAPI is enabled in LAN RX */ */ Loading
drivers/platform/msm/ipa/ipa_api.h +6 −1 Original line number Original line Diff line number Diff line /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -487,6 +487,11 @@ struct ipa_api_controller { struct ipa_uc_dbg_ring_stats *stats); struct ipa_uc_dbg_ring_stats *stats); int (*ipa_get_prot_id)(enum ipa_client_type client); int (*ipa_get_prot_id)(enum ipa_client_type client); int (*ipa_add_socksv5_conn)(struct ipa_socksv5_info *info); int (*ipa_del_socksv5_conn)(uint32_t handle); }; }; #ifdef CONFIG_IPA3 #ifdef CONFIG_IPA3 Loading
drivers/platform/msm/ipa/ipa_v3/ipa.c +8 −1 Original line number Original line Diff line number Diff line Loading @@ -6238,6 +6238,10 @@ static int ipa3_post_init(const struct ipa3_plat_drv_res *resource_p, mutex_unlock(&ipa3_ctx->lock); mutex_unlock(&ipa3_ctx->lock); ipa3_trigger_ipa_ready_cbs(); ipa3_trigger_ipa_ready_cbs(); /* init uc-activation tbl*/ ipa3_setup_uc_act_tbl(); complete_all(&ipa3_ctx->init_completion_obj); complete_all(&ipa3_ctx->init_completion_obj); pr_info("IPA driver initialization was successful.\n"); pr_info("IPA driver initialization was successful.\n"); Loading Loading @@ -6745,7 +6749,9 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, ipa3_ctx->secure_debug_check_action = ipa3_ctx->secure_debug_check_action = resource_p->secure_debug_check_action; resource_p->secure_debug_check_action; ipa3_ctx->ipa_mhi_proxy = resource_p->ipa_mhi_proxy; ipa3_ctx->ipa_mhi_proxy = resource_p->ipa_mhi_proxy; ipa3_ctx->ipa_config_is_auto = resource_p->ipa_config_is_auto; ipa3_ctx->uc_act_tbl_valid = false; ipa3_ctx->uc_act_tbl_total = 0; ipa3_ctx->uc_act_tbl_next_index = 0; if (ipa3_ctx->secure_debug_check_action == USE_SCM) { if (ipa3_ctx->secure_debug_check_action == USE_SCM) { if (ipa_is_mem_dump_allowed()) if (ipa_is_mem_dump_allowed()) Loading Loading @@ -7066,6 +7072,7 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, mutex_init(&ipa3_ctx->lock); mutex_init(&ipa3_ctx->lock); mutex_init(&ipa3_ctx->q6_proxy_clk_vote_mutex); mutex_init(&ipa3_ctx->q6_proxy_clk_vote_mutex); mutex_init(&ipa3_ctx->ipa_cne_evt_lock); mutex_init(&ipa3_ctx->ipa_cne_evt_lock); mutex_init(&ipa3_ctx->act_tbl_lock); idr_init(&ipa3_ctx->ipa_idr); idr_init(&ipa3_ctx->ipa_idr); spin_lock_init(&ipa3_ctx->idr_lock); spin_lock_init(&ipa3_ctx->idr_lock); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -82,6 +82,10 @@ const char *ipa3_event_name[] = { __stringify(IPA_GSB_DISCONNECT), __stringify(IPA_GSB_DISCONNECT), __stringify(IPA_COALESCE_ENABLE), __stringify(IPA_COALESCE_ENABLE), __stringify(IPA_COALESCE_DISABLE), __stringify(IPA_COALESCE_DISABLE), __stringify(WIGIG_CLIENT_CONNECT), __stringify(WIGIG_FST_SWITCH), __stringify(IPA_SOCKV5_ADD), __stringify(IPA_SOCKV5_DEL), }; }; const char *ipa3_hdr_l2_type_name[] = { const char *ipa3_hdr_l2_type_name[] = { Loading
drivers/platform/msm/ipa/ipa_v3/ipa_i.h +13 −0 Original line number Original line Diff line number Diff line Loading @@ -285,6 +285,8 @@ enum { #define IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE 4096 #define IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE 4096 #define IPA_UC_ACT_TBL_SIZE 1000 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_EP 0 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_EP 0 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_SIMPLE 1 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_SIMPLE 1 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_RESOURCE 2 #define IPA3_ACTIVE_CLIENT_LOG_TYPE_RESOURCE 2 Loading Loading @@ -2008,6 +2010,11 @@ struct ipa3_context { bool ipa_wan_skb_page; bool ipa_wan_skb_page; struct ipahal_imm_cmd_pyld *coal_cmd_pyld; struct ipahal_imm_cmd_pyld *coal_cmd_pyld; struct ipa3_app_clock_vote app_clock_vote; struct ipa3_app_clock_vote app_clock_vote; struct ipa_mem_buffer uc_act_tbl; bool uc_act_tbl_valid; struct mutex act_tbl_lock; int uc_act_tbl_total; int uc_act_tbl_next_index; }; }; struct ipa3_plat_drv_res { struct ipa3_plat_drv_res { Loading Loading @@ -2393,6 +2400,12 @@ int ipa3_cfg_ep_holb_by_client(enum ipa_client_type client, int ipa3_cfg_ep_ctrl(u32 clnt_hdl, const struct ipa_ep_cfg_ctrl *ep_ctrl); int ipa3_cfg_ep_ctrl(u32 clnt_hdl, const struct ipa_ep_cfg_ctrl *ep_ctrl); int ipa3_setup_uc_act_tbl(void); int ipa3_add_socksv5_conn(struct ipa_socksv5_info *info); int ipa3_del_socksv5_conn(uint32_t handle); /* /* * Header removal / addition * Header removal / addition */ */ Loading