wlan: Add ini params to support antenna diversity
Add ini parameters in HDD driver to support antenna diversity
Change-Id: I730ce04fdb7aa7e040f7e4d482091eedf1660066
CRs-fixed: 561894
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index b2ed5d6..bc67358 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1984,11 +1984,25 @@
#define CFG_OVERRIDE_COUNTRY_CODE "gStaCountryCode"
#define CFG_OVERRIDE_COUNTRY_CODE_DEFAULT "000"
-//Enable debug for remain on channel issues
-#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME "gDebugP2pRemainOnChannel"
-#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT ( 0 )
-#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN ( 0 )
-#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX ( 1 )
+/*Once the period expires the RSSI will be compared with Threshold
+ * and if needed trigger events will be raised
+ */
+#define CFG_ASD_PROBE_INTERVAL_NAME "gAsdProbeInterval"
+#define CFG_ASD_PROBE_INTERVAL_DEFAULT (50)
+#define CFG_ASD_PROBE_INTERVAL_MIN (10)
+#define CFG_ASD_PROBE_INTERVAL_MAX (100)
+
+/* RSSI Threshold used to trigger probing activity/selection process*/
+#define CFG_ASD_TRIGGER_THRESHOLD_NAME "gAsdTriggerThreshold"
+#define CFG_ASD_TRIGGER_THRESHOLD_DEFAULT (-75)
+#define CFG_ASD_TRIGGER_THRESHOLD_MIN (-120)
+#define CFG_ASD_TRIGGER_THRESHOLD_MAX (0)
+
+/*RSSI Hysteresis Threshold for RSSI-RTT*/
+#define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_NAME "gAsdRTTRssiHystThreshold"
+#define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_DEFAULT (50)
+#define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MIN (0)
+#define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MAX (100)
/*---------------------------------------------------------------------------
Type declarations
@@ -2404,7 +2418,9 @@
v_BOOL_t IsMemoryDebugSupportEnabled;
#endif
char overrideCountryCode[4];
- v_BOOL_t debugP2pRemainOnChannel;
+ v_U32_t gAsdProbeInterval;
+ v_U32_t gAsdTriggerThreshold;
+ v_U32_t gAsdRTTRssiHystThreshold;
} 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 07ecc98..ecfcaac 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2835,6 +2835,27 @@
hdd_config_t, overrideCountryCode,
VAR_FLAGS_OPTIONAL,
(void *)CFG_OVERRIDE_COUNTRY_CODE_DEFAULT),
+
+ REG_VARIABLE( CFG_ASD_PROBE_INTERVAL_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, gAsdProbeInterval,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ASD_PROBE_INTERVAL_DEFAULT,
+ CFG_ASD_PROBE_INTERVAL_MIN,
+ CFG_ASD_PROBE_INTERVAL_MAX),
+
+ REG_VARIABLE( CFG_ASD_TRIGGER_THRESHOLD_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, gAsdTriggerThreshold,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ASD_TRIGGER_THRESHOLD_DEFAULT,
+ CFG_ASD_TRIGGER_THRESHOLD_MIN,
+ CFG_ASD_TRIGGER_THRESHOLD_MAX),
+
+ REG_VARIABLE( CFG_ASD_RTT_RSSI_HYST_THRESHOLD_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, gAsdRTTRssiHystThreshold,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ASD_RTT_RSSI_HYST_THRESHOLD_DEFAULT,
+ CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MIN,
+ CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MAX),
};
@@ -3208,6 +3229,10 @@
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gCoalesingInIBSS] Value = [%u] ",pHddCtx->cfg_ini->isCoalesingInIBSSAllowed);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [overrideCountryCode] Value = [%s] ",pHddCtx->cfg_ini->overrideCountryCode);
+
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAsdProbeInterval] Value = [%u]",pHddCtx->cfg_ini->gAsdProbeInterval);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAsdTriggerThreshold] Value = [%u]",pHddCtx->cfg_ini->gAsdTriggerThreshold);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAsdRTTRssiHystThreshold]Value = [%u]",pHddCtx->cfg_ini->gAsdRTTRssiHystThreshold);
}
@@ -4459,6 +4484,30 @@
fStatus = FALSE;
hddLog(LOGE, "Could not pass on WNI_BTC_ACTIVE_BT_LEN to CCM");
}
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASD_PROBE_INTERVAL,
+ pConfig->gAsdProbeInterval, NULL,
+ eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_ASD_PROBE_INTERVAL to CCM");
+ }
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASD_TRIGGER_THRESHOLD,
+ pConfig->gAsdTriggerThreshold, NULL,
+ eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_ASD_TRIGGER_THRESHOLD to CCM");
+ }
+
+ if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD,
+ pConfig->gAsdRTTRssiHystThreshold, NULL,
+ eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
+ {
+ fStatus = FALSE;
+ hddLog(LOGE, "Could not pass on WNI_CFG_ASD_RSSI_HYST_THRESHOLD to CCM");
+ }
return fStatus;
}
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index bfe9455..ac6b2e3 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -369,6 +369,10 @@
#define WNI_CFG_BTC_ACTIVE_BT_LEN 308
#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN 309
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN 310
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY 311
+#define WNI_CFG_ASD_PROBE_INTERVAL 312
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD 313
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD 314
/*
* String parameter lengths
@@ -2608,10 +2612,42 @@
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APMAX 250000
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APDEF 90000
-#define CFG_PARAM_MAX_NUM 311
-#define CFG_AP_IBUF_MAX_SIZE 250
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN 0
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX 4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STADEF 300
+
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APMIN 0
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APMAX 4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APDEF 300
+
+#define WNI_CFG_ASD_PROBE_INTERVAL_STAMIN 10
+#define WNI_CFG_ASD_PROBE_INTERVAL_STAMAX 100
+#define WNI_CFG_ASD_PROBE_INTERVAL_STADEF 50
+
+#define WNI_CFG_ASD_PROBE_INTERVAL_APMIN 10
+#define WNI_CFG_ASD_PROBE_INTERVAL_APMAX 100
+#define WNI_CFG_ASD_PROBE_INTERVAL_APDEF 50
+
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STAMIN 0
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STAMAX 120
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STADEF 45
+
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_APMIN 0
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_APMAX 120
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_APDEF 45
+
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STAMIN 0
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STAMAX 100
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STADEF 0
+
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_APMIN 0
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_APMAX 100
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_APDEF 0
+
+#define CFG_PARAM_MAX_NUM 315
+#define CFG_AP_IBUF_MAX_SIZE 254
#define CFG_AP_SBUF_MAX_SIZE 3422
-#define CFG_STA_IBUF_MAX_SIZE 245
+#define CFG_STA_IBUF_MAX_SIZE 249
#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 13f9014..d49c69c 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -363,6 +363,10 @@
#define WNI_CFG_BTC_ACTIVE_BT_LEN 308
#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN 309
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN 310
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY 311
+#define WNI_CFG_ASD_PROBE_INTERVAL 312
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD 313
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD 314
/*
* String parameter lengths
@@ -1689,8 +1693,24 @@
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STAMAX 250000
#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STADEF 90000
-#define CFG_PARAM_MAX_NUM 311
-#define CFG_STA_IBUF_MAX_SIZE 245
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN 0
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX 4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STADEF 300
+
+#define WNI_CFG_ASD_PROBE_INTERVAL_STAMIN 10
+#define WNI_CFG_ASD_PROBE_INTERVAL_STAMAX 100
+#define WNI_CFG_ASD_PROBE_INTERVAL_STADEF 50
+
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STAMIN 0
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STAMAX 120
+#define WNI_CFG_ASD_TRIGGER_THRESHOLD_STADEF 45
+
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STAMIN 0
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STAMAX 100
+#define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STADEF 0
+
+#define CFG_PARAM_MAX_NUM 315
+#define CFG_STA_IBUF_MAX_SIZE 249
#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 487269c..41310b0 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -340,6 +340,10 @@
(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",
};
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index 5a137ff..e0a2cfe 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4650,3 +4650,50 @@
*
*
+* RMC action period frequency (milli seconds)
+*
+WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY I 4 7
+V RW NP
+HAL
+0 0xFFFFFFFF 300
+V RW NP
+HAL
+0 0xFFFFFFFF 300
+*
+*
+
+* Rssi probe interval (milli seconds)
+*
+WNI_CFG_ASD_PROBE_INTERVAL I 4 7
+V RW NP
+HAL
+10 100 50
+V RW NP
+HAL
+10 100 50
+*
+*
+
+*Rssi threshold to trigger probing and slecting
+*
+WNI_CFG_ASD_TRIGGER_THRESHOLD I 4 7
+V RW NP
+HAL
+0 120 45
+V RW NP
+HAL
+0 120 45
+*
+*
+
+*Rssi Hysteresis threshold for RSSI-RTT
+*
+WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD I 4 7
+V RW NP
+HAL
+0 100 0
+V RW NP
+HAL
+0 100 0
+*
+*
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index a9e0c2c..18517ef 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1735,6 +1735,48 @@
tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ sizeof(tHalCfg) + tlvStruct->length) ;
+ /* QWLAN_HAL_CFG_ASD_PROBE_INTERVAL */
+ tlvStruct->type = QWLAN_HAL_CFG_ASD_PROBE_INTERVAL ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+ if(wlan_cfgGetInt(pMac, WNI_CFG_ASD_PROBE_INTERVAL,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_ASD_PROBE_INTERVAL");
+ goto handle_failure;
+ }
+ tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ + sizeof(tHalCfg) + tlvStruct->length) ;
+
+ /* QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD */
+ tlvStruct->type = QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+ if(wlan_cfgGetInt(pMac, WNI_CFG_ASD_TRIGGER_THRESHOLD,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_ASD_TRIGGER_THRESHOLD");
+ goto handle_failure;
+ }
+ tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+ + sizeof(tHalCfg) + tlvStruct->length) ;
+
+ /* QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD */
+ tlvStruct->type = QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD ;
+ tlvStruct->length = sizeof(tANI_U32);
+ configDataValue = (tANI_U32 *)(tlvStruct + 1);
+ if(wlan_cfgGetInt(pMac, WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD,
+ configDataValue ) != eSIR_SUCCESS)
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failed to get value for WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD");
+ 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 764a7e0..3a714de 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ
diff --git a/riva/inc/wlan_hal_cfg.h b/riva/inc/wlan_hal_cfg.h
index 6d2012b..c4054cc 100644
--- a/riva/inc/wlan_hal_cfg.h
+++ b/riva/inc/wlan_hal_cfg.h
@@ -220,7 +220,11 @@
#define QWLAN_HAL_CFG_BTC_STATIC_OPP_WLAN_ACTIVE_BT_LEN 167
#define QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_WLAN_ACTIVE_WLAN_LEN 168
#define QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_WLAN_ACTIVE_BT_LEN 169
-#define QWLAN_HAL_CFG_MAX_PARAMS 170
+#define QWLAN_HAL_CFG_RMCAST_FIXED_RATE 170
+#define QWLAN_HAL_CFG_ASD_PROBE_INTERVAL 171
+#define QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD 172
+#define QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD 173
+#define QWLAN_HAL_CFG_MAX_PARAMS 174
/* Total number of Integer CFGs. This is used while allocating the memory for TLV */
@@ -919,4 +923,19 @@
#endif //__WLAN_HAL_CFG_H__
+/*Once the period expires the RSSI will be compared with Threshold
+ * and if needed trigger events will be raised
+ */
+#define QWLAN_HAL_CFG_ASD_PROBE_INTERVAL_DEF 50
+#define QWLAN_HAL_CFG_ASD_PROBE_INTERVAL_MIN 10
+#define QWLAN_HAL_CFG_ASD_PROBE_INTERVAL_MAX 100
+/* RSSI Threshold used to trigger probing activity/selection process*/
+#define QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD_DEF -75
+#define QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD_MIN -120
+#define QWLAN_HAL_CFG_ASD_TRIGGER_THRESHOLD_MAX 0
+
+/*RSSI Hysteresis Threshold for RSSI-RTT*/
+#define QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_DEF 50
+#define QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MIN 50
+#define QWLAN_HAL_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MAX 100