diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h
index 716f9e2..bd51bcd 100644
--- a/CORE/MAC/inc/aniGlobal.h
+++ b/CORE/MAC/inc/aniGlobal.h
@@ -282,6 +282,7 @@
     tANI_U8               gLim24Band11dScanDone;
     tANI_U8               gLim50Band11dScanDone;
     tANI_U8               gLimReturnUniqueResults;
+    tANI_U8               gSeparateProbeBeacon;
 
     // Background Scan related globals on STA
     tANI_U32               gLimNumOfBackgroundScanSuccess;
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 78eaa9e..b5a617e 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -1035,6 +1035,8 @@
     tANI_BOOLEAN         p2pSearch;
     tANI_BOOLEAN         skipDfsChnlInP2pSearch;
 #endif
+    tANI_U8              separateProbeBeacon; //If set to 1, PE scan cache to have separate entry for probe rsp & beacon for same BSSID
+
     tANI_U16             uIEFieldLen;
     tANI_U16             uIEFieldOffset;
 
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 9a0fd9d..4f46e97 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -87,6 +87,7 @@
     pMac->lim.gLim24Band11dScanDone = 0;
     pMac->lim.gLim50Band11dScanDone = 0;
     pMac->lim.gLimReturnUniqueResults = 0;
+    pMac->lim.gSeparateProbeBeacon = false;
 
     // Background Scan related globals on STA
     pMac->lim.gLimNumOfBackgroundScanSuccess = 0;
@@ -640,6 +641,7 @@
       // By default return unique scan results
       pMac->lim.gLimReturnUniqueResults = true;
       pMac->lim.gLimSmeScanResultLength = 0;
+      pMac->lim.gSeparateProbeBeacon = false;
    }
    else
    {
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 7ade82a..3392ad5 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -377,6 +377,7 @@
 
         /// By default return unique scan results
         pMac->lim.gLimReturnUniqueResults = true;
+        pMac->lim.gSeparateProbeBeacon = false;
         pMac->lim.gLimSmeScanResultLength = 0;
 
 #if defined(ANI_PRODUCT_TYPE_CLIENT) || defined(ANI_AP_CLIENT_SDK)
@@ -1179,6 +1180,9 @@
 
         pMac->lim.gLimReturnUniqueResults   =
               ((pScanReq->returnUniqueResults) > 0 ? true : false);
+
+        pMac->lim.gSeparateProbeBeacon = ((pScanReq->separateProbeBeacon) > 0 ? true : false);
+
         /* De-activate Heartbeat timers for connected sessions while
          * scan is in progress if the system is in Active mode */
         if((ePMM_STATE_BMPS_WAKEUP == pMac->pmm.gPmmState) ||
diff --git a/CORE/MAC/src/pe/lim/limScanResultUtils.c b/CORE/MAC/src/pe/lim/limScanResultUtils.c
index 511c1f1..06d1a88 100644
--- a/CORE/MAC/src/pe/lim/limScanResultUtils.c
+++ b/CORE/MAC/src/pe/lim/limScanResultUtils.c
@@ -622,8 +622,9 @@
 limLookupNaddHashEntry(tpAniSirGlobal pMac,
                        tLimScanResultNode *pBssDescr, tANI_U8 action)
 {
-    tANI_U8                  index, ssidLen = 0;
-    tANI_U8                found = false;
+    tANI_U8 index, ssidLen = 0;
+    tANI_U8 found = false;
+    tANI_U8 continueSearch = false;
     tLimScanResultNode *ptemp, *pprev;
     tSirMacCapabilityInfo *pSirCap, *pSirCapTemp;
     int idx, len;
@@ -698,18 +699,35 @@
                 }
 
                 // Delete this entry
-                if (ptemp == pMac->lim.gLimCachedScanHashTable[index])
-                    pprev = pMac->lim.gLimCachedScanHashTable[index] = ptemp->next;
+                // Delete this entry, if we don't want to keep separate entries for
+                // beacon & probe rsp
+                if(pMac->lim.gSeparateProbeBeacon && 
+                   (pBssDescr->bssDescription.fProbeRsp != ptemp->bssDescription.fProbeRsp))
+                {
+                    continueSearch = true;
+                }
                 else
-                    pprev->next = ptemp->next;
+                {
+                    if (ptemp == pMac->lim.gLimCachedScanHashTable[index]) {
+                        pprev = pMac->lim.gLimCachedScanHashTable[index] = ptemp->next;
+                    } else {
+                        pprev->next = ptemp->next;
+                    }
 
-                pMac->lim.gLimMlmScanResultLength -=
-                    ptemp->bssDescription.length + sizeof(tANI_U16);
+                    pMac->lim.gLimMlmScanResultLength -=
+                        ptemp->bssDescription.length + sizeof(tANI_U16);
 
-                palFreeMemory( pMac->hHdd, (tANI_U8 *) ptemp);
+                    palFreeMemory( pMac->hHdd, (tANI_U8 *) ptemp);
+                    continueSearch = false;
+                }
             }
-            found = true;
-            break;
+
+            // lets see if there are other entries in the list which can match
+            if(false == continueSearch)
+            {
+                found = true;
+                break;
+            }
         }
     }
 
