diff --git a/umac/scan/core/src/wlan_scan_manager.c b/umac/scan/core/src/wlan_scan_manager.c index eecbfc0ad2..ed2aa55738 100644 --- a/umac/scan/core/src/wlan_scan_manager.c +++ b/umac/scan/core/src/wlan_scan_manager.c @@ -434,6 +434,7 @@ scm_update_dbs_scan_ctrl_ext_flag(struct scan_start_request *req) { struct wlan_objmgr_psoc *psoc; uint32_t scan_dbs_policy = SCAN_DBS_POLICY_DEFAULT; + bool ndi_present; psoc = wlan_vdev_get_psoc(req->vdev); @@ -447,6 +448,15 @@ scm_update_dbs_scan_ctrl_ext_flag(struct scan_start_request *req) goto end; } + ndi_present = policy_mgr_mode_specific_connection_count(psoc, + PM_NDI_MODE, + NULL); + + if (ndi_present && !policy_mgr_is_hw_dbs_2x2_capable(psoc)) { + scm_debug("NDP present go for DBS scan"); + goto end; + } + if (req->scan_req.scan_policy_high_accuracy) { scm_debug("high accuracy scan received, going for non-dbs scan"); scan_dbs_policy = SCAN_DBS_POLICY_FORCE_NONDBS; @@ -550,6 +560,8 @@ int scm_scan_get_burst_duration(int max_ch_time, bool miracast_enabled) return burst_duration; } +#define SCM_ACTIVE_DWELL_TIME_NAN 40 + /** * scm_req_update_concurrency_params() - update scan req params depending on * concurrent mode present. @@ -759,6 +771,17 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev, req->scan_req.dwell_time_active; } } + + if (ndi_present) { + req->scan_req.dwell_time_active = + QDF_MIN(req->scan_req.dwell_time_active, + SCM_ACTIVE_DWELL_TIME_NAN); + req->scan_req.dwell_time_active_2g = + QDF_MIN(req->scan_req.dwell_time_active_2g, + SCM_ACTIVE_DWELL_TIME_NAN); + scm_debug("NDP active modify dwell time 2ghz %d", + req->scan_req.dwell_time_active_2g); + } } /**