浏览代码

qcacld-3.0: Cancel reap timer during driver unload

In case of driver unload, there can be a race condition
since the timer for processing monitor status ring can run
in parallel to the unload time wow ack response handler,
which is also flushing all the monitor status ring entries.
To avoid this race condition, stop the monitor reap timer
as a part of target suspend, and process all the outstanding
entries in the monitor status ring.
This will make sure that the monitor status ring is
processed from only one context at any given time.

Change-Id: Iaff01b2d61ba53eb7ab442b2c1886ba8076a4a8b
CRs-Fixed: 2678973
Ananya Gupta 5 年之前
父节点
当前提交
6dff8e348e
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      components/pmo/core/src/wlan_pmo_suspend_resume.c

+ 2 - 0
components/pmo/core/src/wlan_pmo_suspend_resume.c

@@ -853,11 +853,13 @@ QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
 	QDF_STATUS status;
 	QDF_STATUS status;
 	struct pmo_suspend_params param;
 	struct pmo_suspend_params param;
 	struct pmo_psoc_priv_obj *psoc_ctx;
 	struct pmo_psoc_priv_obj *psoc_ctx;
+	void *dp_soc = pmo_core_psoc_get_dp_handle(psoc);
 
 
 	pmo_enter();
 	pmo_enter();
 
 
 	psoc_ctx = pmo_psoc_get_priv(psoc);
 	psoc_ctx = pmo_psoc_get_priv(psoc);
 
 
+	cdp_process_target_suspend_req(dp_soc, OL_TXRX_PDEV_ID);
 	qdf_event_reset(&psoc_ctx->wow.target_suspend);
 	qdf_event_reset(&psoc_ctx->wow.target_suspend);
 	param.disable_target_intr = disable_target_intr;
 	param.disable_target_intr = disable_target_intr;
 	status = pmo_tgt_psoc_send_supend_req(psoc, &param);
 	status = pmo_tgt_psoc_send_supend_req(psoc, &param);