diff --git a/umac/scan/core/src/wlan_scan_manager.c b/umac/scan/core/src/wlan_scan_manager.c index dc2fbdc22653..94913e44e692 100644 --- a/umac/scan/core/src/wlan_scan_manager.c +++ b/umac/scan/core/src/wlan_scan_manager.c @@ -396,6 +396,26 @@ scm_scan_start_req(struct scheduler_msg *msg) goto err; } + if (!scan_obj->enable_scan) { + scm_err("scan disabled, rejecting the scan req"); + status = QDF_STATUS_E_NULL_VALUE; + goto err; + } + + scan_vdev_priv_obj = wlan_get_vdev_scan_obj(req->vdev); + if (!scan_vdev_priv_obj) { + scm_debug("Couldn't find scan priv object"); + status = QDF_STATUS_E_NULL_VALUE; + goto err; + } + + if (scan_vdev_priv_obj->is_vdev_delete_in_progress) { + scm_err("Can't allow scan on vdev_id:%d", + wlan_vdev_get_id(req->vdev)); + status = QDF_STATUS_E_NULL_VALUE; + goto err; + } + cmd.cmd_type = WLAN_SER_CMD_SCAN; cmd.cmd_id = req->scan_req.scan_id; cmd.cmd_cb = (wlan_serialization_cmd_callback) @@ -414,19 +434,6 @@ scm_scan_start_req(struct scheduler_msg *msg) req, req->scan_req.scan_req_id, req->scan_req.scan_id, req->scan_req.vdev_id); - scan_vdev_priv_obj = wlan_get_vdev_scan_obj(req->vdev); - if (!scan_vdev_priv_obj) { - scm_debug("Couldn't find scan priv object"); - status = QDF_STATUS_E_NULL_VALUE; - goto err; - } - if (scan_vdev_priv_obj->is_vdev_delete_in_progress) { - scm_err("Can't allow scan on vdev_id:%d", - wlan_vdev_get_id(req->vdev)); - status = QDF_STATUS_E_NULL_VALUE; - goto err; - } - qdf_mtrace(QDF_MODULE_ID_SCAN, QDF_MODULE_ID_SERIALIZATION, WLAN_SER_CMD_SCAN, req->vdev->vdev_objmgr.vdev_id, req->scan_req.scan_id); diff --git a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c index 52e3f4eea5b1..9aa5230197fe 100644 --- a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c @@ -2058,6 +2058,7 @@ ucfg_scan_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg) QDF_STATUS status = QDF_STATUS_SUCCESS; int i; + ucfg_scan_set_enable(psoc, false); /* Check all pdev */ for (i = 0; i < WLAN_UMAC_MAX_PDEVS; i++) { pdev = wlan_objmgr_get_pdev_by_id(psoc, i, WLAN_SCAN_ID); @@ -2079,6 +2080,7 @@ ucfg_scan_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg) static QDF_STATUS ucfg_scan_resume_handler(struct wlan_objmgr_psoc *psoc, void *arg) { + ucfg_scan_set_enable(psoc, true); return QDF_STATUS_SUCCESS; }