diff options
| author | Kanchanapally, Vidyullatha <vkanchan@qti.qualcomm.com> | 2014-04-29 20:40:34 +0530 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com> | 2014-05-07 12:52:16 +0530 |
| commit | a261c1852cf0fe6cb3370afb6ff9a29f2230babe (patch) | |
| tree | dec73aae43a6558fb3d6ebf5f79a79c2531f656e | |
| parent | 5cc3914318d73c387a02f8ffd32dead15f37600f (diff) | |
qcacld: Add RIC IE in ReassocReq in FT-Open security
The spec mandates to have a RIC IE present in the
Reassoc Requests when needed in all security modes.
The FT and RIC IEs are sent to the supplicant from driver
and later supplicant indicates the FT IEs to driver through
wlan_hdd_cfg80211_update_ft_ies. In Open security the FT IEs
are dropped in supplicant and are not updated to the driver.
Hence in this gerrit changes are made in the driver to include
RIC IE when needed in Reassoc Req in Open security, since in
open security we know that FT IEs are not updated by supplicant.
Change-Id: I30027cc6251fdaa575d26d8eab8b84bba6c3ca12
CRs-Fixed:644370
| -rw-r--r-- | CORE/MAC/src/pe/lim/limSendManagementFrames.c | 3 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_FTApi.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 35 |
3 files changed, 38 insertions, 1 deletions
diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c index fa08d362955c..664859c73d83 100644 --- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c +++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c @@ -2963,7 +2963,8 @@ limSendReassocReqWithFTIEsMgmtFrame(tpAniSirGlobal pMac, } #if defined WLAN_FEATURE_VOWIFI_11R - if ( psessionEntry->pLimReAssocReq->bssDescription.mdiePresent && (0 == pMac->ft.ftSmeContext.reassoc_ft_ies_length) + if ( psessionEntry->pLimReAssocReq->bssDescription.mdiePresent && + (pMac->ft.ftSmeContext.addMDIE == TRUE) #if defined FEATURE_WLAN_ESE && !psessionEntry->isESEconnection #endif diff --git a/CORE/SME/inc/sme_FTApi.h b/CORE/SME/inc/sme_FTApi.h index aedae8c874f6..7d5b0efc85db 100644 --- a/CORE/SME/inc/sme_FTApi.h +++ b/CORE/SME/inc/sme_FTApi.h @@ -71,6 +71,7 @@ typedef struct sFTSMEContext vos_timer_t preAuthReassocIntvlTimer; tCsrRoamSetKey *pCsrFTKeyInfo; + v_BOOL_t addMDIE; } tftSMEContext, *tpftSMEContext; /*-------------------------------------------------------------------------- diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index ee8d04f537e1..46181b2a5f8f 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -17331,6 +17331,7 @@ void csrRoamFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuth #if defined(FEATURE_WLAN_LFR) || defined(FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_ESE_UPLOAD) tCsrRoamInfo roamInfo; #endif + eCsrAuthType conn_Auth_type; #ifdef WLAN_FEATURE_NEIGHBOR_ROAMING status = csrNeighborRoamPreauthRspHandler(pMac, pFTPreAuthRsp->status); @@ -17397,10 +17398,44 @@ void csrRoamFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuth #endif + // If its an Open Auth, FT IEs are not provided by supplicant + // Hence populate them here + conn_Auth_type = pMac->roam.roamSession[pMac->ft.ftSmeContext.smeSessionId].connectedProfile.AuthType; + pMac->ft.ftSmeContext.addMDIE = FALSE; + if( csrRoamIs11rAssoc(pMac) && + (conn_Auth_type == eCSR_AUTH_TYPE_OPEN_SYSTEM)) + { + tANI_U16 ft_ies_length; + ft_ies_length = pFTPreAuthRsp->ric_ies_length; + + if ( (pMac->ft.ftSmeContext.reassoc_ft_ies) && + (pMac->ft.ftSmeContext.reassoc_ft_ies_length)) + { + vos_mem_free(pMac->ft.ftSmeContext.reassoc_ft_ies); + pMac->ft.ftSmeContext.reassoc_ft_ies_length = 0; + } + + pMac->ft.ftSmeContext.reassoc_ft_ies = vos_mem_malloc(ft_ies_length); + if ( NULL == pMac->ft.ftSmeContext.reassoc_ft_ies ) + { + smsLog( pMac, LOGE, FL("Memory allocation failed for ft_ies")); + } + else + { + // Copy the RIC IEs to reassoc IEs + vos_mem_copy(((tANI_U8 *)pMac->ft.ftSmeContext.reassoc_ft_ies), + (tANI_U8 *)pFTPreAuthRsp->ric_ies, + pFTPreAuthRsp->ric_ies_length); + pMac->ft.ftSmeContext.reassoc_ft_ies_length = ft_ies_length; + pMac->ft.ftSmeContext.addMDIE = TRUE; + } + } + // Done with it, init it. pMac->ft.ftSmeContext.psavedFTPreAuthRsp = NULL; } #endif + #ifdef FEATURE_WLAN_BTAMP_UT_RF void csrRoamJoinRetryTimerHandler(void *pv) { |
