Loading drivers/platform/msm/ipa/ipa_v2/ipa.c +1 −1 Original line number Diff line number Diff line Loading @@ -2972,7 +2972,7 @@ void ipa_suspend_handler(enum ipa_irq_type interrupt, resource = ipa2_get_rm_resource_from_ep(i); res = ipa_rm_request_resource_with_timer( resource); if (res == EPERM && if (res == -EPERM && IPA_CLIENT_IS_CONS( ipa_ctx->ep[i].client)) { holb_cfg.en = 1; Loading drivers/platform/msm/ipa/ipa_v3/ipa.c +17 −0 Original line number Diff line number Diff line Loading @@ -2907,8 +2907,13 @@ void ipa3_suspend_handler(enum ipa_irq_type interrupt, ((struct ipa_tx_suspend_irq_data *)interrupt_data)->endpoints; u32 bmsk = 1; u32 i = 0; int res; struct ipa_ep_cfg_holb holb_cfg; IPADBG("interrupt=%d, interrupt_data=%u\n", interrupt, suspend_data); memset(&holb_cfg, 0, sizeof(holb_cfg)); holb_cfg.tmr_val = 0; for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) { if ((suspend_data & bmsk) && (ipa3_ctx->ep[i].valid)) { if (IPA_CLIENT_IS_APPS_CONS(ipa3_ctx->ep[i].client)) { Loading @@ -2921,7 +2926,19 @@ void ipa3_suspend_handler(enum ipa_irq_type interrupt, ipa3_sps_process_irq_schedule_rel(); } else { resource = ipa3_get_rm_resource_from_ep(i); res = ipa3_rm_request_resource_with_timer(resource); if (res == -EPERM && IPA_CLIENT_IS_CONS( ipa3_ctx->ep[i].client)) { holb_cfg.en = 1; res = ipa3_cfg_ep_holb_by_client( ipa3_ctx->ep[i].client, &holb_cfg); if (res) { IPAERR("holb en fail, stall\n"); BUG(); } } } } bmsk = bmsk << 1; Loading drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +7 −5 Original line number Diff line number Diff line Loading @@ -1379,11 +1379,13 @@ int ipa3_teardown_sys_pipe(u32 clnt_hdl) if (IPA_CLIENT_IS_CONS(ep->client)) ipa3_cleanup_rx(ep->sys); if (!ep->skip_ep_cfg && IPA_CLIENT_IS_PROD(ep->client)) { if (ipa3_ctx->modem_cfg_emb_pipe_flt && ep->client == IPA_CLIENT_APPS_LAN_WAN_PROD) IPADBG("modem cfg emb pipe flt\n"); else ipa3_delete_dflt_flt_rules(clnt_hdl); } if (IPA_CLIENT_IS_WLAN_CONS(ep->client)) atomic_dec(&ipa3_ctx->wc_memb.active_clnt_cnt); Loading Loading
drivers/platform/msm/ipa/ipa_v2/ipa.c +1 −1 Original line number Diff line number Diff line Loading @@ -2972,7 +2972,7 @@ void ipa_suspend_handler(enum ipa_irq_type interrupt, resource = ipa2_get_rm_resource_from_ep(i); res = ipa_rm_request_resource_with_timer( resource); if (res == EPERM && if (res == -EPERM && IPA_CLIENT_IS_CONS( ipa_ctx->ep[i].client)) { holb_cfg.en = 1; Loading
drivers/platform/msm/ipa/ipa_v3/ipa.c +17 −0 Original line number Diff line number Diff line Loading @@ -2907,8 +2907,13 @@ void ipa3_suspend_handler(enum ipa_irq_type interrupt, ((struct ipa_tx_suspend_irq_data *)interrupt_data)->endpoints; u32 bmsk = 1; u32 i = 0; int res; struct ipa_ep_cfg_holb holb_cfg; IPADBG("interrupt=%d, interrupt_data=%u\n", interrupt, suspend_data); memset(&holb_cfg, 0, sizeof(holb_cfg)); holb_cfg.tmr_val = 0; for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++) { if ((suspend_data & bmsk) && (ipa3_ctx->ep[i].valid)) { if (IPA_CLIENT_IS_APPS_CONS(ipa3_ctx->ep[i].client)) { Loading @@ -2921,7 +2926,19 @@ void ipa3_suspend_handler(enum ipa_irq_type interrupt, ipa3_sps_process_irq_schedule_rel(); } else { resource = ipa3_get_rm_resource_from_ep(i); res = ipa3_rm_request_resource_with_timer(resource); if (res == -EPERM && IPA_CLIENT_IS_CONS( ipa3_ctx->ep[i].client)) { holb_cfg.en = 1; res = ipa3_cfg_ep_holb_by_client( ipa3_ctx->ep[i].client, &holb_cfg); if (res) { IPAERR("holb en fail, stall\n"); BUG(); } } } } bmsk = bmsk << 1; Loading
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +7 −5 Original line number Diff line number Diff line Loading @@ -1379,11 +1379,13 @@ int ipa3_teardown_sys_pipe(u32 clnt_hdl) if (IPA_CLIENT_IS_CONS(ep->client)) ipa3_cleanup_rx(ep->sys); if (!ep->skip_ep_cfg && IPA_CLIENT_IS_PROD(ep->client)) { if (ipa3_ctx->modem_cfg_emb_pipe_flt && ep->client == IPA_CLIENT_APPS_LAN_WAN_PROD) IPADBG("modem cfg emb pipe flt\n"); else ipa3_delete_dflt_flt_rules(clnt_hdl); } if (IPA_CLIENT_IS_WLAN_CONS(ep->client)) atomic_dec(&ipa3_ctx->wc_memb.active_clnt_cnt); Loading