wlan: Long initial scan time.
Initial Scan after driver load takes long time.As a part of fix
scan all non-dfs channels actively in the 1st scan.
Add new ini parameter, gInitialScanSkipDFSCh, to enable this feature.
By default this feature this enabled.
Change-Id: I3406bdb98bc835b0b04b623922e501ebdade1312
CRs-Fixed: 589316
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 2b9b1a1..300cd19 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -787,7 +787,7 @@
p11dScanCmd->command = eSmeCommandScan;
p11dScanCmd->u.scanCmd.callback = pMac->scan.callback11dScanDone;
p11dScanCmd->u.scanCmd.pContext = NULL;
- p11dScanCmd->u.scanCmd.scanID = pMac->scan.nextScanID++;
+ p11dScanCmd->u.scanCmd.scanID = pMac->scan.nextScanID;
scanReq.BSSType = eCSR_BSS_TYPE_ANY;
if ( csrIs11dSupported(pMac) )
@@ -6091,7 +6091,42 @@
{
new_index = 0;
pMac->roam.numValidChannels = len;
- for ( index = 0; index < pSrcReq->ChannelInfo.numOfChannels ; index++ )
+
+ /* Since in CsrScanRequest,value of pMac->scan.nextScanID
+ * is incremented before calling CsrScanCopyRequest, as a
+ * result pMac->scan.nextScanID is equal to ONE for the
+ * first scan.
+ */
+ if (pMac->roam.configParam.initialScanSkipDFSCh &&
+ 1 == pMac->scan.nextScanID )
+ {
+ smsLog(pMac, LOG1,
+ FL("Initial scan, scan only non-DFS channels"));
+
+ for (index = 0; index < pSrcReq->ChannelInfo.
+ numOfChannels ; index++ )
+ {
+ if((csrRoamIsValidChannel(pMac, pSrcReq->ChannelInfo.
+ ChannelList[index])))
+ {
+ /*Skiipping DFS Channels for 1st scan */
+ if(NV_CHANNEL_DFS ==
+ vos_nv_getChannelEnabledState(pSrcReq->ChannelInfo.
+ ChannelList[index]))
+ continue ;
+
+ pDstReq->ChannelInfo.ChannelList[new_index] =
+ pSrcReq->ChannelInfo.ChannelList[index];
+ new_index++;
+
+ }
+ }
+ pMac->roam.configParam.initialScanSkipDFSCh = 0;
+ }
+ else
+ {
+ for ( index = 0; index < pSrcReq->ChannelInfo.
+ numOfChannels ; index++ )
{
/* Allow scan on valid channels only.
* If it is p2p scan and valid channel list doesnt contain
@@ -6136,6 +6171,7 @@
new_index++;
}
}
+ }
pDstReq->ChannelInfo.numOfChannels = new_index;
#ifdef FEATURE_WLAN_LFR
if ((eCSR_SCAN_HO_BG_SCAN == pSrcReq->requestType) &&