Browse Source

qcacld-3.0: Remove cds_is_target_ready() to prevent race condition

Currently if target is not ready, vdev stop req use check
cds_is_target_ready() in wma_fill_vdev_req(), while peer related API
uses wmi_handle->wmi_stopinprogress.

As wmi_handle->wmi_stopinprogress is set after target ready flag, the
vdev stop req is dropped while peer delete is sent to firmware. This
leads to bss peer delete sent without vdev stop.

Remove cds_is_target_ready() in wma_fill_hold_req() and
wma_fill_vdev_req() so that only wmi_handle->wmi_stopinprogress is used
to detect firmware down.

Change-Id: I5a7fb886f8bbf9a10d25c6991a291bc4bd2bef48
CRs-Fixed: 2309680
Will Huang 6 years ago
parent
commit
26a0a83c53
1 changed files with 0 additions and 10 deletions
  1. 0 10
      core/wma/src/wma_dev_if.c

+ 0 - 10
core/wma/src/wma_dev_if.c

@@ -3297,11 +3297,6 @@ struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
 	struct wma_target_req *req;
 	QDF_STATUS status;
 
-	if (!cds_is_target_ready()) {
-		WMA_LOGE("target not ready, drop the request");
-		return NULL;
-	}
-
 	req = qdf_mem_malloc(sizeof(*req));
 	if (!req) {
 		WMA_LOGE(FL("Failed to allocate memory for msg %d vdev %d"),
@@ -3637,11 +3632,6 @@ struct wma_target_req *wma_fill_vdev_req(tp_wma_handle wma,
 	struct wma_target_req *req;
 	QDF_STATUS status;
 
-	if (!cds_is_target_ready()) {
-		WMA_LOGE("target not ready, drop the request");
-		return NULL;
-	}
-
 	req = qdf_mem_malloc(sizeof(*req));
 	if (!req) {
 		WMA_LOGE("%s: Failed to allocate memory for msg %d vdev %d",