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) {