SCAN-OFFLOAD: Changes required to process the scan results.
Changes required to process the probe response and beacons frames
when scan offload is enabled.
Change-Id: I5e94f2dd823c8c442100831c5c19d01753de80a6
CRs-fixed: 500914
diff --git a/CORE/MAC/src/pe/lim/limProcessProbeRspFrame.c b/CORE/MAC/src/pe/lim/limProcessProbeRspFrame.c
index ab82179..f4756a9 100644
--- a/CORE/MAC/src/pe/lim/limProcessProbeRspFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessProbeRspFrame.c
@@ -135,11 +135,15 @@
WDA_GET_RX_MPDU_LEN(pRxPacketInfo));
limPrintMacAddr(pMac, pHdr->sa, LOG2);)
- if (limDeactivateMinChannelTimerDuringScan(pMac) != eSIR_SUCCESS)
+ if (!pMac->fScanOffload)
{
- palFreeMemory(pMac->hHdd, pProbeRsp);
- return;
+ if (limDeactivateMinChannelTimerDuringScan(pMac) != eSIR_SUCCESS)
+ {
+ palFreeMemory(pMac->hHdd, pProbeRsp);
+ return;
+ }
}
+
// Validate IE information before processing Probe Response Frame
if (limValidateIEInformationInProbeRspFrame(pRxPacketInfo) != eSIR_SUCCESS)
{
@@ -165,14 +169,16 @@
*
* Ignore Probe Response frame in all other states
*/
- // TO SUPPORT BT-AMP
+ /* */
+ // TO SUPPORT BT-AMP
if (((pMac->lim.gLimMlmState == eLIM_MLM_WT_PROBE_RESP_STATE) || //mlm state check should be global - 18th oct
(pMac->lim.gLimMlmState == eLIM_MLM_PASSIVE_SCAN_STATE) || //mlm state check should be global - 18th oct
(pMac->lim.gLimMlmState == eLIM_MLM_LEARN_STATE) || //mlm state check should be global - 18th oct
(psessionEntry->limMlmState == eLIM_MLM_WT_JOIN_BEACON_STATE) ||
(psessionEntry->limMlmState == eLIM_MLM_LINK_ESTABLISHED_STATE) )||
((GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_STA_IN_IBSS_ROLE) &&
- (psessionEntry->limMlmState == eLIM_MLM_BSS_STARTED_STATE)))
+ (psessionEntry->limMlmState == eLIM_MLM_BSS_STARTED_STATE)) ||
+ pMac->fScanOffload)
{
frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
@@ -196,7 +202,14 @@
palFreeMemory(pMac->hHdd, pProbeRsp);
return;
}
- //To Support BT-AMP
+
+ if (pMac->fScanOffload)
+ {
+ limCheckAndAddBssDescription(pMac, pProbeRsp, pRxPacketInfo,
+ eANI_BOOLEAN_FALSE, eANI_BOOLEAN_TRUE);
+ }
+
+ //To Support BT-AMP
if ((pMac->lim.gLimMlmState == eLIM_MLM_WT_PROBE_RESP_STATE) || //mlm state check should be global - 18th oct
(pMac->lim.gLimMlmState == eLIM_MLM_PASSIVE_SCAN_STATE))
limCheckAndAddBssDescription(pMac, pProbeRsp, pRxPacketInfo,
@@ -370,11 +383,14 @@
WDA_GET_ROAMCANDIDATEIND(pRxPacketInfo)))
{
#endif
- if (limDeactivateMinChannelTimerDuringScan(pMac) != eSIR_SUCCESS)
- {
- palFreeMemory(pMac->hHdd, pProbeRsp);
- return;
- }
+ if (!pMac->fScanOffload)
+ {
+ if (limDeactivateMinChannelTimerDuringScan(pMac) != eSIR_SUCCESS)
+ {
+ palFreeMemory(pMac->hHdd, pProbeRsp);
+ return;
+ }
+ }
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
}
#endif
@@ -424,7 +440,25 @@
}
else
#endif
- if( (pMac->lim.gLimMlmState == eLIM_MLM_WT_PROBE_RESP_STATE) ||
+ if (pMac->fScanOffload)
+ {
+ frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
+
+ // Get pointer to Probe Response frame body
+ pBody = WDA_GET_RX_MPDU_DATA(pRxPacketInfo);
+
+ if (sirConvertProbeFrame2Struct(pMac, pBody, frameLen, pProbeRsp)
+ == eSIR_FAILURE)
+ {
+ limLog(pMac, LOG1,
+ FL("Parse error ProbeResponse, length=%d\n"), frameLen);
+ palFreeMemory(pMac->hHdd, pProbeRsp);
+ return;
+ }
+ limCheckAndAddBssDescription(pMac, pProbeRsp, pRxPacketInfo,
+ eANI_BOOLEAN_FALSE, eANI_BOOLEAN_TRUE);
+ }
+ else if( (pMac->lim.gLimMlmState == eLIM_MLM_WT_PROBE_RESP_STATE) ||
(pMac->lim.gLimMlmState == eLIM_MLM_PASSIVE_SCAN_STATE) || //mlm state check should be global - 18th oct
(pMac->lim.gLimMlmState == eLIM_MLM_LEARN_STATE) )
{