wlan: FirstSet of Run Time Config variables
Support for run time configuration of
1. GET/SET ROAM DELTA
2. GET/SET ROAM SCAN PERIOD
3. GET/SET ROAM SCAN CHANNELS
4. GET/SET COUNTRYREV
6. GET/SET BAND
7. GET/SET ROAMTRIGGER
Prefer5G, RssiCatCap, FWMonitoring is removed from the ini
if LFR/CCX is enabled, FW RSSI Monitoring is enabled internally
CRs-Fixed: 450908
Change-Id: I21755ace757479949ef711ff4501c331fd333cc9
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index c1d764f..87253a6 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -233,6 +233,14 @@
tANI_U8 *ChannelList; //it will be an array of channels
}tCsrChannelInfo, *tpCsrChannelInfo;
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+typedef struct tagCsrCountryChannelInfo
+{
+ tCsrChannelInfo countryValidChannelList;
+ tANI_U8 revision; /* KR 25, 25 is the country revision index
+ to the list of valid channels */
+}tCsrCountryChannelInfo, *tpCsrCountryChannelInfo;
+#endif
typedef struct tagCsrSSIDInfo
{
tSirMacSSid SSID;
@@ -924,6 +932,7 @@
sCsrChannel neighborScanChanList;
tANI_U8 nMaxNeighborRetries;
tANI_U16 nNeighborResultsRefreshPeriod;
+ tANI_U16 nEmptyScanRefreshPeriod;
}tCsrNeighborRoamConfigParams;
#endif
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 73c58ef..3d29840 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -498,6 +498,7 @@
sCsrChannel neighborScanChanList;
tANI_U8 nMaxNeighborRetries;
tANI_U16 nNeighborResultsRefreshPeriod;
+ tANI_U16 nEmptyScanRefreshPeriod;
}tCsrNeighborRoamConfig;
#endif
@@ -1053,6 +1054,9 @@
#define CSR_IS_CHANNEL_5GHZ(chnNum) \
(((chnNum) >= CSR_MIN_5GHz_CHANNEL_NUMBER) && ((chnNum) <= CSR_MAX_5GHz_CHANNEL_NUMBER))
+#define CSR_IS_CHANNEL_DFS(chnNum) \
+ (NV_CHANNEL_ENABLE != vos_nv_getChannelEnabledState(chnNum))
+
#define CSR_IS_CHANNEL_24GHZ(chnNum) \
(((chnNum) > 0) && ((chnNum) <= CSR_MAX_24GHz_CHANNEL_NUMBER))
diff --git a/CORE/SME/inc/csrNeighborRoam.h b/CORE/SME/inc/csrNeighborRoam.h
index 1c3ff4d..7d2e2c6 100644
--- a/CORE/SME/inc/csrNeighborRoam.h
+++ b/CORE/SME/inc/csrNeighborRoam.h
@@ -84,6 +84,10 @@
tANI_U32 minChannelScanTime;
tANI_U32 maxChannelScanTime;
tANI_U16 neighborResultsRefreshPeriod;
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+ tCsrCountryChannelInfo countryChannelInfo;
+#endif
+ tANI_U16 emptyScanRefreshPeriod;
} tCsrNeighborRoamCfgParams, *tpCsrNeighborRoamCfgParams;
#define CSR_NEIGHBOR_ROAM_INVALID_CHANNEL_INDEX 255
@@ -160,7 +164,14 @@
eThirdEmptyScan,
eFourthEmptyScan,
eFifthEmptyScan,
+ eMaxEmptyScan=eFifthEmptyScan,
} eNeighborRoamEmptyScanCount;
+
+typedef enum
+{
+ DEFAULT_SCAN=0,
+ SPLIT_SCAN_OCCUPIED_LIST=1,
+} eNeighborRoamScanMode;
#endif
/* Complete control information for neighbor roam algorithm */
@@ -173,6 +184,7 @@
tANI_U8 currAPoperationChannel; // current assoc AP
tPalTimerHandle neighborScanTimer;
tPalTimerHandle neighborResultsRefreshTimer;
+ tPalTimerHandle emptyScanRefreshTimer;
tCsrTimerInfo neighborScanTimerInfo;
tCsrNeighborRoamChannelInfo roamChannelInfo;
tANI_U8 currentNeighborLookupThreshold;
@@ -197,6 +209,7 @@
new profile does not match previous
we re-initialize occupied channel list */
tANI_S8 lookupDOWNRssi;
+ tANI_U8 uScanMode;
#endif
} tCsrNeighborRoamControlInfo, *tpCsrNeighborRoamControlInfo;
@@ -221,7 +234,7 @@
void csrNeighborRoamTranistionPreauthDoneToDisconnected(tpAniSirGlobal pMac);
tANI_BOOLEAN csrNeighborRoamStatePreauthDone(tpAniSirGlobal pMac);
tANI_BOOLEAN csrNeighborRoamScanRspPending(tHalHandle hHal);
-v_U8_t *csrNeighborRoamStateToString(v_U8_t state);
+VOS_STATUS csrNeighborRoamSetLookupRssiThreshold(tpAniSirGlobal pMac, v_U8_t neighborLookupRssiThreshold);
#endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */
diff --git a/CORE/SME/inc/smeInside.h b/CORE/SME/inc/smeInside.h
index abae34d..e99f94f 100644
--- a/CORE/SME/inc/smeInside.h
+++ b/CORE/SME/inc/smeInside.h
@@ -301,7 +301,16 @@
eHalStatus csrTdlsTeardownReq(tHalHandle hHal, tANI_U8 sessionId,
tCsrTdlsTeardownRequest *teardown);
#endif
-
#endif /* FEATURE_WLAN_TDLS */
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+eHalStatus csrFlushAndCreateBgScanRoamChannelList(tpAniSirGlobal pMac,
+ const tANI_U8 *pChannelList,
+ const tANI_U8 numChannels);
+eHalStatus csrUpdateBgScanConfigIniChannelList(tpAniSirGlobal pMac, eCsrBand eBand);
+eHalStatus csrInitCountryValidChannelList(tpAniSirGlobal pMac, tANI_U8 revision);
+void csr_SetRevision(tpAniSirGlobal pMac, tANI_U8 revision);
+#endif
+
+
#endif //#if !defined( __SMEINSIDE_H )
diff --git a/CORE/SME/inc/smeInternal.h b/CORE/SME/inc/smeInternal.h
index 4a13731..bca3dc6 100644
--- a/CORE/SME/inc/smeInternal.h
+++ b/CORE/SME/inc/smeInternal.h
@@ -131,6 +131,16 @@
SME_STATE_READY,
} eSmeState;
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+/* enumeration for Korea country revision index,
+ index to the list of valid channels */
+typedef enum eSmeKRRevision
+{
+ SME_KR_3 = 3,
+ SME_KR_24 = 24,
+ SME_KR_25 = 25,
+} eSmeKRRevision;
+#endif
#define SME_IS_START(pMac) (SME_STATE_STOP != (pMac)->sme.state)
#define SME_IS_READY(pMac) (SME_STATE_READY == (pMac)->sme.state)
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 12598c2..b37c141 100755
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -2257,6 +2257,20 @@
eHalStatus sme_UpdateImmediateRoamRssiDiff(tHalHandle hHal, v_U8_t nImmediateRoamRssiDiff);
+/* ---------------------------------------------------------------------------
+ \fn sme_UpdateRoamRssiDiff
+ \brief Update RoamRssiDiff
+ This function is called through dynamic setConfig callback function
+ to configure RoamRssiDiff
+ Usage: adb shell iwpriv wlan0 setConfig RoamRssiDiff=[0 .. 125]
+ \param hHal - HAL handle for device
+ \param RoamRssiDiff - minimum rssi difference between potential
+ candidate and current AP.
+ \- return Success or failure
+ -------------------------------------------------------------------------*/
+
+eHalStatus sme_UpdateRoamRssiDiff(tHalHandle hHal, v_U8_t RoamRssiDiff);
+
/*--------------------------------------------------------------------------
\brief sme_UpdateFastTransitionEnabled() - enable/disable Fast Transition support at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
@@ -2275,7 +2289,7 @@
#ifdef FEATURE_WLAN_LFR
/*--------------------------------------------------------------------------
\brief sme_UpdateIsFastRoamIniFeatureEnabled() - enable/disable LFR support at runtime
- It is used at in the REG_DYNAMIC_VARIABLE macro definition of
+ It is used at in the REG_DYNAMIC_VARIABLE macro definition of
isFastRoamIniFeatureEnabled.
This is a synchronuous call
\param hHal - The handle returned by macOpen.
@@ -2284,7 +2298,7 @@
\sa
--------------------------------------------------------------------------*/
-eHalStatus sme_UpdateIsFastRoamIniFeatureEnabled(tHalHandle hHal,
+eHalStatus sme_UpdateIsFastRoamIniFeatureEnabled(tHalHandle hHal,
v_BOOL_t isFastRoamIniFeatureEnabled);
#endif /* FEATURE_WLAN_LFR */
@@ -2319,6 +2333,152 @@
eHalStatus sme_UpdateConfigFwRssiMonitoring(tHalHandle hHal,
v_BOOL_t fEnableFwRssiMonitoring);
+/*--------------------------------------------------------------------------
+ \brief sme_setNeighborLookupRssiThreshold() - update neighbor lookup rssi threshold
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_setNeighborLookupRssiThreshold(tHalHandle hHal,
+ v_U8_t neighborLookupRssiThreshold);
+
+/*--------------------------------------------------------------------------
+ \brief sme_setNeighborReassocRssiThreshold() - update neighbor reassoc rssi threshold
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_setNeighborReassocRssiThreshold(tHalHandle hHal,
+ v_U8_t neighborReassocRssiThreshold);
+
+/*--------------------------------------------------------------------------
+ \brief sme_getNeighborLookupRssiThreshold() - get neighbor lookup rssi threshold
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+v_U8_t sme_getNeighborLookupRssiThreshold(tHalHandle hHal);
+
+/*--------------------------------------------------------------------------
+ \brief sme_setNeighborScanRefreshPeriod() - set neighbor scan results refresh period
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_setNeighborScanRefreshPeriod(tHalHandle hHal,
+ v_U16_t neighborScanResultsRefreshPeriod);
+
+/*--------------------------------------------------------------------------
+ \brief sme_getNeighborScanRefreshPeriod() - get neighbor scan results refresh period
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+v_U16_t sme_getNeighborScanRefreshPeriod(tHalHandle hHal);
+
+/*--------------------------------------------------------------------------
+ \brief sme_getEmptyScanRefreshPeriod() - get empty scan refresh period
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+v_U16_t sme_getEmptyScanRefreshPeriod(tHalHandle hHal);
+
+
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+/*--------------------------------------------------------------------------
+ \brief sme_getRoamRssiDiff() - get Roam rssi diff
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+v_U8_t sme_getRoamRssiDiff(tHalHandle hHal);
+
+/*--------------------------------------------------------------------------
+ \brief sme_ChangeRoamScanChannelList() - Change roam scan channel list
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_ChangeRoamScanChannelList(tHalHandle hHal, tANI_U8 *pChannelList,
+ tANI_U8 numChannels);
+
+/*--------------------------------------------------------------------------
+ \brief sme_ChangeCountryValidChannelListByRevision() - Change Korea valid channel list
+ based on country revision number
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_ChangeCountryValidChannelListByRevision(tHalHandle hHal,
+ tANI_U8 Revision);
+
+/*--------------------------------------------------------------------------
+ \brief csrUpdateBgScanConfigIniChannelList() - Update bgscan roam cache
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_UpdateBgScanConfigIniChannelList(tHalHandle hHal,
+ eCsrBand eBand);
+
+
+/*--------------------------------------------------------------------------
+ \brief sme_getRoamScanChannelList() - get roam scan channel list
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_getRoamScanChannelList(tHalHandle hHal, tANI_U8 *pChannelList,
+ tANI_U8 *pNumChannels);
+
+/*--------------------------------------------------------------------------
+ \brief sme_GetCountryRevision() - get Country revision index
+ This is a synchronuous call
+ \param hHal - The handle returned by macOpen.
+ \return eHAL_STATUS_SUCCESS - SME update config successful.
+ Other status means SME is failed to update
+ \sa
+ --------------------------------------------------------------------------*/
+eHalStatus sme_GetCountryRevision(tHalHandle hHal, tANI_U8 *pRevision);
+
+#endif
+
+/* ---------------------------------------------------------------------------
+ \fn sme_UpdateEmptyScanRefreshPeriod
+ \brief Update nnEmptyScanRefreshPeriod
+ This function is called through dynamic setConfig callback function
+ to configure nnEmptyScanRefreshPeriod
+ Usage: adb shell iwpriv wlan0 setConfig nEmptyScanRefreshPeriod=[0 .. 60]
+ \param hHal - HAL handle for device
+ \param nEmptyScanRefreshPeriod - scan period following empty scan results.
+ \- return Success or failure
+ -------------------------------------------------------------------------*/
+
+eHalStatus sme_UpdateEmptyScanRefreshPeriod(tHalHandle hHal, v_U16_t nEmptyScanRefreshPeriod);
+
/* ---------------------------------------------------------------------------
\fn sme_IsFeatureSupportedByFW
\brief Check if an feature is enabled by FW