wlan: Add config param AP LINK MONITOR TIMEOUT
Add AP LINK MONITOR TIMEOUT to change the frequency of KEEP ALIVE
packets sent during the KEEP ALIVE TIMEOUT duration for SAP and GO.
It is used to change the frequency of keep alive packets in the AP
Link Monitor period which is by default 20s. The keep alive packets
are sent as an interval of 3s which can be changed by setting
gApLinkMonitorPeriod in ini file.
CRs-fixed: 425674
Change-Id: I8e632c2e255ac97bb1f06ea7f409d7e5036e7742
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 5defe22..40b5c07 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -503,6 +503,10 @@
#define CFG_GO_KEEP_ALIVE_PERIOD_MAX ( 255)
#define CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT ( 20 )
+#define CFG_AP_LINK_MONITOR_PERIOD_NAME "gApLinkMonitorPeriod"
+#define CFG_AP_LINK_MONITOR_PERIOD_MIN ( 0 )
+#define CFG_AP_LINK_MONITOR_PERIOD_MAX ( 255)
+#define CFG_AP_LINK_MONITOR_PERIOD_DEFAULT ( 3 )
#define CFG_BEACON_INTERVAL_NAME "gBeaconInterval"
#define CFG_BEACON_INTERVAL_MIN WNI_CFG_BEACON_INTERVAL_STAMIN
@@ -1751,6 +1755,7 @@
v_U8_t enableLTECoex;
v_U32_t apKeepAlivePeriod;
v_U32_t goKeepAlivePeriod;
+ v_U32_t apLinkMonitorPeriod;
v_U32_t nBeaconInterval;
v_U8_t nTxPowerCap; //In dBm
v_BOOL_t fIsLowGainOverride;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index a3d74fd..0ff1f61 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -644,6 +644,13 @@
CFG_GO_KEEP_ALIVE_PERIOD_MIN,
CFG_GO_KEEP_ALIVE_PERIOD_MAX),
+ REG_VARIABLE( CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, apLinkMonitorPeriod,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_AP_LINK_MONITOR_PERIOD_DEFAULT,
+ CFG_AP_LINK_MONITOR_PERIOD_MIN,
+ CFG_AP_LINK_MONITOR_PERIOD_MAX),
+
REG_VARIABLE(CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer,
hdd_config_t, disablePacketFilter,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -3241,6 +3248,13 @@
hddLog(LOGE, "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CCM\n");
}
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT, pConfig->apLinkMonitorPeriod,
+ NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CCM\n");
+ }
+
#if defined WLAN_FEATURE_VOWIFI
if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RRM_ENABLED, pConfig->fRrmEnable,
NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index b71c2b7..96187e2 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -358,6 +358,7 @@
#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 293
#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 294
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 295
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 296
/*
* String parameter lengths
@@ -2468,10 +2469,18 @@
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP_APMAX 1
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP_APDEF 0
-#define CFG_PARAM_MAX_NUM 296
-#define CFG_AP_IBUF_MAX_SIZE 235
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STAMIN 1
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STAMAX 255
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STADEF 3
+
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_APMIN 1
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_APMAX 255
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_APDEF 3
+
+#define CFG_PARAM_MAX_NUM 297
+#define CFG_AP_IBUF_MAX_SIZE 236
#define CFG_AP_SBUF_MAX_SIZE 3422
-#define CFG_STA_IBUF_MAX_SIZE 230
+#define CFG_STA_IBUF_MAX_SIZE 231
#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 42b4991..571d559 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -352,6 +352,7 @@
#define WNI_CFG_ENABLE_LPWR_IMG_TRANSITION 293
#define WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED 294
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP 295
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT 296
/*
* String parameter lengths
@@ -1605,8 +1606,12 @@
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP_STAMAX 1
#define WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP_STADEF 0
-#define CFG_PARAM_MAX_NUM 296
-#define CFG_STA_IBUF_MAX_SIZE 230
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STAMIN 1
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STAMAX 255
+#define WNI_CFG_AP_LINK_MONITOR_TIMEOUT_STADEF 3
+
+#define CFG_PARAM_MAX_NUM 297
+#define CFG_STA_IBUF_MAX_SIZE 231
#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 c903a3b..c0db1a0 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -349,6 +349,7 @@
(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",
};
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index afd7828..463bdd0 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4474,3 +4474,14 @@
V RW NP
NONE
0 1 0
+
+*
+* AP Link Monitor Timeout (TU)
+*
+WNI_CFG_AP_LINK_MONITOR_TIMEOUT I 4 7
+V RW NP
+HAL
+1 255 3
+V RW NP
+HAL
+1 255 3
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index d991e77..249d78b 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1456,6 +1456,21 @@
tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ sizeof(tHalCfg) + tlvStruct->length) ;
+/* QWLAN_HAL_CFG_AP_LINK_MONITOR_TIMEOUT */
+ tlvStruct->type = QWLAN_HAL_CFG_AP_LINK_MONITOR_TIMEOUT ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+ if(wlan_cfgGetInt(pMac, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_AP_LINK_MONITOR_TIMEOUT");
+ 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 4308e99..297b3cd 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ
diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini
index 91efbbd..29540be 100644
--- a/firmware_bin/WCNSS_qcom_cfg.ini
+++ b/firmware_bin/WCNSS_qcom_cfg.ini
@@ -301,6 +301,13 @@
#gStaKeepAlivePeriod = 30
+#AP LINK MONITOR TIMEOUT is used for both SAP and GO mode.
+#It is used to change the frequency of keep alive packets in the AP Link Monitor period which is by
+#default 20s. Currently the keep alive packets are sent as an interval of 3s but after this change
+#the keep alive packet frequency can be changed.
+
+#gApLinkMonitorPeriod = 3
+
#If set will start with active scan after driver load, otherwise will start with