summaryrefslogtreecommitdiff
path: root/CORE/MAC/src
diff options
context:
space:
mode:
authorSandeep Puligilla <spuligil@qca.qualcomm.com>2015-06-24 15:45:05 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-07-22 17:02:37 +0530
commit06b2999646cb709b5195f3fe0b83ecb669c5ddf4 (patch)
treea72e540b5f193ab3c344df7b247e74d3a2894949 /CORE/MAC/src
parent0a19c86926a9aa52819557d54172be28ba6c3a6d (diff)
qcacld: Don't disconnect in case of HS2.0 for change in AP capability.
After connection, driver process beacon to detect any change in AP's capabilities. Currently if privacy bit is set in beacon and if rsn or wpa bit is not set, driver issues disconnect command. In case of HS2.0, all security capabilities are part of vendor specific information. Hence, both wpa and rsn bit is 0, though privacy bit is set. Since driver considers it as a change in AP security params, it issues disconnect. As a part of fix, make sure that for OSEN capabilities disconnect is not issued. Change-Id: I5554b24dfa2724c6c9b6faef2f738277e42028fb CRs-Fixed: 796397
Diffstat (limited to 'CORE/MAC/src')
-rw-r--r--CORE/MAC/src/pe/include/limSession.h1
-rw-r--r--CORE/MAC/src/pe/lim/limApi.c13
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c1
-rw-r--r--CORE/MAC/src/pe/lim/limSerDesUtils.c8
4 files changed, 21 insertions, 2 deletions
diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h
index 8d946c0357d8..0d66528b93e8 100644
--- a/CORE/MAC/src/pe/include/limSession.h
+++ b/CORE/MAC/src/pe/include/limSession.h
@@ -125,6 +125,7 @@ typedef struct sPESession // Added to Support BT-AMP
tANI_U8 operMode; // AP - 0; STA - 1 ;
tSirNwType nwType;
tpSirSmeStartBssReq pLimStartBssReq; //handle to smestart bss req
+ tANI_BOOLEAN bOSENAssociation; //handle to OSEN assoc req
tpSirSmeJoinReq pLimJoinReq; // handle to sme join req
tpSirSmeJoinReq pLimReAssocReq; //handle to sme reassoc req
tpLimMlmJoinReq pLimMlmJoinReq; //handle to MLM join Req
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 80051cada41f..4fe1bfaedbdc 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1499,7 +1499,18 @@ static tAniBool limIbssEncTypeMatched(tpSchBeaconStruct pBeacon,
&& pBeacon->rsnPresent == 0
&& pSession->encryptType == eSIR_ED_CCMP)
return eSIR_TRUE;
-
+ /* For HS2.0, RSN ie is not present
+ * in beacon. Therefore no need to
+ * check for security type in case
+ * OSEN session.
+ */
+ /*TODO: AP capability mismatch
+ * is not checked here because
+ * no logic for beacon parsing
+ * is avilable for HS2.0
+ */
+ if (pSession->bOSENAssociation)
+ return eSIR_TRUE;
return eSIR_FALSE;
}
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 61531908d6b0..ba559a39169e 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -1924,6 +1924,7 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf)
psessionEntry->statypeForBss = STA_ENTRY_PEER;
psessionEntry->limWmeEnabled = pSmeJoinReq->isWMEenabled;
psessionEntry->limQosEnabled = pSmeJoinReq->isQosEnabled;
+ psessionEntry->bOSENAssociation = pSmeJoinReq->bOSENAssociation;
/* Store vendor specfic IE for CISCO AP */
ieLen = (pSmeJoinReq->bssDescription.length +
diff --git a/CORE/MAC/src/pe/lim/limSerDesUtils.c b/CORE/MAC/src/pe/lim/limSerDesUtils.c
index 571612006145..77ea7539acda 100644
--- a/CORE/MAC/src/pe/lim/limSerDesUtils.c
+++ b/CORE/MAC/src/pe/lim/limSerDesUtils.c
@@ -928,7 +928,13 @@ limJoinReqSerDes(tpAniSirGlobal pMac, tpSirSmeJoinReq pJoinReq, tANI_U8 *pBuf)
limLog(pMac, LOGE, FL("remaining len %d is too short"), len);
return eSIR_FAILURE;
}
-
+ pJoinReq->bOSENAssociation = *pBuf++;
+ len--;
+ if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+ {
+ limLog(pMac, LOGE, FL("remaining len %d is too short"), len);
+ return eSIR_FAILURE;
+ }
// Extract cbMode
pJoinReq->cbMode = (ePhyChanBondState)limGetU32(pBuf);
pBuf += sizeof(ePhyChanBondState);