wlan: Support for NProbes, Home away time and Reassoc
This change has support for NProbes, Scan home away
time and HDD/SME level change for reassoc command
Change-Id: I0c050b4e67ca806b405c68c04d6b99e951dc4c5f
CRs-Fixed: 481935
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index f23af70..26bf344 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -1547,6 +1547,8 @@
pMac->roam.configParam.nRoamPrefer5GHz = pParam->nRoamPrefer5GHz;
pMac->roam.configParam.nRoamIntraBand = pParam->nRoamIntraBand;
pMac->roam.configParam.isWESModeEnabled = pParam->isWESModeEnabled;
+ pMac->roam.configParam.nProbes = pParam->nProbes;
+ pMac->roam.configParam.nRoamScanHomeAwayTime = pParam->nRoamScanHomeAwayTime;
#endif
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
pMac->roam.configParam.isRoamOffloadScanEnabled = pParam->isRoamOffloadScanEnabled;
@@ -14590,6 +14592,7 @@
tCsrRoamSession *pSession;
tANI_U8 i,num_channels = 0, ucDot11Mode;
tANI_U8 *ChannelList = NULL;
+ tANI_U8 MaxDwellPeriod;
tANI_U32 sessionId;
eHalStatus status = eHAL_STATUS_SUCCESS;
tpCsrChannelInfo currChannelListInfo;
@@ -14768,8 +14771,31 @@
}
pRequestBuf->ValidChannelCount = num_channels;
}
- pRequestBuf->MDID.mdiePresent = pMac->roam.roamSession[sessionId].connectedProfile.MDID.mdiePresent;
- pRequestBuf->MDID.mobilityDomain = pMac->roam.roamSession[sessionId].connectedProfile.MDID.mobilityDomain;
+ pRequestBuf->MDID.mdiePresent =
+ 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,
+ * Home Away Time is atleast equal to (MaxDwellPeriod +
+ * (2*SRF)), where SRF is the RF Switching time.The RF
+ * switching time is considered twice to consider the
+ * time to go off channel and return to the home channel.*/
+ MaxDwellPeriod = pRequestBuf->NeighborScanChannelMaxTime/pRequestBuf->nProbes;
+ if(MaxDwellPeriod < 1)
+ MaxDwellPeriod = 1;
+ if(pMac->roam.configParam.nRoamScanHomeAwayTime <
+ (MaxDwellPeriod + (2 * SIR_ROAM_SCAN_CHANNEL_SWITCH_TIME)))
+ {
+ pRequestBuf->HomeAwayTime = MaxDwellPeriod + (2 * SIR_ROAM_SCAN_CHANNEL_SWITCH_TIME);
+ } else {
+ pRequestBuf->HomeAwayTime = pMac->roam.configParam.nRoamScanHomeAwayTime;
+ }
/*Prepare a probe request for 2.4GHz band and one for 5GHz band*/
ucDot11Mode = (tANI_U8) csrTranslateToWNICfgDot11Mode(pMac,
csrFindBestPhyMode( pMac, pMac->roam.configParam.phyMode ));
@@ -14778,12 +14804,12 @@
csrRoamScanOffloadPrepareProbeReqTemplate(pMac,SIR_ROAM_SCAN_5G_DEFAULT_CH, ucDot11Mode, pSession->selfMacAddr,
pRequestBuf->p5GProbeTemplate, &pRequestBuf->us5GProbeTemplateLen);
- msg.type = WDA_START_ROAM_CANDIDATE_LOOKUP_REQ;
+ msg.type = WDA_ROAM_SCAN_OFFLOAD_REQ;
msg.reserved = 0;
msg.bodyptr = pRequestBuf;
if (!VOS_IS_STATUS_SUCCESS(vos_mq_post_message(VOS_MODULE_ID_WDA, &msg)))
{
- VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s: Not able to post WDA_START_ROAM_CANDIDATE_LOOKUP_REQ message to WDA", __func__);
+ VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s: Not able to post WDA_ROAM_SCAN_OFFLOAD_REQ message to WDA", __func__);
vos_mem_free(pRequestBuf);
return eHAL_STATUS_FAILURE;
}