qcacld-3.0: Add knobs to configure the scan paramters

Add user configuration parameters to configure the number of
probes in scan request and probe repeate time during scan.

Change-Id: I65a3734d8080d8adfe3e9ffa26905e6adc196197
CRs-Fixed: 2071697
This commit is contained in:
Kiran Kumar Lokere 2017-06-29 19:01:24 -07:00 • committed by snandini
commit a2dfefe6f8
4 changed files with 68 additions and 1 deletions

View file

@ -910,6 +910,52 @@ enum hdd_dot11_mode {
#define CFG_ACTIVE_MIN_CHANNEL_TIME_MAX (10000)
#define CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT (20)
/*
* <ini>
* gScanNumProbes - Set the number of probes on each channel for active scan
* @Min: 0
* @Max: 20
* @Default: 0
*
* This ini is used to set number of probes on each channel for
* active scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_SCAN_NUM_PROBES_NAME "gScanNumProbes"
#define CFG_SCAN_NUM_PROBES_MIN (0)
#define CFG_SCAN_NUM_PROBES_MAX (20)
#define CFG_SCAN_NUM_PROBES_DEFAULT (0)
/*
* <ini>
* gScanProbeRepeatTime - Set the probe repeat time on each channel for active scan
* @Min: 0
* @Max: 30
* @Default: 0
*
* This ini is used to set probe repeat time on each channel for
* active scan
*
* Related: None
*
* Supported Feature: Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_SCAN_PROBE_REPEAT_TIME_NAME "gScanProbeRepeatTime"
#define CFG_SCAN_PROBE_REPEAT_TIME_MIN (0)
#define CFG_SCAN_PROBE_REPEAT_TIME_MAX (30)
#define CFG_SCAN_PROBE_REPEAT_TIME_DEFAULT (0)
#ifdef FEATURE_WLAN_EXTSCAN
/*
* <ini>
@ -13324,6 +13370,8 @@ struct hdd_config {
uint32_t nPassiveMaxChnTime; /* in units of milliseconds */
uint32_t nActiveMinChnTime; /* in units of milliseconds */
uint32_t nActiveMaxChnTime; /* in units of milliseconds */
uint32_t scan_probe_repeat_time;
uint32_t scan_num_probes;
uint32_t nInitialDwellTime; /* in units of milliseconds */
bool initial_scan_no_dfs_chnl;

View file

@ -742,6 +742,20 @@ struct reg_table_entry g_registry_table[] = {
CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
CFG_ACTIVE_MIN_CHANNEL_TIME_MAX),
REG_VARIABLE(CFG_SCAN_NUM_PROBES_NAME, WLAN_PARAM_Integer,
struct hdd_config, scan_num_probes,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_SCAN_NUM_PROBES_DEFAULT,
CFG_SCAN_NUM_PROBES_MIN,
CFG_SCAN_NUM_PROBES_MAX),
REG_VARIABLE(CFG_SCAN_PROBE_REPEAT_TIME_NAME, WLAN_PARAM_Integer,
struct hdd_config, scan_probe_repeat_time,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_SCAN_PROBE_REPEAT_TIME_DEFAULT,
CFG_SCAN_PROBE_REPEAT_TIME_MIN,
CFG_SCAN_PROBE_REPEAT_TIME_MAX),
REG_VARIABLE(CFG_RETRY_LIMIT_ZERO_NAME, WLAN_PARAM_Integer,
struct hdd_config, retryLimitZero,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

View file

@ -12133,6 +12133,8 @@ static int hdd_update_scan_config(struct hdd_context *hdd_ctx)
scan_cfg.rssi_cat_gap = cfg->nRssiCatGap;
scan_cfg.scan_dwell_time_mode = cfg->scan_adaptive_dwell_mode;
scan_cfg.is_snr_monitoring_enabled = cfg->fEnableSNRMonitoring;
scan_cfg.usr_cfg_probe_rpt_time = cfg->scan_probe_repeat_time ;
scan_cfg.usr_cfg_num_probes = cfg->scan_num_probes ;
scan_cfg.is_bssid_hint_priority = cfg->is_bssid_hint_priority;
hdd_update_pno_config(&scan_cfg.pno_cfg, cfg);

View file

@ -252,6 +252,7 @@ QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
cmd->repeat_probe_time =
cmd->dwell_time_active / WMA_SCAN_NPROBES_DEFAULT;
WMA_LOGD("Repeat probe time %d", cmd->repeat_probe_time);
/* CSR sends min_rest_Time, max_rest_time and idle_time
* for staying on home channel to continue data traffic.
* Rome fw has facility to monitor the traffic
@ -450,7 +451,9 @@ QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
}
cmd->n_probes = (cmd->repeat_probe_time > 0) ?
cmd->dwell_time_active / cmd->repeat_probe_time : 0;
cmd->dwell_time_active / cmd->repeat_probe_time : 0;
WMA_LOGD("Num Probes in each ch scan %d", cmd->n_probes);
if (scan_req->channelList.numChannels) {
cmd->num_chan = scan_req->channelList.numChannels;
for (i = 0; i < scan_req->channelList.numChannels; ++i) {