diff --git a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
index 3aa403b..e432fa5 100644
--- a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
@@ -797,6 +797,8 @@
         PELOG2(limLog(pMac, LOG2, FL("statusCode : eSIR_SME_SUCCESS\n"));)
     }
 
+    //reset the flag, to be set again by new scan request from SME
+    pMac->lim.gSeparateProbeBeacon = false;
     return;
 
 } /*** end limSendSmeScanRsp() ***/
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 504f9dc..65ba29d 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -607,7 +607,7 @@
 {
     tScanProfile scanProfile;
     tANI_U32 nextScanID;
-    tDblLinkList scanResultList;
+    tDblLinkList scanResultList[CSR_ROAM_SESSION_MAX];
     tDblLinkList tempScanResults;
     tANI_BOOLEAN fScanEnable;
     tANI_BOOLEAN fFullScanIssued;
@@ -1033,6 +1033,7 @@
 tANI_BOOLEAN csrIsConnStateDisconnectedWds( tpAniSirGlobal pMac, tANI_U32 sessionId );
 tANI_BOOLEAN csrIsAnySessionInConnectState( tpAniSirGlobal pMac );
 tANI_BOOLEAN csrIsAllSessionDisconnected( tpAniSirGlobal pMac );
+tANI_BOOLEAN csrIsAnySessionConnected( tpAniSirGlobal pMac );
 tANI_BOOLEAN csrIsInfraConnected( tpAniSirGlobal pMac );
 tANI_BOOLEAN csrIsConcurrentInfraConnected( tpAniSirGlobal pMac );
 tANI_BOOLEAN csrIsConcurrentSessionRunning( tpAniSirGlobal pMac );
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index fdd7f12..426026a 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -138,6 +138,7 @@
     tANI_U8 fUniqueResult;
     tANI_U8 freshScan;
     tANI_U8 hiddenSsid;
+    tANI_U8 separateProbeBeacon; //If set to 1, PE scan cache to have separate entry for probe rsp & beacon for same BSSID
     tANI_U8 reserved;
 }tScanReqParam;
 
@@ -219,13 +220,13 @@
 eHalStatus csrScanHandleFailedLostlink1(tpAniSirGlobal pMac, tANI_U32 sessionId);
 eHalStatus csrScanHandleFailedLostlink2(tpAniSirGlobal pMac, tANI_U32 sessionId);
 eHalStatus csrScanHandleFailedLostlink3(tpAniSirGlobal pMac, tANI_U32 sessionId);
