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) )
     {