From b2f1304e773fce18e4fc27fe8e0033506fdeca4a Mon Sep 17 00:00:00 2001 From: Krunal Soni Date: Mon, 2 Nov 2015 18:41:08 -0800 Subject: [PATCH] qcacld-3.0: Fix PMF configuration for LFR2 and LFR3 roaming This commit will fix the incorrect pmf config param for STA DUT in-case of LFR2/3 roaming scenario. Change-Id: Ic0d6d4632cfeaa0589b435a6710f3c2380cf5883 CRs-Fixed: 935947 --- core/sme/src/csr/csr_api_roam.c | 15 +++++++++++++++ core/sme/src/csr/csr_neighbor_roam.c | 20 ++++++++++++++------ core/sme/src/csr/csr_util.c | 9 +++++++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 7a12c66dced2..45b2b495ba20 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -974,6 +974,11 @@ CDF_STATUS csr_roam_copy_connect_profile(tpAniSirGlobal pMac, pProfile->eseCckmInfo.krk_plumbed = connected_prof->eseCckmInfo.krk_plumbed; } +#endif +#ifdef WLAN_FEATURE_11W + pProfile->MFPEnabled = connected_prof->MFPEnabled; + pProfile->MFPRequired = connected_prof->MFPRequired; + pProfile->MFPCapable = connected_prof->MFPCapable; #endif } return status; @@ -6932,6 +6937,11 @@ CDF_STATUS csr_roam_copy_connected_profile(tpAniSirGlobal pMac, pSrcProfile->MDID.mobilityDomain; } #endif +#ifdef WLAN_FEATURE_11W + pDstProfile->MFPEnabled = pSrcProfile->MFPEnabled; + pDstProfile->MFPRequired = pSrcProfile->MFPRequired; + pDstProfile->MFPCapable = pSrcProfile->MFPCapable; +#endif end: if (!CDF_IS_STATUS_SUCCESS(status)) { @@ -13261,6 +13271,11 @@ csr_roam_remove_connected_bss_from_scan_cache(tpAniSirGlobal pMac, pScanFilter->bOSENAssociation = false; pScanFilter->countryCode[0] = 0; pScanFilter->phyMode = eCSR_DOT11_MODE_AUTO; +#ifdef WLAN_FEATURE_11W + pScanFilter->MFPEnabled = pConnProfile->MFPEnabled; + pScanFilter->MFPRequired = pConnProfile->MFPRequired; + pScanFilter->MFPCapable = pConnProfile->MFPCapable; +#endif csr_ll_lock(&pMac->scan.scanResultList); pEntry = csr_ll_peek_head(&pMac->scan.scanResultList, LL_ACCESS_NOLOCK); while (pEntry) { diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 7e36d27a1ae8..13a9bc8b89e1 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -2056,20 +2056,28 @@ bool csr_neighbor_roam_is_ssid_and_security_match(tpAniSirGlobal pMac, pIes->SSID.ssid, pIes->SSID.num_ssid, true); if (true == fMatch) { +#ifdef WLAN_FEATURE_11W /* - * for now we are sending NULL for all PMF related filter - * parameters during roam to the neighbor AP because - * so far 80211W spec doesn't specify anything about - * roaming scenario. + * We are sending current connected APs profile setting + * if other AP doesn't have the same PMF setting as currently + * connected AP then we will have some issues in roaming. * - * Once roaming scenario is defined, we should re-visit - * this section and remove this comment. + * Make sure all the APs have same PMF settings to avoid + * any corner cases. */ + fMatch = csr_is_security_match(pMac, &authType, + &uCEncryptionType, &mCEncryptionType, + &pCurProfile->MFPEnabled, + &pCurProfile->MFPRequired, + &pCurProfile->MFPCapable, + pBssDesc, pIes, NULL, NULL, NULL); +#else fMatch = csr_is_security_match(pMac, &authType, &uCEncryptionType, &mCEncryptionType, NULL, NULL, NULL, pBssDesc, pIes, NULL, NULL, NULL); +#endif return fMatch; } else { return fMatch; diff --git a/core/sme/src/csr/csr_util.c b/core/sme/src/csr/csr_util.c index 59d7662ef06a..5c0670414a10 100644 --- a/core/sme/src/csr/csr_util.c +++ b/core/sme/src/csr/csr_util.c @@ -4867,9 +4867,18 @@ bool csr_match_connected_bss_security(tpAniSirGlobal pMac, authList.numEntries = 1; authList.authType[0] = pProfile->AuthType; +#ifdef WLAN_FEATURE_11W + return csr_is_security_match(pMac, &authList, &ucEncryptionList, + &mcEncryptionList, + &pProfile->MFPEnabled, + &pProfile->MFPRequired, + &pProfile->MFPCapable, + pBssDesc, pIes, NULL, NULL, NULL); +#else return csr_is_security_match(pMac, &authList, &ucEncryptionList, &mcEncryptionList, NULL, NULL, NULL, pBssDesc, pIes, NULL, NULL, NULL); +#endif }