diff options
| -rw-r--r-- | CORE/MAC/src/pe/lim/limFT.c | 8 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 17 |
2 files changed, 24 insertions, 1 deletions
diff --git a/CORE/MAC/src/pe/lim/limFT.c b/CORE/MAC/src/pe/lim/limFT.c index cf42bca429a2..7ddfd03bc1a4 100644 --- a/CORE/MAC/src/pe/lim/limFT.c +++ b/CORE/MAC/src/pe/lim/limFT.c @@ -336,16 +336,22 @@ void limPerformFTPreAuth(tpAniSirGlobal pMac, eHalStatus status, tANI_U32 *data, tpPESession psessionEntry) { tSirMacAuthFrameBody authFrame; + tANI_U32 session_id; + eCsrAuthType auth_type; if (NULL == psessionEntry) { PELOGE(limLog(pMac, LOGE, FL("psessionEntry is NULL"));) return; } + session_id = psessionEntry->smeSessionId; + auth_type = pMac->roam.roamSession[session_id].connectedProfile.AuthType; + if (psessionEntry->is11Rconnection && psessionEntry->ftPEContext.pFTPreAuthReq) { /* Only 11r assoc has FT IEs */ - if (psessionEntry->ftPEContext.pFTPreAuthReq->ft_ies_length == 0) { + if ((auth_type != eCSR_AUTH_TYPE_OPEN_SYSTEM) && + (psessionEntry->ftPEContext.pFTPreAuthReq->ft_ies_length == 0)) { PELOGE(limLog( pMac, LOGE, "%s: FTIEs for Auth Req Seq 1 is absent", __func__);) diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 1e745f675d16..4703b1354921 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -19093,6 +19093,7 @@ void csrRoamFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuth eCsrAuthType conn_Auth_type; tANI_U32 sessionId = pFTPreAuthRsp->smeSessionId; tCsrRoamSession *pSession = CSR_GET_SESSION( pMac, sessionId ); + tDot11fAuthentication *pAuth = NULL; if (NULL == pSession) { @@ -19200,6 +19201,22 @@ void csrRoamFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuth pSession->ftSmeContext.reassoc_ft_ies = NULL; } + pAuth = (tDot11fAuthentication *) vos_mem_malloc(sizeof(tDot11fAuthentication)); + if(pAuth == NULL) + return; + + status = dot11fUnpackAuthentication(pMac, pFTPreAuthRsp->ft_ies, + pFTPreAuthRsp->ft_ies_length, pAuth); + if (DOT11F_FAILED(status)) + { + smsLog( pMac, LOGE, FL("Failed to parse an Authentication frame")); + } + else if (pAuth->MobilityDomain.present) + { + pSession->ftSmeContext.addMDIE = TRUE; + } + vos_mem_free(pAuth); + if (!ft_ies_length) return; |