-tCsrScanResult *csrScanAppendBssDescription( tpAniSirGlobal pMac, 
+tCsrScanResult *csrScanAppendBssDescription( tpAniSirGlobal pMac, tANI_U32 sessionId, 
                                              tSirBssDescription *pSirBssDescription,
                                              tDot11fBeaconIEs *pIes);
 void csrScanCallCallback(tpAniSirGlobal pMac, tSmeCmd *pCommand, eCsrScanStatus scanStatus);
 eHalStatus csrScanCopyRequest(tpAniSirGlobal pMac, tCsrScanRequest *pDstReq, tCsrScanRequest *pSrcReq);
 eHalStatus csrScanFreeRequest(tpAniSirGlobal pMac, tCsrScanRequest *pReq);
-eHalStatus csrScanCopyResultList(tpAniSirGlobal pMac, tScanResultHandle hIn, tScanResultHandle *phResult);
+eHalStatus csrScanCopyResultList(tpAniSirGlobal pMac, tANI_U32 sessionId, tScanResultHandle hIn, tScanResultHandle *phResult);
 void csrInitBGScanChannelList(tpAniSirGlobal pMac);
 eHalStatus csrScanForSSID(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile, tANI_U32 roamId);
 eHalStatus csrScanForCapabilityChange(tpAniSirGlobal pMac, tSirSmeApNewCaps *pNewCaps);
@@ -257,13 +258,13 @@
 //The logic is that whenever CSR add a BSS to scan result, it set the age count to
 //a value. This function deduct the age count if channelId matches the BSS' channelId
 //The BSS is remove if the count reaches 0.
-eHalStatus csrScanAgeResults(tpAniSirGlobal pMac, tSmeGetScanChnRsp *pScanChnInfo);
+eHalStatus csrScanAgeResults(tpAniSirGlobal pMac, tANI_U32 sessionId, tSmeGetScanChnRsp *pScanChnInfo);
 
 //If fForce is TRUE we will save the new String that is learn't.
 //Typically it will be true in case of Join or user initiated ioctl
 tANI_BOOLEAN csrLearnCountryInformation( tpAniSirGlobal pMac, tSirBssDescription *pSirBssDesc,
                                          tDot11fBeaconIEs *pIes, tANI_BOOLEAN fForce );
-void csrApplyCountryInformation( tpAniSirGlobal pMac, tANI_BOOLEAN fForce );
+void csrApplyCountryInformation( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_BOOLEAN fForce );
 void csrSetCfgScanControlList( tpAniSirGlobal pMac, tANI_U8 *countryCode, tCsrChannel *pChannelList  );
 void csrReinitScanCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
 void csrFreeScanResultEntry( tpAniSirGlobal pMac, tCsrScanResult *pResult );
@@ -358,7 +359,7 @@
 void csrAssignRssiForCategory(tpAniSirGlobal pMac, tANI_U8 catOffset);
 tANI_BOOLEAN csrIsMacAddressZero( tpAniSirGlobal pMac, tCsrBssid *pMacAddr );
 tANI_BOOLEAN csrIsMacAddressBroadcast( tpAniSirGlobal pMac, tCsrBssid *pMacAddr );
-eHalStatus csrRoamRemoveConnectedBssFromScanCache(tpAniSirGlobal pMac, tCsrRoamConnectedProfile *pConnProfile);
+eHalStatus csrRoamRemoveConnectedBssFromScanCache(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamConnectedProfile *pConnProfile);
 eHalStatus csrRoamStartRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamingReason roamingReason);
 //return a boolean to indicate whether roaming completed or continue.
 tANI_BOOLEAN csrRoamCompleteRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId,
@@ -439,14 +440,14 @@
     \param phResult - an object for the result.
     \return eHalStatus     
   -------------------------------------------------------------------------------*/
-eHalStatus csrScanGetResult(tpAniSirGlobal, tCsrScanResultFilter *pFilter, tScanResultHandle *phResult);
+eHalStatus csrScanGetResult(tpAniSirGlobal, tANI_U32 sessionId, tCsrScanResultFilter *pFilter, tScanResultHandle *phResult);
 
 /* ---------------------------------------------------------------------------
     \fn csrScanFlushResult
     \brief Clear scan results.
     \return eHalStatus     
   -------------------------------------------------------------------------------*/
