Przeglądaj źródła

qcacld-3.0: Fix IPA Rx suspend timeout due to IPA Tx pipe stall

The change id I50c357ca0f8ddfcc1a51ad4ed040961daf052459
is missed as part of UMAC IPA componentization changes.
Propagate the missed change to IPA component.

Change-Id: I33d83b5777ea259e29175e632a36e5fec3be24bc
CRs-Fixed: 2262351
Sravan Kumar Kairam 6 lat temu
rodzic
commit
a61e5a9050
1 zmienionych plików z 8 dodań i 3 usunięć
  1. 8 3
      components/ipa/core/src/wlan_ipa_core.c

+ 8 - 3
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);