소스 검색

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 7 년 전
부모
커밋
6154a82ef2
1개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 8 3
      ipa/core/src/wlan_ipa_core.c

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