-eHalStatus csrScanFlushResult(tpAniSirGlobal);
+eHalStatus csrScanFlushResult(tpAniSirGlobal, tANI_U32 sessionId);
 
 /* ---------------------------------------------------------------------------
     \fn csrScanBGScanGetParam
diff --git a/CORE/SME/src/p2p/p2p_Api.c b/CORE/SME/src/p2p/p2p_Api.c
index 8b45b1d..3776ffd 100644
--- a/CORE/SME/src/p2p/p2p_Api.c
+++ b/CORE/SME/src/p2p/p2p_Api.c
@@ -1256,7 +1256,7 @@
       filter.bWPSAssociation = TRUE;
       filter.BSSType = eCSR_BSS_TYPE_ANY;
 
-      status = csrScanGetResult(pMac, &filter, &hScanResult);
+      status = csrScanGetResult(pMac, pP2pContext->SMEsessionId, &filter, &hScanResult);
 
       if (hScanResult)
       {
@@ -1298,7 +1298,7 @@
             filter.SSIDs.SSIDList->SSID.length = ssIdLen;
             vos_mem_copy(&filter.SSIDs.SSIDList[0].SSID.ssId, &ssId, ssIdLen);
             filter.SSIDs.numOfSSIDs = 1;
-            status = csrScanGetResult(pMac, &filter, &hScanResult);
+            status = csrScanGetResult(pMac, pP2pContext->SMEsessionId, &filter, &hScanResult);
             if (hScanResult)
             {
                pScanResult = csrScanResultGetFirst(pMac, hScanResult );
@@ -1852,7 +1852,7 @@
             }
          }//if(NULL != pDeviceFilters)
 
-         status = csrScanGetResult(pMac, &filter, &hScanResult);
+         status = csrScanGetResult(pMac, SessionID, &filter, &hScanResult);
          if (hScanResult)
          {
             VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, 
@@ -2162,12 +2162,13 @@
 {
    eHalStatus status = eHAL_STATUS_FAILURE;
    tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
+   tp2pContext *pP2pContext = &pMac->p2pContext[HDDSessionId];
 
    smsLog(pMac, LOG2, FL("enter"));
    status = sme_AcquireGlobalLock( &pMac->sme );
    if ( HAL_STATUS_SUCCESS( status ) )
    {
-      status = p2pPurgeDeviceList(pMac, &pMac->scan.scanResultList);
+      status = p2pPurgeDeviceList(pMac, &pMac->scan.scanResultList[pP2pContext->SMEsessionId]);
       sme_ReleaseGlobalLock( &pMac->sme );
    }
 
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 1538df4..2950024 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -1932,7 +1932,7 @@
    status = sme_AcquireGlobalLock( &pMac->sme );
    if ( HAL_STATUS_SUCCESS( status ) )
    {
-       status = csrScanGetResult( hHal, pFilter, phResult );
+       status = csrScanGetResult( pMac, sessionId, pFilter, phResult );
        sme_ReleaseGlobalLock( &pMac->sme );
    }
    smsLog(pMac, LOG2, FL("exit status %d"), status);
@@ -1955,7 +1955,7 @@
    status = sme_AcquireGlobalLock( &pMac->sme );
    if ( HAL_STATUS_SUCCESS( status ) )
    {
-       status = csrScanFlushResult( hHal );
+       status = csrScanFlushResult( hHal, sessionId );
        sme_ReleaseGlobalLock( &pMac->sme );
    }
 
@@ -5976,7 +5976,8 @@
     if i don't do this than I still get old ap's (of different country code) as available (even if they are powered off). 
     Looks like a bug in current scan sequence. 
    */
-   csrScanFlushResult(pMac);
+   //Is it ok to assume infra session here - TBD
+   csrScanFlushResult(pMac, 0);
 
    /* overwrite the defualt country code */
    palCopyMemory(pMac->hHdd, pMac->scan.countryCodeDefault, pMac->scan.countryCodeCurrent, WNI_CFG_COUNTRY_CODE_LEN);
