qcacld-3.0: Use acs scan request timestamp in scan req

Currently the driver flushes all the scan results during
ACS request, and then scans the specific channels as
mentioned in the request, which leads to a scan again
for the STA interface as no scan results are available.

Fix is to have a timestamp, and get only the latest scan
results, instead of the scan database flush.

Change-Id: Icc343fcca77fb7074071ca1d467947ef70fd1930
CRs-Fixed: 2446490
Cette révision appartient à :
gaurank kathpalia
2019-05-07 10:06:32 +05:30
révisé par nshrivas
Parent 887e7aa8b6
révision d778617b39
5 fichiers modifiés avec 23 ajouts et 7 suppressions

Voir le fichier

@@ -185,6 +185,7 @@ QDF_STATUS wlansap_pre_start_bss_acs_scan_callback(mac_handle_t mac_handle,
QDF_STATUS scan_get_result_status = QDF_STATUS_E_FAILURE;
uint8_t oper_channel = 0;
QDF_STATUS status = QDF_STATUS_E_FAILURE;
tCsrScanResultFilter *filter;
host_log_acs_scan_done(acs_scan_done_status_str(scan_status),
sessionid, scanid);
@@ -204,6 +205,16 @@ QDF_STATUS wlansap_pre_start_bss_acs_scan_callback(mac_handle_t mac_handle,
}
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("CSR scan_status = eCSR_SCAN_SUCCESS (%d)"), scan_status);
filter = qdf_mem_malloc(sizeof(tCsrScanResultFilter));
if (!filter) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("Memory allocation for filter failed"));
} else {
filter->csrPersona = QDF_SAP_MODE;
filter->age_threshold = qdf_get_time_of_the_day_ms() -
sap_ctx->acs_req_timestamp;
}
/*
* Now do
* 1. Get scan results
@@ -212,7 +223,10 @@ QDF_STATUS wlansap_pre_start_bss_acs_scan_callback(mac_handle_t mac_handle,
*/
scan_get_result_status = sme_scan_get_result(mac_handle,
sap_ctx->sessionId,
NULL, &presult);
filter, &presult);
if (filter)
qdf_mem_free(filter);
if ((scan_get_result_status != QDF_STATUS_SUCCESS) &&
(scan_get_result_status != QDF_STATUS_E_NULL_VALUE)) {
/*

Voir le fichier

@@ -1036,11 +1036,8 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
/* Set requestType to Full scan */
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("calling ucfg_scan_start"));
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
if (sap_context->acs_cfg->skip_scan_status ==
eSAP_DO_NEW_ACS_SCAN)
#endif
sme_scan_flush_result(mac_handle);
sap_context->acs_req_timestamp = qdf_get_time_of_the_day_ms();
qdf_ret_status = ucfg_scan_start(req);
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
if (qdf_ret_status != QDF_STATUS_SUCCESS) {

Voir le fichier

@@ -176,6 +176,8 @@ struct sap_context {
bool enableOverLapCh;
struct sap_acs_cfg *acs_cfg;
qdf_time_t acs_req_timestamp;
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
uint8_t cc_switch_mode;
#endif