Changes related to scan 3 combined channels.
Changes related to scan combined 3 channels during split scan.
Change-Id: Ie6d00c8c6e1cb8b64e48534bab7f9090e0459db5
CRs-fixed: 482113
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index afce088..af235e6 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -618,10 +618,15 @@
#define CFG_REST_TIME_CONC_MAX ( 10000 )
#define CFG_REST_TIME_CONC_DEFAULT ( 100 )
-#define CFG_NUM_CHAN_COMBINED_CONC_NAME "gNumChanCombinedConc"
-#define CFG_NUM_CHAN_COMBINED_CONC_MIN ( 1 )
-#define CFG_NUM_CHAN_COMBINED_CONC_MAX ( 255 )
-#define CFG_NUM_CHAN_COMBINED_CONC_DEFAULT ( 1 )
+#define CFG_NUM_STA_CHAN_COMBINED_CONC_NAME "gNumStaChanCombinedConc"
+#define CFG_NUM_STA_CHAN_COMBINED_CONC_MIN ( 1 )
+#define CFG_NUM_STA_CHAN_COMBINED_CONC_MAX ( 255 )
+#define CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT ( 3 )
+
+#define CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME "gNumP2PChanCombinedConc"
+#define CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN ( 1 )
+#define CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX ( 255 )
+#define CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT ( 1 )
#endif
@@ -1877,8 +1882,10 @@
v_U32_t nActiveMinChnTimeConc; //in units of milliseconds
v_U32_t nActiveMaxChnTimeConc; //in units of milliseconds
v_U32_t nRestTimeConc; //in units of milliseconds
- v_U8_t nNumChanCombinedConc; //number of channels combined
- //in each split scan operation
+ v_U8_t nNumStaChanCombinedConc; //number of channels combined for
+ //STA in each split scan operation
+ v_U8_t nNumP2PChanCombinedConc; //number of channels combined for
+ //P2P in each split scan operation
#endif
v_U8_t nMaxPsPoll;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 57c9f9b..11703ac 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -848,12 +848,19 @@
CFG_REST_TIME_CONC_MIN,
CFG_REST_TIME_CONC_MAX ),
- REG_VARIABLE( CFG_NUM_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
- hdd_config_t, nNumChanCombinedConc,
+ REG_VARIABLE( CFG_NUM_STA_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, nNumStaChanCombinedConc,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
- CFG_NUM_CHAN_COMBINED_CONC_DEFAULT,
- CFG_NUM_CHAN_COMBINED_CONC_MIN,
- CFG_NUM_CHAN_COMBINED_CONC_MAX ),
+ CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT,
+ CFG_NUM_STA_CHAN_COMBINED_CONC_MIN,
+ CFG_NUM_STA_CHAN_COMBINED_CONC_MAX ),
+
+ REG_VARIABLE( CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, nNumP2PChanCombinedConc,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT,
+ CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN,
+ CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX ),
#endif
REG_VARIABLE( CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
@@ -3779,7 +3786,9 @@
smeConfig.csrConfig.nPassiveMaxChnTimeConc = pConfig->nPassiveMaxChnTimeConc;
smeConfig.csrConfig.nPassiveMinChnTimeConc = pConfig->nPassiveMinChnTimeConc;
smeConfig.csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
- smeConfig.csrConfig.nNumChanCombinedConc = pConfig->nNumChanCombinedConc;
+ smeConfig.csrConfig.nNumStaChanCombinedConc = pConfig->nNumStaChanCombinedConc;
+ smeConfig.csrConfig.nNumP2PChanCombinedConc = pConfig->nNumP2PChanCombinedConc;
+
#endif
smeConfig.csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
smeConfig.csrConfig.WMMSupportMode = pConfig->WmmMode;
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index 879369f..97121fa 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -1025,8 +1025,10 @@
tANI_U32 nActiveMinChnTimeConc; //in units of milliseconds
tANI_U32 nActiveMaxChnTimeConc; //in units of milliseconds
tANI_U32 nRestTimeConc; //in units of milliseconds
- tANI_U8 nNumChanCombinedConc; //number of channels combined
- //in each split scan operation
+ tANI_U8 nNumStaChanCombinedConc; //number of channels combined for
+ //STA in each split scan operation
+ tANI_U8 nNumP2PChanCombinedConc; //number of channels combined for
+ //P2P in each split scan operation
#endif
tANI_BOOLEAN IsIdleScanEnabled;
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index a12d290..1c07a2b 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -580,8 +580,10 @@
tANI_U32 nActiveMinChnTimeConc; //in units of milliseconds
tANI_U32 nActiveMaxChnTimeConc; //in units of milliseconds
tANI_U32 nRestTimeConc; //in units of milliseconds
- tANI_U8 nNumChanCombinedConc; //number of channels combined
- //in each split scan operation
+ tANI_U8 nNumStaChanCombinedConc; //number of channels combined for
+ //Sta in each split scan operation
+ tANI_U8 nNumP2PChanCombinedConc; //number of channels combined for
+ //P2P in each split scan operation
#endif
tANI_BOOLEAN IsIdleScanEnabled;
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 595f3ff..f23af70 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -953,7 +953,8 @@
pMac->roam.configParam.nPassiveMaxChnTimeConc = CSR_PASSIVE_MAX_CHANNEL_TIME_CONC;
pMac->roam.configParam.nPassiveMinChnTimeConc = CSR_PASSIVE_MIN_CHANNEL_TIME_CONC;
pMac->roam.configParam.nRestTimeConc = CSR_REST_TIME_CONC;
- pMac->roam.configParam.nNumChanCombinedConc = CSR_NUM_CHAN_COMBINED_CONC;
+ pMac->roam.configParam.nNumStaChanCombinedConc = CSR_NUM_STA_CHAN_COMBINED_CONC;
+ pMac->roam.configParam.nNumP2PChanCombinedConc = CSR_NUM_P2P_CHAN_COMBINED_CONC;
#endif
pMac->roam.configParam.IsIdleScanEnabled = TRUE; //enable the idle scan by default
pMac->roam.configParam.nTxPowerCap = CSR_MAX_TX_POWER;
@@ -1450,9 +1451,13 @@
{
pMac->roam.configParam.nRestTimeConc = pParam->nRestTimeConc;
}
- if (pParam->nNumChanCombinedConc)
+ if (pParam->nNumStaChanCombinedConc)
{
- pMac->roam.configParam.nNumChanCombinedConc = pParam->nNumChanCombinedConc;
+ pMac->roam.configParam.nNumStaChanCombinedConc = pParam->nNumStaChanCombinedConc;
+ }
+ if (pParam->nNumP2PChanCombinedConc)
+ {
+ pMac->roam.configParam.nNumP2PChanCombinedConc = pParam->nNumP2PChanCombinedConc;
}
#endif
//if upper layer wants to disable idle scan altogether set it to 0
@@ -1636,7 +1641,8 @@
pParam->nPassiveMaxChnTimeConc = pMac->roam.configParam.nPassiveMaxChnTimeConc;
pParam->nPassiveMinChnTimeConc = pMac->roam.configParam.nPassiveMinChnTimeConc;
pParam->nRestTimeConc = pMac->roam.configParam.nRestTimeConc;
- pParam->nNumChanCombinedConc = pMac->roam.configParam.nNumChanCombinedConc;
+ pParam->nNumStaChanCombinedConc = pMac->roam.configParam.nNumStaChanCombinedConc;
+ pParam->nNumP2PChanCombinedConc = pMac->roam.configParam.nNumP2PChanCombinedConc;
#endif
//Change the unit from microsecond to second
pParam->impsSleepTime = pMac->roam.configParam.impsSleepTime / PAL_TIMER_TO_SEC_UNIT;
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index c398faa..3cc5c72 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -456,7 +456,7 @@
tANI_BOOLEAN fNoCmdPending;
tSmeCmd *pQueueScanCmd=NULL;
tSmeCmd *pSendScanCmd=NULL;
-
+ tANI_U8 nNumChanCombinedConc = 0;
if (NULL == pScanCmd)
{
smsLog (pMac, LOGE, FL("Scan Req cmd is NULL"));
@@ -471,6 +471,16 @@
* the scan is delaying the time it takes for LFR to find
* candidates and resulting in disconnects.
*/
+
+ if(csrIsStaSessionConnected(pMac) &&
+ !csrIsP2pSessionConnected(pMac))
+ {
+ nNumChanCombinedConc = pMac->roam.configParam.nNumStaChanCombinedConc;
+ }
+ else if(csrIsP2pSessionConnected(pMac))
+ {
+ nNumChanCombinedConc = pMac->roam.configParam.nNumP2PChanCombinedConc;
+ }
if ( (csrIsStaSessionConnected(pMac) &&
#ifdef FEATURE_WLAN_LFR
(csrIsConcurrentInfraConnected(pMac) ||
@@ -513,7 +523,7 @@
//Whenever we get a scan request with multiple channels we break it up into 2 requests
//First request for first channel to scan and second request to scan remaining channels
- if (numChn > pMac->roam.configParam.nNumChanCombinedConc)
+ if ( numChn > nNumChanCombinedConc)
{
palZeroMemory(pMac->hHdd, &scanReq, sizeof(tCsrScanRequest));
@@ -546,14 +556,14 @@
scanReq.ChannelInfo.ChannelList = NULL;
}
- pChnInfo->numOfChannels = pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels - pMac->roam.configParam.nNumChanCombinedConc;
+ pChnInfo->numOfChannels = pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels - nNumChanCombinedConc;
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_WARN,
FL(" &channelToScan %p pScanCmd(%p) pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList(%p)numChn(%d)"),
&channelToScan[0], pScanCmd,
pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList, numChn);
- palCopyMemory(pMac->hHdd, &channelToScan[0], &pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList[pMac->roam.configParam.nNumChanCombinedConc],
+ palCopyMemory(pMac->hHdd, &channelToScan[0], &pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList[nNumChanCombinedConc],
pChnInfo->numOfChannels * sizeof(tANI_U8));
pChnInfo->ChannelList = &channelToScan[0];
@@ -590,7 +600,7 @@
/* setup the command to scan 2 channels */
pSendScanCmd = pScanCmd;
- pSendScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels = pMac->roam.configParam.nNumChanCombinedConc;
+ pSendScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels = nNumChanCombinedConc;
pSendScanCmd->u.scanCmd.u.scanRequest.BSSType = eCSR_BSS_TYPE_ANY;
pSendScanCmd->u.scanCmd.u.scanRequest.scanType = eSIR_ACTIVE_SCAN;
//Use concurrency values for min/maxChnTime.
@@ -5831,6 +5841,7 @@
tCsrScanRequest scanReq;
tSmeCmd *pSendScanCmd = NULL;
tANI_U8 numChn = 0;
+ tANI_U8 nNumChanCombinedConc = 0;
tANI_U8 i, j;
tCsrChannelInfo *pChnInfo = &scanReq.ChannelInfo;
tANI_U8 channelToScan[WNI_CFG_VALID_CHANNEL_LIST_LEN];
@@ -5854,7 +5865,18 @@
* the scan is delaying the time it takes for LFR to find
* candidates and resulting in disconnects.
*/
- if ( (numChn > pMac->roam.configParam.nNumChanCombinedConc) &&
+
+ if((csrIsStaSessionConnected(pMac) &&
+ !csrIsP2pSessionConnected(pMac)))
+ {
+ nNumChanCombinedConc = pMac->roam.configParam.nNumStaChanCombinedConc;
+ }
+ else if(csrIsP2pSessionConnected(pMac))
+ {
+ nNumChanCombinedConc = pMac->roam.configParam.nNumP2PChanCombinedConc;
+ }
+
+ if ( (numChn > nNumChanCombinedConc) &&
((csrIsStaSessionConnected(pMac) &&
#ifdef FEATURE_WLAN_LFR
(csrIsConcurrentInfraConnected(pMac) ||
@@ -5891,18 +5913,18 @@
scanReq.ChannelInfo.ChannelList = NULL;
}
- pChnInfo->numOfChannels = pMac->roam.configParam.nNumChanCombinedConc;
+ pChnInfo->numOfChannels = nNumChanCombinedConc;
palCopyMemory(pMac->hHdd, &channelToScan[0], &pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList[0],
pChnInfo->numOfChannels * sizeof(tANI_U8)); //just send one channel
pChnInfo->ChannelList = &channelToScan[0];
- for (i = 0, j = pMac->roam.configParam.nNumChanCombinedConc; i < (numChn-pMac->roam.configParam.nNumChanCombinedConc); i++, j++)
+ for (i = 0, j = nNumChanCombinedConc; i < (numChn-nNumChanCombinedConc); i++, j++)
{
pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList[i] =
pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.ChannelList[j]; //Move all the channels one step
}
- pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels = numChn - pMac->roam.configParam.nNumChanCombinedConc; //reduce outstanding # of channels to be scanned
+ pScanCmd->u.scanCmd.u.scanRequest.ChannelInfo.numOfChannels = numChn - nNumChanCombinedConc; //reduce outstanding # of channels to be scanned
scanReq.BSSType = eCSR_BSS_TYPE_ANY;
//Modify callers parameters in case of concurrency
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index 2a02e3f..1a8d5cf 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -76,7 +76,8 @@
#define CSR_REST_TIME_CONC 100
-#define CSR_NUM_CHAN_COMBINED_CONC 1
+#define CSR_NUM_STA_CHAN_COMBINED_CONC 3
+#define CSR_NUM_P2P_CHAN_COMBINED_CONC 1
#endif
#define CSR_MAX_NUM_SUPPORTED_CHANNELS 55