wlan: adding cfg.ini parameter to configure to RA filter.
Add ini parameters gRAFilterEnable and gRARateLimitInterval to
enable/disable RA filter and to configure RA_RATELIMIT_INTERVAL
respectively.
Change-Id: I6b68f7c20ae4d61f8cbafe7f7aa3c21a6c5b0579
CRs-Fixed: 621074
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 48e58a9..7e13d9c 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2106,6 +2106,16 @@
#define CFG_ADVERTISE_CONCURRENT_OPERATION_MIN ( 0 )
#define CFG_ADVERTISE_CONCURRENT_OPERATION_MAX ( 1 )
+#define CFG_RA_FILTER_ENABLE_NAME "gRAFilterEnable"
+#define CFG_RA_FILTER_ENABLE_DEFAULT (1)
+#define CFG_RA_FILTER_ENABLE_MIN (0)
+#define CFG_RA_FILTER_ENABLE_MAX (1)
+
+#define CFG_RA_RATE_LIMIT_INTERVAL_NAME "gRARateLimitInterval"
+#define CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT (60)
+#define CFG_RA_RATE_LIMIT_INTERVAL_MIN (0)
+#define CFG_RA_RATE_LIMIT_INTERVAL_MAX (60)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -2538,6 +2548,8 @@
v_BOOL_t advertiseConcurrentOperation;
v_U32_t defaultRateIndex24Ghz;
eHddDot11Mode sapDot11Mode;
+ v_BOOL_t cfgRAFilterEnable;
+ v_U16_t cfgRARateLimitInterval;
} hdd_config_t;
/*---------------------------------------------------------------------------
Function declarations and documenation
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index f837565..479469e 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2930,6 +2930,19 @@
CFG_SAP_DOT11_MODE_MIN,
CFG_SAP_DOT11_MODE_MAX ),
+ REG_VARIABLE(CFG_RA_FILTER_ENABLE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, cfgRAFilterEnable,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_RA_FILTER_ENABLE_DEFAULT,
+ CFG_RA_FILTER_ENABLE_MIN,
+ CFG_RA_FILTER_ENABLE_MAX ),
+
+ REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, cfgRARateLimitInterval,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT,
+ CFG_RA_RATE_LIMIT_INTERVAL_MIN,
+ CFG_RA_RATE_LIMIT_INTERVAL_MAX ),
};
/*
@@ -4623,6 +4636,21 @@
hddLog(LOGE, "Could not pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to"
" CCM\n");
}
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RA_FILTER_ENABLE, pConfig->cfgRAFilterEnable,
+ NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_RA_FILTER_ENABLE to CCM");
+ }
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RA_RATE_LIMIT_INTERVAL, pConfig->cfgRARateLimitInterval,
+ NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_RA_FILTER_ENABLE to CCM");
+ }
+
return fStatus;
}
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index 7f7b5c5..8e842de 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -372,6 +372,8 @@
#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED 325
#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES 326
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL 327
+#define WNI_CFG_RA_FILTER_ENABLE 328
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL 329
/*
* String parameter lengths
@@ -2747,10 +2749,26 @@
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_APMAX 2000
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_APDEF 200
-#define CFG_PARAM_MAX_NUM 328
-#define CFG_AP_IBUF_MAX_SIZE 267
+#define WNI_CFG_RA_FILTER_ENABLE_STAMIN 0
+#define WNI_CFG_RA_FILTER_ENABLE_STAMAX 1
+#define WNI_CFG_RA_FILTER_ENABLE_STADEF 1
+
+#define WNI_CFG_RA_FILTER_ENABLE_APMIN 0
+#define WNI_CFG_RA_FILTER_ENABLE_APMAX 1
+#define WNI_CFG_RA_FILTER_ENABLE_APDEF 1
+
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STAMIN 0
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STAMAX 60
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STADEF 60
+
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_APMIN 0
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_APMAX 60
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_APDEF 60
+
+#define CFG_PARAM_MAX_NUM 330
+#define CFG_AP_IBUF_MAX_SIZE 269
#define CFG_AP_SBUF_MAX_SIZE 3422
-#define CFG_STA_IBUF_MAX_SIZE 262
+#define CFG_STA_IBUF_MAX_SIZE 264
#define CFG_STA_SBUF_MAX_SIZE 3388
#define CFG_SEM_MAX_NUM 19
diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h
index d44b9f5..b30bdcf 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -366,6 +366,8 @@
#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED 325
#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES 326
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL 327
+#define WNI_CFG_RA_FILTER_ENABLE 328
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL 329
/*
* String parameter lengths
@@ -1760,8 +1762,16 @@
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STAMAX 2000
#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STADEF 200
-#define CFG_PARAM_MAX_NUM 328
-#define CFG_STA_IBUF_MAX_SIZE 262
+#define WNI_CFG_RA_FILTER_ENABLE_STAMIN 0
+#define WNI_CFG_RA_FILTER_ENABLE_STAMAX 1
+#define WNI_CFG_RA_FILTER_ENABLE_STADEF 1
+
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STAMIN 0
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STAMAX 60
+#define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STADEF 60
+
+#define CFG_PARAM_MAX_NUM 330
+#define CFG_STA_IBUF_MAX_SIZE 264
#define CFG_STA_SBUF_MAX_SIZE 3388
#define CFG_SEM_MAX_NUM 19
diff --git a/CORE/MAC/src/cfg/cfgParamName.c b/CORE/MAC/src/cfg/cfgParamName.c
index d95ad30..9188021 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -331,6 +331,39 @@
(unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
(unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
(unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
+ (unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
+ (unsigned char *)"TDLS_QOS_WMM_UAPSD_MASK",
+ (unsigned char *)"TDLS_BUF_STA_ENABLED",
+ (unsigned char *)"TDLS_PUAPSD_INACT_TIME",
+ (unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
+ (unsigned char *)"ENABLE_ADAPT_RX_DRAIN",
+ (unsigned char *)"FLEX_CONNECT_POWER_FACTOR",
+ (unsigned char *)"ANTENNA_DIVESITY",
+ (unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
+ (unsigned char *)"ATH_DISABLE",
+ (unsigned char *)"BTC_ACTIVE_WLAN_LEN",
+ (unsigned char *)"BTC_ACTIVE_BT_LEN",
+ (unsigned char *)"BTC_SAP_ACTIVE_WLAN_LEN",
+ (unsigned char *)"BTC_SAP_ACTIVE_BT_LEN",
+ (unsigned char *)"RMC_ACTION_PERIOD_FREQUENCY",
+ (unsigned char *)"ASD_PROBE_INTERVAL",
+ (unsigned char *)"ASD_TRIGGER_THRESHOLD",
+ (unsigned char *)"ASD_RTT_RSSI_HYST_THRESHOLD",
+ (unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL",
+ (unsigned char *)"BTC_CTS2S_DURING_SCO",
+ (unsigned char *)"CHANNEL_BONDING_24G",
+ (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_DWELL_TIME",
+ (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_DWELL_TIME",
+ (unsigned char *)"OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL",
+ (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL",
+ (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
+ (unsigned char *)"OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR",
+ (unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
+ (unsigned char *)"TDLS_OFF_CHANNEL_ENABLED",
+ (unsigned char *)"PMF_SA_QUERY_MAX_RETRIES",
+ (unsigned char *)"PMF_SA_QUERY_RETRY_INTERVAL",
+ (unsigned char *)"RA_FILTER_ENABLE",
+ (unsigned char *)"RA_RATE_LIMIT_INTERVAL",
};
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index d3cbf50..db5eee3 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4859,4 +4859,24 @@
NONE
0 2000 200
+* RA filter enable/disable
+*
+WNI_CFG_RA_FILTER_ENABLE I 4 7
+V RW NP
+HAL
+0 1 1
+V RW NP
+HAL
+0 1 1
+*
+*
+* RA filter rate interval
+*
+WNI_CFG_RA_RATE_LIMIT_INTERVAL I 4 7
+V RW NP
+HAL
+0 60 60
+V RW NP
+HAL
+0 60 60
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 78b592a..07dcfae 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1792,6 +1792,38 @@
tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ sizeof(tHalCfg) + tlvStruct->length) ;
+ /* QWLAN_HAL_CFG_RA_FILTER_ENABLE */
+ tlvStruct->type = QWLAN_HAL_CFG_RA_FILTER_ENABLE ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+ if (wlan_cfgGetInt(pMac, WNI_CFG_RA_FILTER_ENABLE,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_RA_FILTER_ENABLE");
+ goto handle_failure;
+ }
+
+ tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ + sizeof(tHalCfg) + tlvStruct->length) ;
+
+ /* QWLAN_HAL_CFG_RA_RATE_LIMIT_INTERVAL */
+ tlvStruct->type = QWLAN_HAL_CFG_RA_RATE_LIMIT_INTERVAL ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+ if (wlan_cfgGetInt(pMac, WNI_CFG_RA_RATE_LIMIT_INTERVAL,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_RA_RATE_LIMIT_INTERVAL");
+ goto handle_failure;
+ }
+
+ tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ + sizeof(tHalCfg) + tlvStruct->length) ;
+
wdiStartParams->usConfigBufferLen = (tANI_U8 *)tlvStruct - tlvStructStart ;
#ifdef WLAN_DEBUG
{
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
index cd239f1..6ae885a 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