From 6e129eb1ea51042204c00cd75523ca651d8fc6bb Mon Sep 17 00:00:00 2001 From: Praveen Kurapati Date: Tue, 15 Sep 2020 16:31:54 +0530 Subject: [PATCH] msm: ipa4: Add change to stop netdev As SSR event is not received to APPS, some data is sent to modem. Add change to stop netdev first during SSR events and halt the modem channels. Change-Id: Id62d5f0cf811a30dc796401c15cf1ed6b8425992 Signed-off-by: Praveen Kurapati --- drivers/platform/msm/ipa/ipa_v3/ipa.c | 8 ++++++-- drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 918a037392d5..19b1a9ceabcb 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -3965,6 +3965,8 @@ void ipa3_update_ssr_state(bool is_ssr) */ void ipa3_q6_pre_shutdown_cleanup(void) { + bool prod = false; + IPADBG_LOW("ENTER\n"); IPA_ACTIVE_CLIENTS_INC_SIMPLE(); @@ -3973,6 +3975,10 @@ void ipa3_q6_pre_shutdown_cleanup(void) if (!ipa3_ctx->ipa_endp_delay_wa) ipa3_q6_pipe_delay(true); ipa3_q6_avoid_holb(); + if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) { + prod = true; + ipa3_halt_q6_gsi_channels(prod); + } if (ipa3_ctx->ipa_config_is_mhi) ipa3_set_reset_client_cons_pipe_sus_holb(true, IPA_CLIENT_MHI_CONS); @@ -4030,8 +4036,6 @@ void ipa3_q6_post_shutdown_cleanup(void) /* halt both prod and cons channels starting at IPAv4 */ if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) { - prod = true; - ipa3_halt_q6_gsi_channels(prod); IPA_ACTIVE_CLIENTS_DEC_SIMPLE(); IPADBG("Exit without consumer check\n"); return; diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 81d093b9a3e3..69d9656eb3a5 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -2857,12 +2857,13 @@ static int ipa3_lcl_mdm_ssr_notifier_cb(struct notifier_block *this, switch (code) { case SUBSYS_BEFORE_SHUTDOWN: IPAWANINFO("IPA received MPSS BEFORE_SHUTDOWN\n"); + /*Stop netdev first to stop queueing pkts to Q6 */ + if (IPA_NETDEV()) + netif_stop_queue(IPA_NETDEV()); /* send SSR before-shutdown notification to IPACM */ rmnet_ipa_send_ssr_notification(false); atomic_set(&rmnet_ipa3_ctx->is_ssr, 1); ipa3_q6_pre_shutdown_cleanup(); - if (IPA_NETDEV()) - netif_stop_queue(IPA_NETDEV()); ipa3_qmi_stop_workqueues(); ipa3_wan_ioctl_stop_qmi_messages(); ipa_stop_polling_stats();