Procházet zdrojové kódy

qcacld-3.0: Reset the soc before htc_stop when failure in cds_pre_enable

Reset the soc before htc_stop when failure in the cds_pre_enable to stop
the copy engine which might continue deliver the data to host after
cleaning up the destination ring buffers to avoid the poison overwritten.

Change-Id: I2ef111926af4a889f1ee005681d68eafba7e5564
CRs-Fixed: 2250860
Tiger Yu před 6 roky
rodič
revize
9973e36524
1 změnil soubory, kde provedl 11 přidání a 0 odebrání
  1. 11 0
      core/cds/src/cds_api.c

+ 11 - 0
core/cds/src/cds_api.c

@@ -740,6 +740,7 @@ QDF_STATUS cds_pre_enable(void)
 	int errno;
 	void *scn;
 	void *soc;
+	void *hif_ctx;
 
 	cds_enter();
 
@@ -814,7 +815,17 @@ QDF_STATUS cds_pre_enable(void)
 	return QDF_STATUS_SUCCESS;
 
 stop_wmi:
+	hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
+	if (!hif_ctx)
+		cds_err("%s: Failed to get hif_handle!", __func__);
+
 	wma_wmi_stop();
+
+	if (hif_ctx) {
+		cds_err("%s: Disable the isr & reset the soc!", __func__);
+		hif_disable_isr(hif_ctx);
+		hif_reset_soc(hif_ctx);
+	}
 	htc_stop(gp_cds_context->htc_ctx);
 
 exit_with_status: