Browse Source

qcacmn: call fw diag drain before complete ce tasks

FW diag drain may wake up delay reg write WQ, and this
happens after ce tasks completion check. Change is to
make FW diag drain operation before complete check.

Change-Id: I209c88cc5c2d5cb3b3195d1ae08b4c0c29903fa5
CRs-Fixed: 3591738
Yu Tian 1 year ago
parent
commit
5040e12d35
1 changed files with 5 additions and 8 deletions
  1. 5 8
      hif/src/pcie/if_pci.c

+ 5 - 8
hif/src/pcie/if_pci.c

@@ -2375,19 +2375,16 @@ int hif_pci_bus_suspend(struct hif_softc *scn)
 
 
 	hif_apps_irqs_disable(GET_HIF_OPAQUE_HDL(scn));
 	hif_apps_irqs_disable(GET_HIF_OPAQUE_HDL(scn));
 
 
-	ret = hif_try_complete_tasks(scn);
-	if (QDF_IS_STATUS_ERROR(ret)) {
-		hif_apps_irqs_enable(GET_HIF_OPAQUE_HDL(scn));
-		return -EBUSY;
-	}
-
 	/*
 	/*
 	 * In an unlikely case, if draining becomes infinite loop,
 	 * In an unlikely case, if draining becomes infinite loop,
 	 * it returns an error, shall abort the bus suspend.
 	 * it returns an error, shall abort the bus suspend.
 	 */
 	 */
 	ret = hif_drain_fw_diag_ce(scn);
 	ret = hif_drain_fw_diag_ce(scn);
-	if (ret) {
-		hif_err("draining fw_diag_ce goes infinite, so abort suspend");
+	if (ret)
+		hif_err("draining fw_diag_ce not got cleaned");
+
+	ret = hif_try_complete_tasks(scn);
+	if (QDF_IS_STATUS_ERROR(ret)) {
 		hif_apps_irqs_enable(GET_HIF_OPAQUE_HDL(scn));
 		hif_apps_irqs_enable(GET_HIF_OPAQUE_HDL(scn));
 		return -EBUSY;
 		return -EBUSY;
 	}
 	}