wlan: RuntimeConfig Extension for LFR2.0
Runtime Config Support for the following
has been added for LFR2.0
1.SETROAMSCANPERIOD
2.SETSCANCHANNELTIME
3.SETSCANHOMETIME
4.SETROAMTRIGGER(enhancement)
Change-Id: Ifba8777f45dd91dc0bcee99b7848d569ad1124e9
CRs-Fixed: 494207
diff --git a/CORE/SME/inc/csrNeighborRoam.h b/CORE/SME/inc/csrNeighborRoam.h
index 70f68fa..8de9a48 100644
--- a/CORE/SME/inc/csrNeighborRoam.h
+++ b/CORE/SME/inc/csrNeighborRoam.h
@@ -271,6 +271,8 @@
#define REASON_NPROBES_CHANGED 13
#define REASON_HOME_AWAY_TIME_CHANGED 14
#define REASON_OS_REQUESTED_ROAMING_NOW 15
+#define REASON_SCAN_CH_TIME_CHANGED 16
+#define REASON_SCAN_HOME_TIME_CHANGED 17
eHalStatus csrRoamOffloadScan(tpAniSirGlobal pMac, tANI_U8 command, tANI_U8 reason);
eHalStatus csrNeighborRoamCandidateFoundIndHdlr(tpAniSirGlobal pMac, void* pMsg);
eHalStatus csrNeighborRoamHandoffReqHdlr(tpAniSirGlobal pMac, void* pMsg);
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 06cbeaf..a4d580d 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -14858,10 +14858,6 @@
pMac->roam.roamSession[sessionId].connectedProfile.MDID.mdiePresent;
pRequestBuf->MDID.mobilityDomain =
pMac->roam.roamSession[sessionId].connectedProfile.MDID.mobilityDomain;
- /*Ensure that the nProbes does not fall below its MIN Value which is 2*/
- if(pMac->roam.configParam.nProbes < 2)
- pRequestBuf->nProbes = 2;
- else
pRequestBuf->nProbes = pMac->roam.configParam.nProbes;
/*Max Dwell Period is calculated here to ensure that,
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 6eccaf2..33b3bb3 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -473,22 +473,47 @@
{
NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Currently in CONNECTED state, so deregister all and re-register for DOWN event again"));
/* De-register existing lookup UP/DOWN, Rssi indications */
- csrNeighborRoamDeregAllRssiIndication(pMac);
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ if (pMac->roam.configParam.isRoamOffloadScanEnabled)
+ {
+ csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_STOP, REASON_DISCONNECTED);
+ }
+ else
+ {
+#endif
+ csrNeighborRoamDeregAllRssiIndication(pMac);
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ }
+#endif
pMac->roam.neighborRoamInfo.cfgParams.neighborLookupThreshold = neighborLookupRssiThreshold;
pNeighborRoamInfo->currentNeighborLookupThreshold = pMac->roam.neighborRoamInfo.cfgParams.neighborLookupThreshold;
- NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("Registering neighbor lookup DOWN event with TL, RSSI = %d"), pNeighborRoamInfo->currentNeighborLookupThreshold);
- /* Register Neighbor Lookup threshold callback with TL for DOWN event only */
- vosStatus = WLANTL_RegRSSIIndicationCB(pMac->roam.gVosContext, (v_S7_t)pNeighborRoamInfo->currentNeighborLookupThreshold * (-1),
- WLANTL_HO_THRESHOLD_DOWN,
- csrNeighborRoamNeighborLookupDOWNCallback,
- VOS_MODULE_ID_SME, pMac);
- if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ if (pMac->roam.configParam.isRoamOffloadScanEnabled)
{
- //err msg
- smsLog(pMac, LOGW, FL(" Couldn't register csrNeighborRoamNeighborLookupDOWNCallback with TL: Status = %d"), vosStatus);
- vosStatus = VOS_STATUS_E_FAILURE;
+ csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_START, REASON_CONNECT);
}
+ else
+ {
+#endif
+ NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
+ FL("Registering neighbor lookup DOWN event with TL, RSSI = %d"),
+ pNeighborRoamInfo->currentNeighborLookupThreshold);
+ /* Register Neighbor Lookup threshold callback with TL for DOWN event only */
+ vosStatus = WLANTL_RegRSSIIndicationCB(pMac->roam.gVosContext,
+ (v_S7_t)pNeighborRoamInfo->currentNeighborLookupThreshold * (-1),
+ WLANTL_HO_THRESHOLD_DOWN,
+ csrNeighborRoamNeighborLookupDOWNCallback,
+ VOS_MODULE_ID_SME, pMac);
+ if (!VOS_IS_STATUS_SUCCESS(vosStatus))
+ {
+ //err msg
+ smsLog(pMac, LOGW, FL(" Couldn't register csrNeighborRoamNeighborLookupDOWNCallback with TL: Status = %d"), vosStatus);
+ vosStatus = VOS_STATUS_E_FAILURE;
+ }
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ }
+#endif
}
else if (eCSR_NEIGHBOR_ROAM_STATE_INIT == pNeighborRoamInfo->neighborRoamState)
{
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 2c92f88..e97000a 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -7452,13 +7452,6 @@
}
sme_ReleaseGlobalLock( &pMac->sme );
}
-
-#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
- if (pMac->roam.configParam.isRoamOffloadScanEnabled)
- {
- csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_UPDATE_CFG, REASON_LOOKUP_THRESH_CHANGED);
- }
-#endif
return status;
}
@@ -7638,6 +7631,13 @@
sme_ReleaseGlobalLock( &pMac->sme );
}
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ if (pMac->roam.configParam.isRoamOffloadScanEnabled)
+ {
+ csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_UPDATE_CFG,
+ REASON_EMPTY_SCAN_REF_PERIOD_CHANGED);
+ }
+#endif
return status ;
}
@@ -7699,6 +7699,13 @@
pMac->roam.neighborRoamInfo.cfgParams.maxChannelScanTime = nNeighborScanMaxChanTime;
sme_ReleaseGlobalLock( &pMac->sme );
}
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ if (pMac->roam.configParam.isRoamOffloadScanEnabled)
+ {
+ csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_UPDATE_CFG,
+ REASON_SCAN_CH_TIME_CHANGED);
+ }
+#endif
return status ;
}
@@ -7732,7 +7739,7 @@
\brief Update nNeighborScanPeriod
This function is called through dynamic setConfig callback function
to configure nNeighborScanPeriod
- Usage: adb shell iwpriv wlan0 setConfig nNeighborScanPeriod=[0 .. 60]
+ Usage: adb shell iwpriv wlan0 setConfig nNeighborScanPeriod=[0 .. 1000]
\param hHal - HAL handle for device
\param nNeighborScanPeriod - neighbor scan period
\- return Success or failure
@@ -7754,6 +7761,13 @@
pMac->roam.neighborRoamInfo.cfgParams.neighborScanPeriod = nNeighborScanPeriod;
sme_ReleaseGlobalLock( &pMac->sme );
}
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+ if (pMac->roam.configParam.isRoamOffloadScanEnabled)
+ {
+ csrRoamOffloadScan(pMac, ROAM_SCAN_OFFLOAD_UPDATE_CFG,
+ REASON_SCAN_HOME_TIME_CHANGED);
+ }
+#endif
return status ;
}