فهرست منبع

qcacld-3.0: avoid FSE cache flush messages during runtime suspend

When runtime power management is enabled, until the system is fully
resumed, we do not post any message to CE, instead they will be queued
in HTC. Once the device is fully resumed, all HTT messages in the queues
will be downloaded to CE at once. In some corner cases, it is found that
too many FSE caches flush messages getting queued during the runtime
resume; once the device is fully resumed, all these would be downloaded
to the FW/HW at once causing unintended crashes.

Do not post FSE cache flush messages when the device is resuming from
runtime suspend to avoid this problem.

Change-Id: Iaa7a25e6f84ef4ac9c3cdf6a5c052538b142ea3f
CRs-Fixed: 2839431
Manikanta Pubbisetty 4 سال پیش
والد
کامیت
ddc53c7479
1فایلهای تغییر یافته به همراه18 افزوده شده و 1 حذف شده
  1. 18 1
      core/dp/txrx3.0/dp_rx_fst.c

+ 18 - 1
core/dp/txrx3.0/dp_rx_fst.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -103,6 +103,14 @@ static void dp_fisa_fse_cache_flush_timer(void *arg)
 	struct fse_cache_flush_history *fse_cache_flush_rec;
 	QDF_STATUS status;
 
+	if (!fisa_hdl)
+		return;
+
+	if (fisa_hdl->pm_suspended) {
+		qdf_atomic_set(&fisa_hdl->fse_cache_flush_posted, 0);
+		return;
+	}
+
 	fse_cache_flush_rec = &fisa_hdl->cache_fl_rec[fse_cache_flush_rec_idx %
 							MAX_FSE_CACHE_FL_HST];
 	fse_cache_flush_rec->timestamp = qdf_get_log_timestamp();
@@ -408,6 +416,15 @@ void dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
 	qdf_event_set(&fst->cmem_resp_event);
 }
 
+void dp_rx_fst_update_pm_suspend_status(struct dp_soc *soc, bool suspended)
+{
+	struct dp_rx_fst *fst = soc->rx_fst;
+
+	if (!fst)
+		return;
+
+	fst->pm_suspended = suspended;
+}
 #else /* WLAN_SUPPORT_RX_FISA */
 
 #endif /* !WLAN_SUPPORT_RX_FISA */