From a2dfefe6f8416fddc5a2ecb6a3afe9e8d2adced8 Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Thu, 29 Jun 2017 19:01:24 -0700 Subject: [PATCH] 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 --- core/hdd/inc/wlan_hdd_cfg.h | 48 ++++++++++++++++++++++++++++++++++++ core/hdd/src/wlan_hdd_cfg.c | 14 +++++++++++ core/hdd/src/wlan_hdd_main.c | 2 ++ core/wma/src/wma_scan_roam.c | 5 +++- 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 2924b63ef233..99e126b4c686 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -910,6 +910,52 @@ enum hdd_dot11_mode { #define CFG_ACTIVE_MIN_CHANNEL_TIME_MAX (10000) #define CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT (20) +/* + * + * 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 + * + * + */ +#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) + +/* + * + * 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 + * + * + */ +#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 /* * @@ -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; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 288e734784af..5997204bb55a 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -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, diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 48a2ea35f0c7..c3d50f418b62 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -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); diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 52a86e508092..7a2715855592 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -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) {