summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKapil Gupta <kapgupta@codeaurora.org>2017-02-13 15:47:04 +0530
committerqcabuildsw <qcabuildsw@localhost>2017-02-23 10:40:35 -0800
commitc73a54de690b12d5e54fa7d95b3aa67a36781ffc (patch)
tree26df16ae553c6aac81369352814cf1411568a1ae
parent8ca96c0ae7abbae767ec0d5edd877652c697de2c (diff)
qcacld-3.0: Add monitor time for PER based roam
Curretly FW considers minimum time of hysteresis for PER based roam as constant value which is 25 seconds. Add changes to make this configurable using ini. Change-Id: I1a985594d515f42d1aaca8e4ef174fb29b51586a CRs-Fixed: 2005849
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h32
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c16
-rw-r--r--core/sme/src/csr/csr_api_roam.c17
3 files changed, 63 insertions, 2 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 9ef4a13d7a66..61aa45bfcd88 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -8938,6 +8938,37 @@ enum dot11p_mode {
/*
* <ini>
+ * gper_roam_mon_time - Minimum time required in seconds to
+ * be considered as valid scenario for PER based roam
+ * @Min: 5
+ * @Max: 25
+ * @Default: 25
+ *
+ * This ini is used to define minimum time in seconds for which DUT has
+ * collected the PER stats before it can consider the stats hysteresis to be
+ * valid for PER based scan.
+ * DUT collects following information during this period:
+ * 1. % of packets below gper_roam_low_rate_th
+ * 2. # packets above gper_roam_high_rate_th
+ * if DUT gets (1) greater than gper_roam_th_percent and (2) is zero during
+ * this period, it triggers PER based roam scan.
+ *
+ * Related: gper_roam_enabled, gper_roam_high_rate_th, gper_roam_low_rate_th,
+ * gper_roam_th_percent, gper_roam_rest_time
+ *
+ * Supported Feature: LFR-3.0
+ *
+ * Usage: Internal
+ *
+ * </ini>
+ */
+#define CFG_PER_ROAM_MONITOR_TIME "gper_roam_mon_time"
+#define CFG_PER_ROAM_MONITOR_TIME_MIN (5)
+#define CFG_PER_ROAM_MONITOR_TIME_MAX (25)
+#define CFG_PER_ROAM_MONTIOR_TIME_DEFAULT (25)
+
+/*
+ * <ini>
* gPowerUsage - Preferred Power Usage
* @Min: Min
* @Max: Max
@@ -10290,6 +10321,7 @@ struct hdd_config {
uint32_t per_roam_low_rate_threshold;
uint32_t per_roam_th_percent;
uint32_t per_roam_rest_time;
+ uint32_t per_roam_mon_time;
uint32_t max_sched_scan_plan_interval;
uint32_t max_sched_scan_plan_iterations;
uint8_t enable_phy_reg_retention;
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 223c06c8744a..232001926ae4 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -4238,6 +4238,14 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_PER_ROAM_REST_TIME_DEFAULT,
CFG_PER_ROAM_REST_TIME_MIN,
CFG_PER_ROAM_REST_TIME_MAX),
+
+ REG_VARIABLE(CFG_PER_ROAM_MONITOR_TIME, WLAN_PARAM_Integer,
+ struct hdd_config, per_roam_mon_time,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_PER_ROAM_MONTIOR_TIME_DEFAULT,
+ CFG_PER_ROAM_MONITOR_TIME_MIN,
+ CFG_PER_ROAM_MONITOR_TIME_MAX),
+
REG_VARIABLE(CFG_MAX_SCHED_SCAN_PLAN_INT_NAME, WLAN_PARAM_Integer,
struct hdd_config, max_sched_scan_plan_interval,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -5082,6 +5090,10 @@ static void hdd_per_roam_print_ini_config(hdd_context_t *hdd_ctx)
hdd_info("Name = [%s] Value = [%u]",
CFG_PER_ROAM_REST_TIME_NAME,
hdd_ctx->config->per_roam_rest_time);
+ hdd_info("Name = [%s] Value = [%u]",
+ CFG_PER_ROAM_MONITOR_TIME,
+ hdd_ctx->config->per_roam_mon_time);
+
}
/**
@@ -6942,6 +6954,10 @@ static void hdd_update_per_config_to_sme(hdd_context_t *hdd_ctx,
sme_config->csrConfig.per_roam_config.per_rest_time =
hdd_ctx->config->per_roam_rest_time;
+ sme_config->csrConfig.per_roam_config.tx_per_mon_time =
+ hdd_ctx->config->per_roam_mon_time;
+ sme_config->csrConfig.per_roam_config.rx_per_mon_time =
+ hdd_ctx->config->per_roam_mon_time;
}
/**
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index b36a49b7d6e9..01aad375ca0e 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -2551,6 +2551,10 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pParam->per_roam_config.rx_rate_thresh_percnt;
pMac->roam.configParam.per_roam_config.per_rest_time =
pParam->per_roam_config.per_rest_time;
+ pMac->roam.configParam.per_roam_config.tx_per_mon_time =
+ pParam->per_roam_config.tx_per_mon_time;
+ pMac->roam.configParam.per_roam_config.rx_per_mon_time =
+ pParam->per_roam_config.rx_per_mon_time;
/* update p2p offload status */
pMac->pnoOffload = pParam->pnoOffload;
@@ -2778,6 +2782,10 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
cfg_params->per_roam_config.rx_rate_thresh_percnt;
pParam->per_roam_config.per_rest_time =
cfg_params->per_roam_config.per_rest_time;
+ pParam->per_roam_config.tx_per_mon_time =
+ cfg_params->per_roam_config.tx_per_mon_time;
+ pParam->per_roam_config.rx_per_mon_time =
+ cfg_params->per_roam_config.rx_per_mon_time;
pParam->conc_custom_rule1 = cfg_params->conc_custom_rule1;
pParam->conc_custom_rule2 = cfg_params->conc_custom_rule2;
@@ -17808,18 +17816,23 @@ csr_create_per_roam_request(tpAniSirGlobal mac_ctx, uint8_t session_id)
mac_ctx->roam.configParam.per_roam_config.rx_low_rate_thresh;
req_buf->per_config.per_rest_time =
mac_ctx->roam.configParam.per_roam_config.per_rest_time;
+ req_buf->per_config.tx_per_mon_time =
+ mac_ctx->roam.configParam.per_roam_config.tx_per_mon_time;
+ req_buf->per_config.rx_per_mon_time =
+ mac_ctx->roam.configParam.per_roam_config.rx_per_mon_time;
req_buf->per_config.tx_rate_thresh_percnt =
mac_ctx->roam.configParam.per_roam_config.tx_rate_thresh_percnt;
req_buf->per_config.rx_rate_thresh_percnt =
mac_ctx->roam.configParam.per_roam_config.rx_rate_thresh_percnt;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
- FL("PER based roaming configuaration enable=%d vdev=%d high_rate_thresh=%d low_rate_thresh=%d rate_thresh_percnt=%d per_rest_time=%d"),
+ FL("PER based roaming configuaration enable=%d vdev=%d high_rate_thresh=%d low_rate_thresh=%d rate_thresh_percnt=%d per_rest_time=%d monitor_time=%d"),
req_buf->per_config.enable, session_id,
req_buf->per_config.tx_high_rate_thresh,
req_buf->per_config.tx_low_rate_thresh,
req_buf->per_config.tx_rate_thresh_percnt,
- req_buf->per_config.per_rest_time);
+ req_buf->per_config.per_rest_time,
+ req_buf->per_config.tx_per_mon_time);
return req_buf;
}