diff --git a/components/ipa/core/src/wlan_ipa_core.c b/components/ipa/core/src/wlan_ipa_core.c index 56af3ba0d2b8..e4f98892a366 100644 --- a/components/ipa/core/src/wlan_ipa_core.c +++ b/components/ipa/core/src/wlan_ipa_core.c @@ -1277,8 +1277,6 @@ static void wlan_ipa_uc_handle_last_discon(struct wlan_ipa_priv *ipa_ctx) qdf_event_reset(&ipa_ctx->ipa_resource_comp); ipa_info("Disable FW RX PIPE"); cdp_ipa_set_active(ipa_ctx->dp_soc, ipa_ctx->dp_pdev, false, false); - ipa_info("Disable FW TX PIPE"); - cdp_ipa_set_active(ipa_ctx->dp_soc, ipa_ctx->dp_pdev, false, true); ipa_debug("exit: IPA WDI Pipes deactivated"); } @@ -2549,6 +2547,14 @@ static void wlan_ipa_uc_op_cb(struct op_msg_type *op_msg, } else if ((msg->op_code == WLAN_IPA_UC_OPCODE_TX_SUSPEND) || (msg->op_code == WLAN_IPA_UC_OPCODE_RX_SUSPEND)) { qdf_mutex_acquire(&ipa_ctx->ipa_lock); + + if (msg->op_code == WLAN_IPA_UC_OPCODE_RX_SUSPEND) { + wlan_ipa_uc_disable_pipes(ipa_ctx); + ipa_info("Disable FW TX PIPE"); + cdp_ipa_set_active(ipa_ctx->dp_soc, ipa_ctx->dp_pdev, + false, true); + } + ipa_ctx->activated_fw_pipe--; if (!ipa_ctx->activated_fw_pipe) { /* @@ -2557,7 +2563,6 @@ static void wlan_ipa_uc_op_cb(struct op_msg_type *op_msg, */ ipa_ctx->resource_unloading = false; qdf_event_set(&ipa_ctx->ipa_resource_comp); - wlan_ipa_uc_disable_pipes(ipa_ctx); if (wlan_ipa_is_rm_enabled(ipa_ctx->config)) wlan_ipa_wdi_rm_release_resource(ipa_ctx, QDF_IPA_RM_RESOURCE_WLAN_PROD);