diff options
23 files changed, 397 insertions, 614 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 5d687d4a6690..c814ce07967c 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -4767,7 +4767,8 @@ typedef struct sSirSmeRoamOffloadSynchInd tANI_U8 kck[SIR_KCK_KEY_LEN]; tANI_U8 kek[SIR_KEK_KEY_LEN]; tANI_U8 replay_ctr[SIR_REPLAY_CTR_LEN]; -} tSirSmeRoamOffloadSynchInd, *tpSirSmeRoamOffloadSynchInd; + tpSirBssDescription pbssDescription; +} tSirRoamOffloadSynchInd, *tpSirRoamOffloadSynchInd; typedef struct sSirSmeRoamOffloadSynchCnf { diff --git a/CORE/MAC/inc/wniApi.h b/CORE/MAC/inc/wniApi.h index 66ac55ecd6b4..2976a0783b88 100644 --- a/CORE/MAC/inc/wniApi.h +++ b/CORE/MAC/inc/wniApi.h @@ -373,10 +373,6 @@ enum eWniMsgTypes #endif #ifdef WLAN_FEATURE_ROAM_OFFLOAD eWNI_SME_ROAM_OFFLOAD_SYNCH_IND, /* Roam Synch Indication from WMA to SME*/ - eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND,/* Hand over the Roam Synch Indication - from SME to PE*/ - eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP,/* Roam Synch Indication Rsp - from PE toSME */ eWNI_SME_HO_FAIL_IND, /* Hand Off Failure Ind from WMA to SME */ #endif #ifdef WLAN_FEATURE_NAN diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h index b61c8cb4e88f..490798933dfb 100644 --- a/CORE/MAC/src/include/sirParams.h +++ b/CORE/MAC/src/include/sirParams.h @@ -661,6 +661,10 @@ typedef struct sSirMbMsgP2p #endif /* DHCP_SERVER_OFFLOAD */ #define SIR_HAL_LED_FLASHING_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 293) +#ifdef WLAN_FEATURE_ROAM_OFFLOAD +#define SIR_HAL_ROAM_OFFLOAD_SYNCH_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 294) +#endif + #define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF) // CFG message types diff --git a/CORE/MAC/src/pe/include/limApi.h b/CORE/MAC/src/pe/include/limApi.h index d004f2736ad7..bb8963da8839 100644 --- a/CORE/MAC/src/pe/include/limApi.h +++ b/CORE/MAC/src/pe/include/limApi.h @@ -167,6 +167,9 @@ void limSendHeartBeatTimeoutInd(tpAniSirGlobal pMac, tpPESession psessionEntry); tMgmtFrmDropReason limIsPktCandidateForDrop(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tANI_U32 subType); void limMicFailureInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg); +#ifdef WLAN_FEATURE_ROAM_OFFLOAD +void limRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg); +#endif /* ----------------------------------------------------------------------- */ // These used to be in DPH extern void limGetMyMacAddr(tpAniSirGlobal pMac, tANI_U8 *mac); diff --git a/CORE/MAC/src/pe/include/limFT.h b/CORE/MAC/src/pe/include/limFT.h index 2bfe5d8d16bc..1f81bf8d293f 100644 --- a/CORE/MAC/src/pe/include/limFT.h +++ b/CORE/MAC/src/pe/include/limFT.h @@ -63,13 +63,14 @@ void limHandleFTPreAuthRsp(tpAniSirGlobal pMac, tSirRetStatus status, void limProcessMlmFTReassocReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf, tpPESession psessionEntry); void limProcessFTPreauthRspTimeout(tpAniSirGlobal pMac); - +void limFillFTSession(tpAniSirGlobal pMac, tpSirBssDescription pbssDescription, + tpPESession pftSessionEntry, tpPESession psessionEntry); +tSirRetStatus limFTPrepareAddBssReq(tpAniSirGlobal pMac, tANI_U8 updateEntry, + tpPESession pftSessionEntry, + tpSirBssDescription bssDescription); tANI_BOOLEAN limProcessFTUpdateKey(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf ); tSirRetStatus limProcessFTAggrQosReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf ); void limProcessFTAggrQoSRsp(tpAniSirGlobal pMac, tpSirMsgQ limMsg); -#ifdef WLAN_FEATURE_ROAM_OFFLOAD -void limProcessFTRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg); -#endif void limFTCleanupAllFTSessions(tpAniSirGlobal pMac); #endif /* __LIMFT_H__ */ diff --git a/CORE/MAC/src/pe/include/limFTDefs.h b/CORE/MAC/src/pe/include/limFTDefs.h index 183f219781be..d6a5afb40faf 100644 --- a/CORE/MAC/src/pe/include/limFTDefs.h +++ b/CORE/MAC/src/pe/include/limFTDefs.h @@ -128,32 +128,6 @@ typedef struct sFTPEContext tANI_BOOLEAN ftPreAuthSession; } tftPEContext, *tpftPEContext; -#ifdef WLAN_FEATURE_ROAM_OFFLOAD -/*------------------------------------------------------------------------ - * FT Roam Offload Synch Indication SME->PE - * ----------------------------------------------------------------------- - * */ -typedef struct sSirFTRoamOffloadSynchInd -{ - tANI_U16 messageType; /* eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND */ - tANI_U16 length; - tSirMacAddr currbssId; - tpSirBssDescription pbssDescription; -} tSirFTRoamOffloadSynchInd, *tpSirFTRoamOffloadSynchInd; - -/*---------------------------------------------------------------------- - * FT Roam Offload Synch Response PE->SME - *---------------------------------------------------------------------- - */ -typedef struct sSirFTRoamOffloadSynchRsp -{ - tANI_U16 messageType; /* eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP */ - tANI_U16 length; - tANI_U8 sessionId; - tpSirBssDescription pbssDescription; -} tSirFTRoamOffloadSynchRsp, *tpSirFTRoamOffloadSynchRsp; -#endif - #endif /* __LIMFTDEFS_H__ */ #endif /* WLAN_FEATURE_VOWIFI_11R */ diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c index 5742ed31f1b5..996e6d4137de 100644 --- a/CORE/MAC/src/pe/lim/limApi.c +++ b/CORE/MAC/src/pe/lim/limApi.c @@ -73,6 +73,7 @@ #include <limFT.h> #include "vos_types.h" #include "vos_packet.h" +#include "vos_utils.h" #include "wlan_qct_tl.h" #include "sysStartup.h" @@ -1858,6 +1859,251 @@ void limPsOffloadHandleMissedBeaconInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg) return; } +#ifdef WLAN_FEATURE_ROAM_OFFLOAD +eHalStatus limRoamFillBssDescr(tpAniSirGlobal pMac, + tSirRoamOffloadSynchInd *pRoamOffloadSynchInd) +{ + v_U32_t uLen = 0; + tpSirProbeRespBeacon pParsedFrame; + tpSirMacMgmtHdr macHeader; + tANI_U8 *pBeaconProbeResp; + tSirBssDescription *pBssDescr = NULL; + + pBeaconProbeResp = (tANI_U8 *)pRoamOffloadSynchInd + + pRoamOffloadSynchInd->beaconProbeRespOffset; + macHeader = (tpSirMacMgmtHdr)pBeaconProbeResp; + pParsedFrame = + (tpSirProbeRespBeacon) vos_mem_malloc(sizeof(tSirProbeRespBeacon)); + if (NULL == pParsedFrame) + { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "%s: fail to allocate memory for frame",__func__); + return eHAL_STATUS_RESOURCES; + } + + if ( pRoamOffloadSynchInd->beaconProbeRespLength <= SIR_MAC_HDR_LEN_3A ) + { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "%s: Very few bytes in synchInd beacon / probe resp frame! length=%d", + __func__, pRoamOffloadSynchInd->beaconProbeRespLength); + vos_mem_free(pParsedFrame); + return eHAL_STATUS_FAILURE; + } + + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO,"LFR3: Beacon/Prb Rsp:"); + VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, + pBeaconProbeResp, pRoamOffloadSynchInd->beaconProbeRespLength); + if (pRoamOffloadSynchInd->isBeacon) { + if (sirParseBeaconIE(pMac, pParsedFrame, + &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET], + pRoamOffloadSynchInd->beaconProbeRespLength - + SIR_MAC_HDR_LEN_3A) != eSIR_SUCCESS || !pParsedFrame->ssidPresent) { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "Parse error Beacon, length=%d", + pRoamOffloadSynchInd->beaconProbeRespLength); + vos_mem_free(pParsedFrame); + return eHAL_STATUS_FAILURE; + } + } + else { + if (sirConvertProbeFrame2Struct(pMac, + &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A], + pRoamOffloadSynchInd->beaconProbeRespLength - SIR_MAC_HDR_LEN_3A, + pParsedFrame) != eSIR_SUCCESS || + !pParsedFrame->ssidPresent) { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "Parse error ProbeResponse, length=%d", + pRoamOffloadSynchInd->beaconProbeRespLength); + vos_mem_free(pParsedFrame); + return eHAL_STATUS_FAILURE; + } + } + /* 24 byte MAC header and 12 byte to ssid IE */ + if (pRoamOffloadSynchInd->beaconProbeRespLength > + (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET)) { + uLen = pRoamOffloadSynchInd->beaconProbeRespLength - + (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET); + } + pRoamOffloadSynchInd->pbssDescription = + vos_mem_malloc(sizeof (tSirBssDescription) + uLen); /*De-allocated in + csrProcessRoamOffloadSynchInd*/ + pBssDescr = pRoamOffloadSynchInd->pbssDescription; + if (NULL == pBssDescr) + { + PELOGE(limLog( pMac, LOGE, "LFR3:Failed to allocate memory");) + VOS_ASSERT(pBssDescr != NULL); + return eHAL_STATUS_RESOURCES; + } + vos_mem_zero(pBssDescr, sizeof(tSirBssDescription)); + /* Length of BSS desription is without length of + * length itself and length of pointer + * that holds the next BSS description + */ + pBssDescr->length = (tANI_U16)( + sizeof(tSirBssDescription) - sizeof(tANI_U16) - + sizeof(tANI_U32) + uLen); + if (pParsedFrame->dsParamsPresent) + { + pBssDescr->channelId = pParsedFrame->channelNumber; + } + else if (pParsedFrame->HTInfo.present) + { + pBssDescr->channelId = pParsedFrame->HTInfo.primaryChannel; + } + else + { + /*If DS Params or HTIE is not present in the probe resp or beacon, + * then use the channel frequency provided by firmware to fill the + * channel in the BSS descriptor.*/ + pBssDescr->channelId = vos_freq_to_chan(pRoamOffloadSynchInd->chan_freq); + } + pBssDescr->channelIdSelf = pBssDescr->channelId; + + if ((pBssDescr->channelId > 0) && (pBssDescr->channelId < 15)) + { + int i; + /* 11b or 11g packet + * 11g if extended Rate IE is present or + * if there is an A rate in suppRate IE */ + for (i = 0; i < pParsedFrame->supportedRates.numRates; i++) { + if (sirIsArate(pParsedFrame->supportedRates.rate[i] & 0x7f)) { + pBssDescr->nwType = eSIR_11G_NW_TYPE; + break; + } + } + if (pParsedFrame->extendedRatesPresent) { + pBssDescr->nwType = eSIR_11G_NW_TYPE; + } + } else { + /* 11a packet */ + pBssDescr->nwType = eSIR_11A_NW_TYPE; + } + + pBssDescr->sinr = 0; + pBssDescr->beaconInterval = pParsedFrame->beaconInterval; + pBssDescr->timeStamp[0] = pParsedFrame->timeStamp[0]; + pBssDescr->timeStamp[1] = pParsedFrame->timeStamp[1]; + vos_mem_copy(&pBssDescr->capabilityInfo, + &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_CAPAB_OFFSET], 2); + vos_mem_copy((tANI_U8 *) &pBssDescr->bssId, + (tANI_U8 *) macHeader->bssId, + sizeof(tSirMacAddr)); + pBssDescr->nReceivedTime = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd); + if(pParsedFrame->mdiePresent) { + pBssDescr->mdiePresent = pParsedFrame->mdiePresent; + vos_mem_copy((tANI_U8 *)pBssDescr->mdie, (tANI_U8 *)pParsedFrame->mdie, + SIR_MDIE_SIZE); + } + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "LFR3:%s:BssDescr Info:", __func__); + VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + pBssDescr->bssId, sizeof(tSirMacAddr)); + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "chan=%d, rssi=%d",pBssDescr->channelId,pBssDescr->rssi); + if (uLen) + { + vos_mem_copy(&pBssDescr->ieFields, + pBeaconProbeResp + (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET), + uLen); + } + vos_mem_free(pParsedFrame); + return eHAL_STATUS_SUCCESS; +} + +/** ----------------------------------------------------------------- + * brief limRoamOffloadSynchInd() - Handles Roam Synch Indication + * param pMac - global mac structure + * return - none + ----------------------------------------------------------------- */ +void limRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg) +{ + tpPESession psessionEntry; + tpPESession pftSessionEntry; + tANI_U8 sessionId; + tSirMsgQ mmhMsg; + tSirBssDescription *pbssDescription = NULL; + tpSirRoamOffloadSynchInd pRoamOffloadSynchInd = + (tpSirRoamOffloadSynchInd)pMsg->bodyptr; + + if (!pRoamOffloadSynchInd) { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "LFR3:%s:pRoamOffloadSynchInd is NULL", __func__); + return; + } + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "LFR3: Received WDA_ROAM_OFFLOAD_SYNCH_IND"); + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "LFR3:%s:authStatus=%d, vdevId=%d", __func__, + pRoamOffloadSynchInd->authStatus, + pRoamOffloadSynchInd->roamedVdevId); + VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + pRoamOffloadSynchInd->bssId,6); + psessionEntry = peFindSessionByBssIdx(pMac, + pRoamOffloadSynchInd->roamedVdevId); + if (psessionEntry == NULL) { + PELOGE(limLog( pMac, LOGE, + "%s: LFR3:Unable to find session", __func__);) + return; + } + /* Nothing to be done if the session is not in STA mode */ + if (eLIM_STA_ROLE != psessionEntry->limSystemRole) { + PELOGE(limLog(pMac, LOGE, FL("psessionEntry is not in STA mode"));) + return; + } + if (!HAL_STATUS_SUCCESS(limRoamFillBssDescr(pMac, + pRoamOffloadSynchInd))) { + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + "LFR3:%s:Failed to fill Bss Descr", __func__); + return; + } + pbssDescription = pRoamOffloadSynchInd->pbssDescription; + if((pftSessionEntry = peCreateSession(pMac, pbssDescription->bssId, + &sessionId, pMac->lim.maxStation, + eSIR_INFRASTRUCTURE_MODE)) == NULL) { + limLog(pMac, LOGE, FL("LFR3: Session Can not be created for new AP" + "during Roam Offload Synch")); + limPrintMacAddr( pMac, pbssDescription->bssId, LOGE ); + return; + } + pftSessionEntry->peSessionId = sessionId; + sirCopyMacAddr(pftSessionEntry->selfMacAddr, psessionEntry->selfMacAddr); + sirCopyMacAddr(pftSessionEntry->limReAssocbssId, pbssDescription->bssId); + pftSessionEntry->bssType = eSIR_INFRASTRUCTURE_MODE; + /*Set bRoamSynchInProgress here since this session is + * specific to roam synch indication. This flag will + * later be used to differentiate LFR3 with LFR2 in LIM + */ + pftSessionEntry->bRoamSynchInProgress = VOS_TRUE; + + if (pftSessionEntry->bssType == eSIR_INFRASTRUCTURE_MODE) + pftSessionEntry->limSystemRole = eLIM_STA_ROLE; + else { + limLog(pMac, LOGE, FL("LFR3:Invalid bss type")); + return; + } + pftSessionEntry->limPrevSmeState = pftSessionEntry->limSmeState; + pftSessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE; + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "LFR3:%s:created session (%p) with id = %d", + __func__, pftSessionEntry, pftSessionEntry->peSessionId); + /* Update the ReAssoc BSSID of the current session */ + sirCopyMacAddr(psessionEntry->limReAssocbssId, pbssDescription->bssId); + limPrintMacAddr(pMac, psessionEntry->limReAssocbssId, LOG2); + + /* Prepare the session right now with as much as possible */ + limFillFTSession(pMac, pbssDescription, pftSessionEntry, psessionEntry); + limFTPrepareAddBssReq( pMac, FALSE, pftSessionEntry, pbssDescription ); + mmhMsg.type = + pRoamOffloadSynchInd->messageType;/* eWNI_SME_ROAM_OFFLOAD_SYNCH_IND */ + mmhMsg.bodyptr = pRoamOffloadSynchInd; + mmhMsg.bodyval = 0; + + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "LFR3:%s:sending eWNI_SME_ROAM_OFFLOAD_SYNCH_IND", __func__); + limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT); +} + +#endif /** ----------------------------------------------------------------- \brief limMicFailureInd() - handles mic failure indication diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c index f09bcd087fe4..5bbcc81c8bc1 100644 --- a/CORE/MAC/src/pe/lim/limAssocUtils.c +++ b/CORE/MAC/src/pe/lim/limAssocUtils.c @@ -2837,8 +2837,9 @@ tSirRetStatus limAddFTStaSelf(tpAniSirGlobal pMac, tANI_U16 assocId, tpPESession msgQ.bodyval = 0; #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG - limLog(pMac, LOGE, - FL("Sending WDA_ADD_STA_REQ (aid %d)"), pAddStaParams->assocId); + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "%s: Sending WDA_ADD_STA_REQ (aid %d)", + __func__, pAddStaParams->assocId); #endif MTRACE(macTraceMsgTx(pMac, psessionEntry->peSessionId, msgQ.type)); diff --git a/CORE/MAC/src/pe/lim/limFT.c b/CORE/MAC/src/pe/lim/limFT.c index 34db4a4f408a..fa4bae49398c 100644 --- a/CORE/MAC/src/pe/lim/limFT.c +++ b/CORE/MAC/src/pe/lim/limFT.c @@ -1936,113 +1936,4 @@ limProcessFTAggrQosReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf ) return eSIR_SUCCESS; } -#ifdef WLAN_FEATURE_ROAM_OFFLOAD -/*------------------------------------------------------------------ - * - * This function handles the Roam Offload Synch Indication from SME - * - *------------------------------------------------------------------*/ -void limProcessFTRoamOffloadSynchInd(tpAniSirGlobal pMac, tpSirMsgQ pMsg) -{ - tpSirFTRoamOffloadSynchInd pFTRoamOffloadSynchInd; - tpPESession psessionEntry; - tpPESession pftSessionEntry; - tANI_U8 sessionId; - tpSirBssDescription pbssDescription; - tpSirFTRoamOffloadSynchRsp pFTRoamOffloadSynchRsp; - tSirMsgQ mmhMsg; - tANI_U16 rspLen = sizeof(tSirFTRoamOffloadSynchRsp); - - pFTRoamOffloadSynchInd = (tpSirFTRoamOffloadSynchInd)pMsg->bodyptr; - - psessionEntry = peFindSessionByBssid(pMac, - pFTRoamOffloadSynchInd->currbssId, - &sessionId); - if (psessionEntry == NULL) - { - PELOGE(limLog( pMac, LOGE, - "%s: LFR3:Unable to find session for the following bssid", __func__);) - limPrintMacAddr( pMac, pFTRoamOffloadSynchInd->currbssId, LOGE ); - return; - } - - /* Nothing to be done if the session is not in STA mode */ - if (eLIM_STA_ROLE != psessionEntry->limSystemRole) { -#if defined WLAN_FEATURE_VOWIFI_11R_DEBUG - PELOGE(limLog(pMac, LOGE, FL("psessionEntry is not in STA mode"));) -#endif - return; - } - - pbssDescription = pFTRoamOffloadSynchInd->pbssDescription; - if((pftSessionEntry = peCreateSession(pMac, pbssDescription->bssId, - &sessionId, pMac->lim.maxStation, - psessionEntry->bssType)) == NULL) - { - limLog(pMac, LOGE, FL("LFR3: Session Can not be created for new AP" - "during Roam Offload Synch")); - limPrintMacAddr( pMac, pbssDescription->bssId, LOGE ); - return; - } - pftSessionEntry->peSessionId = sessionId; - sirCopyMacAddr(pftSessionEntry->selfMacAddr, psessionEntry->selfMacAddr); - sirCopyMacAddr(pftSessionEntry->limReAssocbssId, pbssDescription->bssId); - pftSessionEntry->bssType = psessionEntry->bssType; - /*Set bRoamSynchInProgress here since this session is - * specific to roam synch indication. This flag will - * later be used to differentiate LFR3 with LFR2 in LIM - * */ - pftSessionEntry->bRoamSynchInProgress = VOS_TRUE; - - if (pftSessionEntry->bssType == eSIR_INFRASTRUCTURE_MODE) - { - pftSessionEntry->limSystemRole = eLIM_STA_ROLE; - } - else if(pftSessionEntry->bssType == eSIR_BTAMP_AP_MODE) - { - pftSessionEntry->limSystemRole = eLIM_BT_AMP_STA_ROLE; - } - else - { - limLog(pMac, LOGE, FL("LFR3:Invalid bss type")); - return; - } - pftSessionEntry->limPrevSmeState = pftSessionEntry->limSmeState; - pftSessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE; - VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, - "LFR3:%s:created session (%p) with id = %d", - __func__, pftSessionEntry, pftSessionEntry->peSessionId); - /* Update the ReAssoc BSSID of the current session */ - sirCopyMacAddr(psessionEntry->limReAssocbssId, pbssDescription->bssId); - limPrintMacAddr(pMac, psessionEntry->limReAssocbssId, LOG2); - - // Prepare the session right now with as much as possible. - limFillFTSession(pMac, pbssDescription, pftSessionEntry, psessionEntry); - - limFTPrepareAddBssReq( pMac, FALSE, pftSessionEntry, pbssDescription ); - - pFTRoamOffloadSynchRsp = vos_mem_malloc(rspLen); - if (NULL == pFTRoamOffloadSynchRsp) - { - PELOGE(limLog( pMac, LOGE, "LFR3:Failed to allocate memory");) - VOS_ASSERT(pFTRoamOffloadSynchRsp != NULL); - return; - } - vos_mem_zero(pFTRoamOffloadSynchRsp, rspLen); - - pFTRoamOffloadSynchRsp->messageType = eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP; - pFTRoamOffloadSynchRsp->length = (tANI_U16) rspLen; - pFTRoamOffloadSynchRsp->sessionId = psessionEntry->smeSessionId; - pFTRoamOffloadSynchRsp->pbssDescription = pbssDescription; - - mmhMsg.type = pFTRoamOffloadSynchRsp->messageType; - mmhMsg.bodyptr = pFTRoamOffloadSynchRsp; - mmhMsg.bodyval = 0; - - PELOGE(limLog(pMac,LOG1, "LFR3:%s:sending FT Roam Offload Sync Rsp to SME", - __func__);) - limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT); -} -#endif - #endif /* WLAN_FEATURE_VOWIFI_11R */ diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c index 8405d2dbceb6..64c3606e145b 100644 --- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c +++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c @@ -1361,9 +1361,6 @@ limProcessMessages(tpAniSirGlobal pMac, tpSirMsgQ limMsg) #if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD) case eWNI_SME_GET_TSM_STATS_REQ: #endif /* FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */ -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - case eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND: -#endif /* FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */ // These messages are from HDD limProcessNormalHddMsg(pMac, limMsg, false); //no need to response to hdd break; @@ -1569,6 +1566,13 @@ limProcessMessages(tpAniSirGlobal pMac, tpSirMsgQ limMsg) vos_mem_free(limMsg->bodyptr); limMsg->bodyptr = NULL; break; +#ifdef WLAN_FEATURE_ROAM_OFFLOAD + case WDA_ROAM_OFFLOAD_SYNCH_IND: + limRoamOffloadSynchInd(pMac, limMsg); + /* bodyPtr is freed after handling + * eWNI_SME_ROAM_OFFLOAD_SYNCH_IND in sme_ProcessMsg */ + break; +#endif diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c index b5c3eac1535b..9ee806f047f9 100644 --- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c @@ -974,7 +974,8 @@ limProcessMlmReassocCnf(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) if (pLimMlmReassocCnf->resultCode == eSIR_SME_SUCCESS) { // Successful Reassociation /* change logging before release */ - PELOGE(limLog(pMac, LOGE, FL("*** Reassociated with new BSS ***"));) + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_DEBUG, + "*** Reassociated with new BSS ***"); psessionEntry->limSmeState = eLIM_SME_LINK_EST_STATE; MTRACE(macTrace(pMac, TRACE_CODE_SME_STATE, psessionEntry->peSessionId, psessionEntry->limSmeState)); diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index 61a96132bfda..c72628b0ee68 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -5768,11 +5768,6 @@ limProcessSmeReqMessages(tpAniSirGlobal pMac, tpSirMsgQ pMsg) limProcessAdjacentAPRepMsg ( pMac, pMsgBuf ); break; #endif -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - case eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND: - limProcessFTRoamOffloadSynchInd(pMac, pMsg); - break; -#endif case eWNI_SME_ADD_STA_SELF_REQ: __limProcessSmeAddStaSelfReq( pMac, pMsgBuf ); break; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index d8f88b76c435..cf78d9c2fb86 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -1232,11 +1232,15 @@ static void wma_remove_peer(tp_wma_handle wma, u_int8_t *bssid, ol_txrx_peer_detach(peer); wma->interfaces[vdev_id].peer_count--; - WMA_LOGE("%s: Removed peer with peer_addr %pM vdevid %d peer_count %d", - __func__, bssid, vdev_id, wma->interfaces[vdev_id].peer_count); #ifdef WLAN_FEATURE_ROAM_OFFLOAD - if (roam_synch_in_progress) - return; + if (roam_synch_in_progress) { + WMA_LOGD("%s:LFR3:Removed peer with addr %pM vdevid %d peer_cnt %d", + __func__, bssid, vdev_id, wma->interfaces[vdev_id].peer_count); + return; + } else { + WMA_LOGE("%s: Removed peer with addr %pM vdevid %d peer_count %d", + __func__, bssid, vdev_id, wma->interfaces[vdev_id].peer_count); + } #endif /* Flush all TIDs except MGMT TID for this peer in Target */ peer_tid_bitmap &= ~(0x1 << WMI_MGMT_TID); @@ -4699,12 +4703,10 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t u_int8_t *bcn_probersp_ptr = NULL; u_int8_t *reassoc_rsp_ptr = NULL; tp_wma_handle wma = (tp_wma_handle)handle; - VOS_STATUS status; - vos_msg_t vos_msg; wmi_channel *chan = NULL; wmi_key_material *key = NULL; int size=0; - tSirSmeRoamOffloadSynchInd *pRoamOffloadSynchInd; + tSirRoamOffloadSynchInd *pRoamOffloadSynchInd; WMA_LOGD("LFR3:%s", __func__); if (!event) { @@ -4731,10 +4733,10 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t return -EINVAL; } wma->interfaces[synch_event->vdev_id].roam_synch_in_progress = VOS_TRUE; - len = sizeof(tSirSmeRoamOffloadSynchInd) + + len = sizeof(tSirRoamOffloadSynchInd) + synch_event->bcn_probe_rsp_len + synch_event->reassoc_rsp_len; - pRoamOffloadSynchInd = (tSirSmeRoamOffloadSynchInd *)vos_mem_malloc(len); + pRoamOffloadSynchInd = (tSirRoamOffloadSynchInd *)vos_mem_malloc(len); if (!pRoamOffloadSynchInd) { WMA_LOGE("%s: failed to allocate memory for roam_synch_event", __func__); return -ENOMEM; @@ -4747,13 +4749,13 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t pRoamOffloadSynchInd->rssi = synch_event->rssi; pRoamOffloadSynchInd->isBeacon = synch_event->is_beacon; WMI_MAC_ADDR_TO_CHAR_ARRAY(&synch_event->bssid, pRoamOffloadSynchInd->bssId); - pRoamOffloadSynchInd->beaconProbeRespOffset = sizeof(tSirSmeRoamOffloadSynchInd); + pRoamOffloadSynchInd->beaconProbeRespOffset = sizeof(tSirRoamOffloadSynchInd); bcn_probersp_ptr = (tANI_U8 *)pRoamOffloadSynchInd + pRoamOffloadSynchInd->beaconProbeRespOffset; pRoamOffloadSynchInd->beaconProbeRespLength = synch_event->bcn_probe_rsp_len; vos_mem_copy(bcn_probersp_ptr, param_buf->bcn_probe_rsp_frame, pRoamOffloadSynchInd->beaconProbeRespLength); - pRoamOffloadSynchInd->reassocRespOffset = sizeof(tSirSmeRoamOffloadSynchInd) + + pRoamOffloadSynchInd->reassocRespOffset = sizeof(tSirRoamOffloadSynchInd) + pRoamOffloadSynchInd->beaconProbeRespLength; pRoamOffloadSynchInd->reassocRespLength = synch_event->reassoc_rsp_len; reassoc_rsp_ptr = (tANI_U8 *)pRoamOffloadSynchInd + @@ -4776,16 +4778,8 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t vos_mem_copy(pRoamOffloadSynchInd->replay_ctr, key->replay_counter, SIR_REPLAY_CTR_LEN); } - vos_msg.type = eWNI_SME_ROAM_OFFLOAD_SYNCH_IND; - vos_msg.bodyptr = (void *) pRoamOffloadSynchInd; - vos_msg.bodyval = 0; - - status = vos_mq_post_message(VOS_MQ_ID_SME, &vos_msg); - if (status != VOS_STATUS_SUCCESS) { - WMA_LOGE("%s: Failed to post Roam synch Ind event to SME", - __func__); - vos_mem_free(pRoamOffloadSynchInd); - } + wma_send_msg(wma, WDA_ROAM_OFFLOAD_SYNCH_IND, + (void *) pRoamOffloadSynchInd, 0); return 0; } #endif @@ -5825,7 +5819,7 @@ static VOS_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev, #ifdef WLAN_FEATURE_ROAM_OFFLOAD if (roam_synch_in_progress) { - WMA_LOGE("%s: Created peer with peer_addr %pM vdev_id %d," + WMA_LOGD("%s: Created peer with peer_addr %pM vdev_id %d," "peer_count - %d",__func__, peer_addr, vdev_id, wma->interfaces[vdev_id].peer_count); return VOS_STATUS_SUCCESS; @@ -7788,9 +7782,11 @@ VOS_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle, if (roam_req->RoamKeyMgmtOffloadEnabled) { WMI_SET_ROAM_OFFLOAD_OKC_ENABLED( roam_offload_11i->flags); + WMA_LOGE("LFR3:OKC Enabled"); } else { WMI_SET_ROAM_OFFLOAD_OKC_DISABLED( roam_offload_11i->flags); + WMA_LOGE("LFR3:OKC Disabled"); } @@ -13320,7 +13316,7 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) ol_txrx_pdev_handle pdev; VOS_STATUS status = VOS_STATUS_SUCCESS; ol_txrx_peer_handle peer; - struct wma_txrx_node *iface; + struct wma_txrx_node *iface = NULL; tPowerdBm maxTxPower; int ret = 0; @@ -13491,9 +13487,16 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) out: params->status = status; /* change logging before release */ - WMA_LOGE("%s: statype %d vdev_id %d aid %d bssid %pM staIdx %d status %d", - __func__, params->staType, params->smesessionId, params->assocId, - params->bssId, params->staIdx, status); +#ifdef WLAN_FEATURE_ROAM_OFFLOAD + if(iface && iface->roam_synch_in_progress) + WMA_LOGD("%s:statype %d vdevid %d aid %d bssid %pM staIdx %d status %d", + __func__, params->staType, params->smesessionId, + params->assocId, params->bssId, params->staIdx, status); + else + WMA_LOGE("%s:statype %d vdevid %d aid %d bssid %pM staIdx %d status %d", + __func__, params->staType, params->smesessionId, + params->assocId, params->bssId, params->staIdx, status); +#endif wma_send_msg(wma, WDA_ADD_STA_RSP, (void *)params, 0); } diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index 1a8bbc5dcaaf..062d2611b644 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -191,10 +191,6 @@ typedef enum eCsrLostLink1Abort, eCsrLostLink2Abort, eCsrLostLink3Abort, -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - eCsrPerformRoamOffloadSynch, -#endif - }eCsrRoamReason; typedef enum @@ -896,6 +892,7 @@ typedef struct tagCsrRoamOffloadSynchStruct tANI_U8 kck[SIR_KCK_KEY_LEN]; tANI_U8 kek[SIR_KEK_KEY_LEN]; tANI_U8 replay_ctr[SIR_REPLAY_CTR_LEN]; + tpSirBssDescription pbssDescription; /*BSS descriptor*/ } tCsrRoamOffloadSynchStruct; #endif @@ -1531,9 +1528,10 @@ csrRoamUpdateAddIEs(tpAniSirGlobal pMac, eUpdateIEsType updateType); #ifdef WLAN_FEATURE_ROAM_OFFLOAD -void csrProcessRoamOffloadSynchInd(tpAniSirGlobal pMac, void *pMsgBuf); +void csrProcessRoamOffloadSynchInd(tHalHandle hHal, + tpSirRoamOffloadSynchInd pSmeRoamOffloadSynchInd); eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac, - tSirSmeRoamOffloadSynchInd *pRoamOffloadSynchInd); + tSirRoamOffloadSynchInd *pRoamOffloadSynchInd); void csrProcessHOFailInd(tpAniSirGlobal pMac, void *pMsgBuf); #endif #endif diff --git a/CORE/SME/inc/csrNeighborRoam.h b/CORE/SME/inc/csrNeighborRoam.h index d4dbc4dc4d0f..d50bae03c284 100644 --- a/CORE/SME/inc/csrNeighborRoam.h +++ b/CORE/SME/inc/csrNeighborRoam.h @@ -344,8 +344,9 @@ VOS_STATUS csrRoamReadTSF(tpAniSirGlobal pMac, tANI_U8 *pTimestamp, #endif /*FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */ #ifdef WLAN_FEATURE_ROAM_OFFLOAD eHalStatus csrRoamOffloadSendSynchCnf(tpAniSirGlobal pMac, tANI_U8 sessionId); -eHalStatus csrNeighborRoamOffloadSynchRspHandler(tpAniSirGlobal pMac, - tpSirFTRoamOffloadSynchRsp pFTRoamOffloadSynchRsp, +eHalStatus +csrNeighborRoamOffloadUpdatePreauthList(tpAniSirGlobal pMac, + tpSirRoamOffloadSynchInd pSmeRoamOffloadSynchInd, tANI_U8 sessionId); #endif #endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */ diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 169cce06057b..4fbcf43d40cd 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -4934,12 +4934,6 @@ eHalStatus csrRoamProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand ) status = csrRoamIssueFTPreauthReq(pMac, sessionId, pCommand->u.roamCmd.pLastRoamBss); break; -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - case eCsrPerformRoamOffloadSynch: - status = csrRoamIssueFTRoamOffloadSynch(pMac, sessionId, - pCommand->u.roamCmd.pLastRoamBss); - break; -#endif default: csrRoamStateChange( pMac, eCSR_ROAMING_STATE_JOINING, sessionId ); @@ -5530,7 +5524,7 @@ eHalStatus csrRoamOffloadSendSynchCnf(tpAniSirGlobal pMac, tANI_U8 sessionId) msg.type = WDA_ROAM_OFFLOAD_SYNCH_CNF; msg.reserved = 0; msg.bodyptr = pRoamOffloadSynchCnf; - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "LFR3: Posting WDA_ROAM_OFFLOAD_SYNCH_CNF"); if (!VOS_IS_STATUS_SUCCESS(vos_mq_post_message( VOS_MODULE_ID_WDA, &msg))) @@ -10715,12 +10709,6 @@ void csrRoamCheckForLinkStatusChange( tpAniSirGlobal pMac, tSirSmeRsp *pSirMsg ) csrRoamFTPreAuthRspProcessor( pMac, (tpSirFTPreAuthRsp)pSirMsg ); break; #endif -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - case eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP: - csrRoamFTRoamOffloadSynchRspProcessor(pMac, - (tpSirFTRoamOffloadSynchRsp)pSirMsg); - break; -#endif case eWNI_SME_MAX_ASSOC_EXCEEDED: pSmeMaxAssocInd = (tSmeMaxAssocInd*)pSirMsg; smsLog( pMac, LOG1, FL("send indication that max assoc have been reached and the new peer cannot be accepted")); @@ -18569,238 +18557,72 @@ csrRoamSendChanSwIERequest(tpAniSirGlobal pMac, tCsrBssid bssid, return status; } #ifdef WLAN_FEATURE_ROAM_OFFLOAD -eHalStatus csrRoamEnqueueRoamOffloadSynch( - tpAniSirGlobal pMac, tANI_U32 sessionId, tpSirBssDescription pBssDescription, - eCsrRoamReason reason) -{ - eHalStatus status = eHAL_STATUS_SUCCESS; - tSmeCmd *pCommand; - - pCommand = csrGetCommandBuffer(pMac); - if(NULL == pCommand) - { - smsLog( pMac, LOGE, FL(" fail to get command buffer") ); - status = eHAL_STATUS_RESOURCES; - } - else - { - if(pBssDescription) - { - /* copy over the parameters we need later */ - pCommand->command = eSmeCommandRoam; - pCommand->u.roamCmd.roamReason = reason; - pCommand->sessionId = (tANI_U8)sessionId; - pCommand->u.roamCmd.pLastRoamBss = pBssDescription; - status = csrQueueSmeCommand(pMac, pCommand, eANI_BOOLEAN_TRUE); - if( !HAL_STATUS_SUCCESS( status ) ) - { - smsLog( pMac, LOGE, FL(" fail to enqueue roam offload sync" - "command, status = %d"), status ); - csrReleaseCommand( pMac, pCommand ); - } - } - else - { - /* Return failure */ - smsLog( pMac, LOGE, FL(" pBssDescription is NULL")); - status = eHAL_STATUS_RESOURCES; - csrReleaseCommand( pMac, pCommand ); - } - } - return (status); -} - -eHalStatus csrRoamDequeueRoamOffloadSynch(tpAniSirGlobal pMac) -{ - tListElem *pEntry; - tSmeCmd *pCommand; - pEntry = csrLLPeekHead( &pMac->sme.smeCmdActiveList, LL_ACCESS_LOCK ); - if ( pEntry ) - { - pCommand = GET_BASE_ADDR( pEntry, tSmeCmd, Link ); - if ( (eSmeCommandRoam == pCommand->command) && - (eCsrPerformRoamOffloadSynch == pCommand->u.roamCmd.roamReason)) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "LFR3:DQ-Command = %d, Reason = %d", - pCommand->command, pCommand->u.roamCmd.roamReason); - if (csrLLRemoveEntry( &pMac->sme.smeCmdActiveList, pEntry, LL_ACCESS_LOCK )) { - csrReleaseCommand( pMac, pCommand ); - } - } else { - smsLog( pMac, LOGE, FL("Command = %d, Reason = %d "), - pCommand->command, pCommand->u.roamCmd.roamReason); - } - } - else { - smsLog( pMac, LOGE, FL("pEntry NULL for eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP")); - } - smeProcessPendingQueue( pMac ); - return eHAL_STATUS_SUCCESS; -} /*---------------------------------------------------------------------------- - * fn csrProcessRoamOffloadSynchInd - * brief This will process the roam synch indication received from - * lower layers.This function also calls another API to - * parse the beacon IE and fill the appropriate fields - * param pMac - pMac global structure - * param pMsgBuf - Message buffer received from lower layers - * --------------------------------------------------------------------------*/ -void csrProcessRoamOffloadSynchInd(tpAniSirGlobal pMac, void *pMsgBuf) -{ - tpSirSmeRoamOffloadSynchInd smeRoamOffloadSynchInd = (tpSirSmeRoamOffloadSynchInd) pMsgBuf; - tListElem *pEntry; - tCsrScanResult *pBssDesc; - tDot11fBeaconIEs *pIes; - tCsrRoamSession *pSession = NULL; - - if (!smeRoamOffloadSynchInd) - { - smsLog(pMac, LOGE, FL("LFR3:smeRoamOffloadSynchInd is NULL")); - return; - } - pSession = CSR_GET_SESSION(pMac, smeRoamOffloadSynchInd->roamedVdevId); - if (!pSession) - { - smsLog(pMac, LOGE, FL("LFR3: session %d not found "), - smeRoamOffloadSynchInd->roamedVdevId); - return; - } - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "%s: Received eWNI_SME_ROAM_OFFLOAD_SYNCH_IND", __func__); - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "authStatus=%d, vdevId=%d, BSSID=%x:%x:%x:%x:%x:%x\n", - smeRoamOffloadSynchInd->authStatus, - smeRoamOffloadSynchInd->roamedVdevId, - smeRoamOffloadSynchInd->bssId[0], - smeRoamOffloadSynchInd->bssId[1], - smeRoamOffloadSynchInd->bssId[2], - smeRoamOffloadSynchInd->bssId[3], - smeRoamOffloadSynchInd->bssId[4], - smeRoamOffloadSynchInd->bssId[5]); - if (!HAL_STATUS_SUCCESS(csrScanSaveRoamOffloadApToScanCache(pMac, smeRoamOffloadSynchInd))) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "fail to save roam offload AP to scan cache"); - return; - } - - csrLLLock(&pMac->scan.scanResultList); - pEntry = csrLLPeekHead(&pMac->scan.scanResultList, LL_ACCESS_NOLOCK); - while (pEntry) - { - pBssDesc = GET_BASE_ADDR(pEntry, tCsrScanResult, Link); - pIes = (tDot11fBeaconIEs *)(pBssDesc->Result.pvIes); - if (csrIsBssidMatch(pMac, (tCsrBssid *)(smeRoamOffloadSynchInd->bssId), - (tCsrBssid *)(pBssDesc->Result.BssDescriptor.bssId))) - break; - pEntry = csrLLNext(&pMac->scan.scanResultList, pEntry, LL_ACCESS_NOLOCK); - } - csrLLUnlock(&pMac->scan.scanResultList); - - if (!pEntry) - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "%s: Not Found BSS descriptor", __func__); - pSession->roamOffloadSynchParams.rssi = smeRoamOffloadSynchInd->rssi; - pSession->roamOffloadSynchParams.roamReason = smeRoamOffloadSynchInd->roamReason; - pSession->roamOffloadSynchParams.roamedVdevId = smeRoamOffloadSynchInd->roamedVdevId; - vos_mem_copy(pSession->roamOffloadSynchParams.bssid, - smeRoamOffloadSynchInd->bssId, sizeof(tSirMacAddr)); - pSession->roamOffloadSynchParams.txMgmtPower = smeRoamOffloadSynchInd->txMgmtPower; - pSession->roamOffloadSynchParams.authStatus = smeRoamOffloadSynchInd->authStatus; - pSession->roamOffloadSynchParams.bRoamSynchInProgress = eANI_BOOLEAN_TRUE; - pMac->roam.reassocRespLen = smeRoamOffloadSynchInd->reassocRespLength; - pMac->roam.pReassocResp = - vos_mem_malloc(pMac->roam.reassocRespLen); - if (NULL == pMac->roam.pReassocResp) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "Memory allocation for reassoc response failed"); - return; - } - vos_mem_copy(pMac->roam.pReassocResp, - (tANI_U8 *)smeRoamOffloadSynchInd + - smeRoamOffloadSynchInd->reassocRespOffset, - pMac->roam.reassocRespLen); - - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, - "LFR3:%s: the reassoc resp frame data:", __func__); - VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, - pMac->roam.pReassocResp, - pMac->roam.reassocRespLen); - - vos_mem_copy(pSession->roamOffloadSynchParams.kck, - smeRoamOffloadSynchInd->kck, - SIR_KCK_KEY_LEN); - vos_mem_copy(pSession->roamOffloadSynchParams.kek, - smeRoamOffloadSynchInd->kek, - SIR_KEK_KEY_LEN); - vos_mem_copy(pSession->roamOffloadSynchParams.replay_ctr, - smeRoamOffloadSynchInd->replay_ctr, - SIR_REPLAY_CTR_LEN); - - if (pEntry) - csrRoamEnqueueRoamOffloadSynch( - pMac, smeRoamOffloadSynchInd->roamedVdevId, - &pBssDesc->Result.BssDescriptor, eCsrPerformRoamOffloadSynch); -} - -/*---------------------------------------------------------------------------- - * fn csrRoamIssueFTRoamOffloadSynch - * brief This will pass down the request to LIM - * param hHal - pMac global structure - * param sessionId - SME session ID - * param pBssDescription - BSS Descriptor - * return eHalStatus - Returns a success if the msg is posted properly - * --------------------------------------------------------------------------*/ -eHalStatus csrRoamIssueFTRoamOffloadSynch( - tHalHandle hHal, tANI_U32 sessionId, tSirBssDescription *pBssDescription) -{ - tpAniSirGlobal pMac = PMAC_STRUCT(hHal); - tpSirFTRoamOffloadSynchInd pftRoamOffloadSynchInd; - tANI_U16 roam_offload_sync_ind_len = 0; - tCsrRoamSession *pSession = CSR_GET_SESSION(pMac, sessionId); - - roam_offload_sync_ind_len = sizeof(tSirFTRoamOffloadSynchInd); - pftRoamOffloadSynchInd = - (tpSirFTRoamOffloadSynchInd)vos_mem_malloc(roam_offload_sync_ind_len); - if (pftRoamOffloadSynchInd == NULL) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "Memory allocation for FT Roam Offload Synch Indication failed"); - return eHAL_STATUS_RESOURCES; - } - - vos_mem_copy((void *)&pftRoamOffloadSynchInd->currbssId, - (void *)pSession->connectedProfile.bssid, sizeof(tSirMacAddr)); - /* Memory allocated below for pbssDescription is freed after - * handling it in csrRoamFTRoamOffloadSynchRspProcessor */ - pftRoamOffloadSynchInd->pbssDescription = (tpSirBssDescription)vos_mem_malloc( - sizeof(pBssDescription->length) + pBssDescription->length); - - pftRoamOffloadSynchInd->messageType = pal_cpu_to_be16( - eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND); - - vos_mem_copy(pftRoamOffloadSynchInd->pbssDescription, pBssDescription, - sizeof(pBssDescription->length) + pBssDescription->length); - - pftRoamOffloadSynchInd->length = pal_cpu_to_be16(roam_offload_sync_ind_len); - return palSendMBMessage(pMac->hHdd, pftRoamOffloadSynchInd); -} - -/*---------------------------------------------------------------------------- - * fn csrRoamFTRoamOffloadSynchRspProcessor - * brief This will receive and process the FT Roam Offload Synch Response + * fn csrProcessRoamOffloadSynchInd + * brief This will receive and process the Roam Offload Synch Ind * param hHal - pMac global structure - * param tpSirFTRoamOffloadSynchRsp - Bss descriptor info is retrieved + * param pSmeRoamOffloadSynchInd - Roam Synch info is retrieved * --------------------------------------------------------------------------*/ -void csrRoamFTRoamOffloadSynchRspProcessor( - tHalHandle hHal, tpSirFTRoamOffloadSynchRsp pFTRoamOffloadSynchRsp ) +void csrProcessRoamOffloadSynchInd( + tHalHandle hHal, tpSirRoamOffloadSynchInd pSmeRoamOffloadSynchInd) { tpAniSirGlobal pMac = PMAC_STRUCT( hHal ); + tCsrRoamSession *pSession = NULL; + tANI_U8 sessionId = pSmeRoamOffloadSynchInd->roamedVdevId; + pSession = CSR_GET_SESSION(pMac, pSmeRoamOffloadSynchInd->roamedVdevId); + if (!pSession) { + smsLog(pMac, LOGE, FL("LFR3: session %d not found "), + pSmeRoamOffloadSynchInd->roamedVdevId); + goto err_synch_rsp; + } + if (!HAL_STATUS_SUCCESS(csrScanSaveRoamOffloadApToScanCache(pMac, + pSmeRoamOffloadSynchInd))) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + "fail to save roam offload AP to scan cache"); + goto err_synch_rsp; + } + pSession->roamOffloadSynchParams.rssi = pSmeRoamOffloadSynchInd->rssi; + pSession->roamOffloadSynchParams.roamReason = + pSmeRoamOffloadSynchInd->roamReason; + pSession->roamOffloadSynchParams.roamedVdevId = + pSmeRoamOffloadSynchInd->roamedVdevId; + vos_mem_copy(pSession->roamOffloadSynchParams.bssid, + pSmeRoamOffloadSynchInd->bssId, sizeof(tSirMacAddr)); + pSession->roamOffloadSynchParams.txMgmtPower = + pSmeRoamOffloadSynchInd->txMgmtPower; + pSession->roamOffloadSynchParams.authStatus = + pSmeRoamOffloadSynchInd->authStatus; + pSession->roamOffloadSynchParams.bRoamSynchInProgress = eANI_BOOLEAN_TRUE; + /*Save the BSS descriptor for later use*/ + pSession->roamOffloadSynchParams.pbssDescription = + pSmeRoamOffloadSynchInd->pbssDescription; + pMac->roam.reassocRespLen = pSmeRoamOffloadSynchInd->reassocRespLength; + pMac->roam.pReassocResp = + vos_mem_malloc(pMac->roam.reassocRespLen); + if (NULL == pMac->roam.pReassocResp) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + "Memory allocation for reassoc response failed"); + goto err_synch_rsp; + } + vos_mem_copy(pMac->roam.pReassocResp, + (tANI_U8 *)pSmeRoamOffloadSynchInd + + pSmeRoamOffloadSynchInd->reassocRespOffset, + pMac->roam.reassocRespLen); - if (eHAL_STATUS_SUCCESS != csrNeighborRoamOffloadSynchRspHandler( - pMac, pFTRoamOffloadSynchRsp, pFTRoamOffloadSynchRsp->sessionId)) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, + "LFR3:%s: the reassoc resp frame data:", __func__); + VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, + pMac->roam.pReassocResp, pMac->roam.reassocRespLen); + + vos_mem_copy(pSession->roamOffloadSynchParams.kck, + pSmeRoamOffloadSynchInd->kck, SIR_KCK_KEY_LEN); + vos_mem_copy(pSession->roamOffloadSynchParams.kek, + pSmeRoamOffloadSynchInd->kek, SIR_KEK_KEY_LEN); + vos_mem_copy(pSession->roamOffloadSynchParams.replay_ctr, + pSmeRoamOffloadSynchInd->replay_ctr, SIR_REPLAY_CTR_LEN); + + if (eHAL_STATUS_SUCCESS != csrNeighborRoamOffloadUpdatePreauthList(pMac, + pSmeRoamOffloadSynchInd, sessionId)) { /* * Bail out if Roam Offload Synch Response was not even handled. */ @@ -18808,15 +18630,14 @@ void csrRoamFTRoamOffloadSynchRspProcessor( "was not processed")); goto err_synch_rsp; } - csrNeighborRoamRequestHandoff(pMac, pFTRoamOffloadSynchRsp->sessionId); - csrRoamDequeueRoamOffloadSynch(pMac); + + csrNeighborRoamRequestHandoff(pMac, sessionId); err_synch_rsp: - vos_mem_free(pFTRoamOffloadSynchRsp->pbssDescription); - pFTRoamOffloadSynchRsp->pbssDescription = NULL; + vos_mem_free(pSmeRoamOffloadSynchInd->pbssDescription); + pSmeRoamOffloadSynchInd->pbssDescription = NULL; } - /*---------------------------------------------------------------------------- * fn csrProcessHOFailInd * brief This function will process the Hand Off Failure indication diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c index b7e07163217e..435e602845b8 100644 --- a/CORE/SME/src/csr/csrApiScan.c +++ b/CORE/SME/src/csr/csrApiScan.c @@ -8677,174 +8677,30 @@ void UpdateCCKMTSF(tANI_U32 *timeStamp0, tANI_U32 *timeStamp1, tANI_U32 *incr) */ #ifdef WLAN_FEATURE_ROAM_OFFLOAD eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac, - tSirSmeRoamOffloadSynchInd *pRoamOffloadSynchInd) + tSirRoamOffloadSynchInd *pRoamOffloadSynchInd) { v_U32_t uLen = 0; - tpSirProbeRespBeacon pParsedFrame; - tCsrScanResult *pScanResult = NULL; - tSirBssDescription *pBssDescr = NULL; tANI_BOOLEAN fDupBss; tDot11fBeaconIEs *pIesLocal = NULL; tAniSSID tmpSsid; v_TIME_t timer=0; - tpSirMacMgmtHdr macHeader; - tANI_U8 *pBeaconProbeResp; + tCsrScanResult *pScanResult = NULL; tANI_U8 sessionId = pRoamOffloadSynchInd->roamedVdevId; - pBeaconProbeResp = (tANI_U8 *)pRoamOffloadSynchInd + - pRoamOffloadSynchInd->beaconProbeRespOffset; - macHeader = (tpSirMacMgmtHdr)pBeaconProbeResp; - pParsedFrame = - (tpSirProbeRespBeacon) vos_mem_malloc(sizeof(tSirProbeRespBeacon)); - if (NULL == pParsedFrame) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "%s: fail to allocate memory for frame",__func__); - return eHAL_STATUS_RESOURCES; - } - - if ( pRoamOffloadSynchInd->beaconProbeRespLength <= SIR_MAC_HDR_LEN_3A ) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "%s: Very few bytes in synchInd beacon / probe resp frame! length=%d", - __func__, pRoamOffloadSynchInd->beaconProbeRespLength); - vos_mem_free(pParsedFrame); - return eHAL_STATUS_FAILURE; - } - - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO,"LFR3: Beacon/Prb Rsp:"); - VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_INFO, - pBeaconProbeResp, pRoamOffloadSynchInd->beaconProbeRespLength); - - if (pRoamOffloadSynchInd->isBeacon) - { - if (sirParseBeaconIE( - pMac, pParsedFrame, - &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET], - pRoamOffloadSynchInd->beaconProbeRespLength - - SIR_MAC_HDR_LEN_3A) != eSIR_SUCCESS || !pParsedFrame->ssidPresent) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "Parse error Beacon, length=%d", - pRoamOffloadSynchInd->beaconProbeRespLength); - vos_mem_free(pParsedFrame); - return eHAL_STATUS_FAILURE; - } - } - else - { - if (sirConvertProbeFrame2Struct(pMac, - &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A], - pRoamOffloadSynchInd->beaconProbeRespLength - SIR_MAC_HDR_LEN_3A, - pParsedFrame) != eSIR_SUCCESS || - !pParsedFrame->ssidPresent) - { - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - "Parse error ProbeResponse, length=%d", - pRoamOffloadSynchInd->beaconProbeRespLength); - vos_mem_free(pParsedFrame); - return eHAL_STATUS_FAILURE; - } - } - /* 24 byte MAC header and 12 byte to ssid IE */ - if (pRoamOffloadSynchInd->beaconProbeRespLength > - (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET)) - { - uLen = pRoamOffloadSynchInd->beaconProbeRespLength - + uLen = pRoamOffloadSynchInd->beaconProbeRespLength - (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET); - } pScanResult = vos_mem_malloc(sizeof(tCsrScanResult) + uLen); if ( pScanResult == NULL ) { VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, " fail to allocate memory for frame"); - vos_mem_free(pParsedFrame); return eHAL_STATUS_RESOURCES; } vos_mem_zero(pScanResult, sizeof(tCsrScanResult) + uLen ); - pBssDescr = &pScanResult->Result.BssDescriptor; - /* Length of BSS desription is without length of - * length itself and length of pointer - * that holds the next BSS description - */ - pBssDescr->length = (tANI_U16)( - sizeof(tSirBssDescription) - sizeof(tANI_U16) - - sizeof(tANI_U32) + uLen); - if (pParsedFrame->dsParamsPresent) - { - pBssDescr->channelId = pParsedFrame->channelNumber; - } - else if (pParsedFrame->HTInfo.present) - { - pBssDescr->channelId = pParsedFrame->HTInfo.primaryChannel; - } - else - { - /*If DS Params or HTIE is not present in the probe resp or beacon, - * then use the channel frequency provided by firmware to fill the - * channel in the BSS descriptor.*/ - pBssDescr->channelId = vos_freq_to_chan(pRoamOffloadSynchInd->chan_freq); - } - pBssDescr->channelIdSelf = pBssDescr->channelId; - - if ((pBssDescr->channelId > 0) && (pBssDescr->channelId < 15)) - { - int i; - /* 11b or 11g packet - * 11g if extended Rate IE is present or - * if there is an A rate in suppRate IE */ - for (i = 0; i < pParsedFrame->supportedRates.numRates; i++) - { - if (sirIsArate(pParsedFrame->supportedRates.rate[i] & 0x7f)) - { - pBssDescr->nwType = eSIR_11G_NW_TYPE; - break; - } - } - if (pParsedFrame->extendedRatesPresent) - { - pBssDescr->nwType = eSIR_11G_NW_TYPE; - } - } - else - { - /* 11a packet */ - pBssDescr->nwType = eSIR_11A_NW_TYPE; - } - - pBssDescr->sinr = 0; - pBssDescr->beaconInterval = pParsedFrame->beaconInterval; - pBssDescr->timeStamp[0] = pParsedFrame->timeStamp[0]; - pBssDescr->timeStamp[1] = pParsedFrame->timeStamp[1]; - vos_mem_copy(&pBssDescr->capabilityInfo, - &pBeaconProbeResp[SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_CAPAB_OFFSET], 2); - vos_mem_copy((tANI_U8 *) &pBssDescr->bssId, - (tANI_U8 *) macHeader->bssId, - sizeof(tSirMacAddr)); - pBssDescr->nReceivedTime = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd); - - if(pParsedFrame->mdiePresent) - { - pBssDescr->mdiePresent = pParsedFrame->mdiePresent; - vos_mem_copy((tANI_U8 *)pBssDescr->mdie, (tANI_U8 *)pParsedFrame->mdie, SIR_MDIE_SIZE); - } - - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "LFR3:%s:BssDescr Info:", __func__); - VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - pBssDescr->bssId, sizeof(tSirMacAddr)); - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "LFR3:chan = %d, rssi = %d", - pBssDescr->channelId, pBssDescr->rssi); - - if (uLen) - { - vos_mem_copy( &pBssDescr->ieFields, - pBeaconProbeResp + (SIR_MAC_HDR_LEN_3A + SIR_MAC_B_PR_SSID_OFFSET), - uLen); - } - + vos_mem_copy(&pScanResult->Result.BssDescriptor, + pRoamOffloadSynchInd->pbssDescription, + (sizeof(tSirBssDescription) + uLen)); pIesLocal = (tDot11fBeaconIEs *)( pScanResult->Result.pvIes ); if ( !pIesLocal && (!HAL_STATUS_SUCCESS(csrGetParsedBssDescriptionIEs(pMac, @@ -8853,7 +8709,6 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac, VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "%s:Cannot Parse IEs", __func__); csrFreeScanResultEntry(pMac, pScanResult); - vos_mem_free(pParsedFrame); return eHAL_STATUS_RESOURCES; } @@ -8869,13 +8724,9 @@ eHalStatus csrScanSaveRoamOffloadApToScanCache(tpAniSirGlobal pMac, vos_mem_free(pIesLocal); } csrFreeScanResultEntry(pMac, pScanResult); - vos_mem_free(pParsedFrame); return eHAL_STATUS_RESOURCES; } csrScanAddResult(pMac, pScanResult, pIesLocal, sessionId); - - vos_mem_free(pParsedFrame); - return eHAL_STATUS_SUCCESS; } #endif diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h index e2ce5925828f..16fe53479999 100644 --- a/CORE/SME/src/csr/csrInsideApi.h +++ b/CORE/SME/src/csr/csrInsideApi.h @@ -1053,14 +1053,6 @@ eHalStatus csrScanCreateEntryInScanCache(tpAniSirGlobal pMac, tANI_U32 sessionId eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac); eHalStatus csrRoamDelPMKIDfromCache( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U8 *pBSSId, tANI_BOOLEAN flush_cache ); -#ifdef WLAN_FEATURE_ROAM_OFFLOAD -eHalStatus csrRoamEnqueueRoamOffloadSynch( - tpAniSirGlobal pMac, tANI_U32 sessionId, tpSirBssDescription pBssDescription, - eCsrRoamReason reason); -eHalStatus csrRoamDequeueRoamOffloadSynch(tpAniSirGlobal pMac); -void csrRoamFTRoamOffloadSynchRspProcessor( - tHalHandle hHal, tpSirFTRoamOffloadSynchRsp pFTRoamOffloadSynchRsp ); -#endif tANI_BOOLEAN csrElectedCountryInfo(tpAniSirGlobal pMac); void csrAddVoteForCountryInfo(tpAniSirGlobal pMac, tANI_U8 *pCountryCode); diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c index 3e43fe3c0e19..411e07fcc70a 100644 --- a/CORE/SME/src/csr/csrNeighborRoam.c +++ b/CORE/SME/src/csr/csrNeighborRoam.c @@ -1696,17 +1696,18 @@ DEQ_PREAUTH: #ifdef WLAN_FEATURE_ROAM_OFFLOAD /* --------------------------------------------------------------------------- - * \fn csrNeighborRoamOffloadSynchRspHandler - * \brief This function handle the RoamOffloadSynch from PE + * \fn csrNeighborRoamOffloadUpdatePreauthList + * \brief This function handle the RoamOffloadSynch and adds the + * roamed AP to the preauth done list * \param pMac - The handle returned by macOpen. - * \param pFTRoamOffloadSynchRsp - Roam offload sync response + * \param pSmeRoamOffloadSynchInd - Roam offload sync Ind Info * \param sessionId - Session identifier * \return eHAL_STATUS_SUCCESS on success, * eHAL_STATUS_FAILURE otherwise * --------------------------------------------------------------------------*/ eHalStatus -csrNeighborRoamOffloadSynchRspHandler(tpAniSirGlobal pMac, - tpSirFTRoamOffloadSynchRsp pFTRoamOffloadSynchRsp, +csrNeighborRoamOffloadUpdatePreauthList(tpAniSirGlobal pMac, + tpSirRoamOffloadSynchInd pSmeRoamOffloadSynchInd, tANI_U8 sessionId) { tpCsrNeighborRoamControlInfo pNeighborRoamInfo = @@ -1731,13 +1732,13 @@ csrNeighborRoamOffloadSynchRspHandler(tpAniSirGlobal pMac, FL("LFR3:Memory allocation for Neighbor Roam BSS Info failed")); return eHAL_STATUS_FAILURE; } - bssDescLen = pFTRoamOffloadSynchRsp->pbssDescription->length + - sizeof(pFTRoamOffloadSynchRsp->pbssDescription->length); + bssDescLen = pSmeRoamOffloadSynchInd->pbssDescription->length + + sizeof(pSmeRoamOffloadSynchInd->pbssDescription->length); pBssInfo->pBssDescription = vos_mem_malloc(bssDescLen); if (pBssInfo->pBssDescription != NULL) { vos_mem_copy(pBssInfo->pBssDescription, - pFTRoamOffloadSynchRsp->pbssDescription, + pSmeRoamOffloadSynchInd->pbssDescription, bssDescLen); } else @@ -1760,7 +1761,7 @@ csrNeighborRoamOffloadSynchRspHandler(tpAniSirGlobal pMac, } vos_mem_zero(pftPreAuthReq, sizeof(tSirFTPreAuthReq)); vos_mem_copy(&pftPreAuthReq->preAuthbssId, - pFTRoamOffloadSynchRsp->pbssDescription->bssId, + pSmeRoamOffloadSynchInd->pbssDescription->bssId, sizeof(tSirMacAddr)); CSR_NEIGHBOR_ROAM_STATE_TRANSITION(eCSR_NEIGHBOR_ROAM_STATE_PREAUTH_DONE, diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c index 5d5f0ab34734..cb9d25f225d5 100644 --- a/CORE/SME/src/csr/csrUtil.c +++ b/CORE/SME/src/csr/csrUtil.c @@ -3045,7 +3045,7 @@ tANI_BOOLEAN csrLookupPMKID( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U8 *p { for (Index = 0; Index < CSR_MAX_PMKID_ALLOWED; Index++) { - smsLog(pMac, LOGW, "match PMKID "MAC_ADDRESS_STR " to ", + smsLog(pMac, LOG1, "match PMKID "MAC_ADDRESS_STR " to ", MAC_ADDR_ARRAY(pBSSId)); if( vos_mem_compare(pBSSId, pSession->PmkidCacheInfo[Index].BSSID, sizeof(tCsrBssid)) ) { diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index 8a4f65fc776b..40bd6d140a95 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -2288,18 +2288,17 @@ eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg) { switch (pMsg->type) { // TODO: Will be modified to do a range check for msgs instead of having cases for each msgs #ifdef WLAN_FEATURE_ROAM_OFFLOAD - case eWNI_SME_ROAM_OFFLOAD_SYNCH_IND: - VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_DEBUG, - "LFR3:%s: Rcvd eWNI_SME_ROAM_OFFLOAD_SYNCH_IND",__func__); - csrProcessRoamOffloadSynchInd(pMac, pMsg->bodyptr); - vos_mem_free(pMsg->bodyptr); - break; case eWNI_SME_HO_FAIL_IND: VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, "LFR3:%s: Rcvd eWNI_SME_HO_FAIL_IND", __func__); csrProcessHOFailInd(pMac, pMsg->bodyptr); vos_mem_free(pMsg->bodyptr); break; + case eWNI_SME_ROAM_OFFLOAD_SYNCH_IND: + csrProcessRoamOffloadSynchInd(pMac, + (tpSirRoamOffloadSynchInd)pMsg->bodyptr); + vos_mem_free(pMsg->bodyptr); + break; #endif case eWNI_PMC_ENTER_BMPS_RSP: case eWNI_PMC_EXIT_BMPS_RSP: diff --git a/CORE/SYS/legacy/src/utils/src/macTrace.c b/CORE/SYS/legacy/src/utils/src/macTrace.c index 1351f0fcd94c..4e1728a4254a 100644 --- a/CORE/SYS/legacy/src/utils/src/macTrace.c +++ b/CORE/SYS/legacy/src/utils/src/macTrace.c @@ -521,8 +521,7 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg ) CASE_RETURN_STRING(eWNI_SME_GET_TSM_STATS_REQ); CASE_RETURN_STRING(eWNI_SME_GET_TSM_STATS_RSP); #ifdef WLAN_FEATURE_ROAM_OFFLOAD - CASE_RETURN_STRING(eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_IND); - CASE_RETURN_STRING(eWNI_SME_FT_ROAM_OFFLOAD_SYNCH_RSP); + CASE_RETURN_STRING(eWNI_SME_ROAM_OFFLOAD_SYNCH_IND); #endif default: return( (tANI_U8*)"UNKNOWN" ); diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h index 4f1a4bf72fcf..bacf00613863 100644 --- a/CORE/WDA/inc/wlan_qct_wda.h +++ b/CORE/WDA/inc/wlan_qct_wda.h @@ -829,6 +829,7 @@ tSirRetStatus uMacPostCtrlMsg(void* pSirGlobal, tSirMbMsg* pMb); #ifdef WLAN_FEATURE_ROAM_OFFLOAD #define WDA_ROAM_OFFLOAD_SYNCH_CNF SIR_HAL_ROAM_OFFLOAD_SYNCH_CNF +#define WDA_ROAM_OFFLOAD_SYNCH_IND SIR_HAL_ROAM_OFFLOAD_SYNCH_IND #endif #ifdef WLAN_WAKEUP_EVENTS #define WDA_WAKE_REASON_IND SIR_HAL_WAKE_REASON_IND |
