Bladeren bron

qcacld-3.0: Call hif apis to block traffic during suspend

Before performing wow handshake, block unwanted traffic between the host
and firmware.

Change-Id: I977603b06639fe30816179defec337a2067fc210
CRs-Fixed: 2004308
Houston Hoffman 8 jaren geleden
bovenliggende
commit
e5cd52cc41
1 gewijzigde bestanden met toevoegingen van 17 en 2 verwijderingen
  1. 17 2
      core/hdd/src/wlan_hdd_driver_ops.c

+ 17 - 2
core/hdd/src/wlan_hdd_driver_ops.c

@@ -697,13 +697,19 @@ static int __wlan_hdd_bus_suspend(struct wow_enable_params wow_params)
 		return err;
 	}
 
+	err = hif_bus_early_suspend(hif_ctx);
+	if (err) {
+		hdd_err("Failed hif bus early suspend");
+		goto resume_cdp;
+	}
+
 	status = pmo_ucfg_psoc_bus_suspend_req(hdd_ctx->hdd_psoc,
 					       QDF_SYSTEM_SUSPEND,
 					       &pmo_params);
 	err = qdf_status_to_os_return(status);
 	if (err) {
 		hdd_err("Failed pmo bus suspend: %d", status);
-		goto resume_cdp;
+		goto late_hif_resume;
 	}
 
 	err = hif_bus_suspend(hif_ctx);
@@ -720,11 +726,14 @@ resume_pmo:
 					      QDF_SYSTEM_SUSPEND);
 	QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
 
+late_hif_resume:
+	status = hif_bus_late_resume(hif_ctx);
+	QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
+
 resume_cdp:
 	status = cdp_bus_resume(dp_soc, dp_pdev);
 	QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
 
-	/* return suspend related error code */
 	return err;
 }
 
@@ -885,6 +894,12 @@ static int __wlan_hdd_bus_resume(void)
 		goto out;
 	}
 
+	status = hif_bus_late_resume(hif_ctx);
+	if (status) {
+		hdd_err("Failed hif bus late resume");
+		goto out;
+	}
+
 	dp_soc = cds_get_context(QDF_MODULE_ID_SOC);
 	dp_pdev = cds_get_context(QDF_MODULE_ID_TXRX);
 	qdf_status = cdp_bus_resume(dp_soc, dp_pdev);