qcacmn: Set DBS scan if ndp peers are active

Currently on the STA interface if the scan
comes the driver puts it to NON-DBS scan if the
high accuracy request comes, but if the NDP
peers are active this causes a throughput loss
as scan takes much time to complete.

Fix is to do a DBS scan if the NDP peers are
attached to a NDI interface.

Change-Id: I798fd388f2bf010304ba1f6777680cf4d1f3ccfb
CRs-Fixed: 2615541
This commit is contained in:
gaurank kathpalia
2020-02-07 15:44:13 +05:30
committed by nshrivas
parent b666fe52b7
commit 85d4f03587

View File

@@ -434,6 +434,7 @@ scm_update_dbs_scan_ctrl_ext_flag(struct scan_start_request *req)
{ {
struct wlan_objmgr_psoc *psoc; struct wlan_objmgr_psoc *psoc;
uint32_t scan_dbs_policy = SCAN_DBS_POLICY_DEFAULT; uint32_t scan_dbs_policy = SCAN_DBS_POLICY_DEFAULT;
bool ndi_present;
psoc = wlan_vdev_get_psoc(req->vdev); 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; 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) { if (req->scan_req.scan_policy_high_accuracy) {
scm_debug("high accuracy scan received, going for non-dbs scan"); scm_debug("high accuracy scan received, going for non-dbs scan");
scan_dbs_policy = SCAN_DBS_POLICY_FORCE_NONDBS; 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; return burst_duration;
} }
#define SCM_ACTIVE_DWELL_TIME_NAN 40
/** /**
* scm_req_update_concurrency_params() - update scan req params depending on * scm_req_update_concurrency_params() - update scan req params depending on
* concurrent mode present. * 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; 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);
}
} }
/** /**