|
@@ -3335,7 +3335,7 @@ static bool csr_get_rsn_information(tHalHandle hal, tCsrAuthList *auth_type,
|
|
|
tCsrEncryptionList *mc_encryption,
|
|
|
tDot11fIERSN *rsn_ie, uint8_t *ucast_cipher,
|
|
|
uint8_t *mcast_cipher, uint8_t *auth_suite,
|
|
|
- tCsrRSNCapabilities *capabilities,
|
|
|
+ struct rsn_caps *capabilities,
|
|
|
eCsrAuthType *negotiated_authtype,
|
|
|
eCsrEncryptionType *negotiated_mccipher,
|
|
|
uint8_t *gp_mgmt_cipher,
|
|
@@ -3874,7 +3874,7 @@ uint8_t csr_construct_rsn_ie(tHalHandle hHal, uint32_t sessionId,
|
|
|
uint8_t gp_mgmt_cipher_suite[CSR_RSN_OUI_SIZE];
|
|
|
uint8_t AuthSuite[CSR_RSN_OUI_SIZE];
|
|
|
tCsrRSNAuthIe *pAuthSuite;
|
|
|
- tCsrRSNCapabilities RSNCapabilities;
|
|
|
+ struct rsn_caps RSNCapabilities;
|
|
|
tCsrRSNPMKIe *pPMK;
|
|
|
tPmkidCacheInfo pmkid_cache;
|
|
|
#ifdef WLAN_FEATURE_11W
|
|
@@ -3883,7 +3883,10 @@ uint8_t csr_construct_rsn_ie(tHalHandle hHal, uint32_t sessionId,
|
|
|
tDot11fBeaconIEs *pIesLocal = pIes;
|
|
|
eCsrAuthType negAuthType = eCSR_AUTH_TYPE_UNKNOWN;
|
|
|
tDot11fIERSN rsn_ie = {0};
|
|
|
+ struct csr_roam_session *session = CSR_GET_SESSION(pMac, sessionId);
|
|
|
|
|
|
+ if (!CSR_IS_SESSION_VALID(pMac, sessionId) || !session)
|
|
|
+ return 0;
|
|
|
qdf_mem_zero(&pmkid_cache, sizeof(pmkid_cache));
|
|
|
qdf_mem_zero(&rsn_ie, sizeof(rsn_ie));
|
|
|
|
|
@@ -3993,6 +3996,7 @@ uint8_t csr_construct_rsn_ie(tHalHandle hHal, uint32_t sessionId,
|
|
|
} else {
|
|
|
pPMK->cPMKIDs = 0;
|
|
|
}
|
|
|
+ session->rsn_caps = RSNCapabilities;
|
|
|
|
|
|
#ifdef WLAN_FEATURE_11W
|
|
|
/* Advertise BIP in group cipher key management only if PMF is
|
|
@@ -4017,7 +4021,7 @@ uint8_t csr_construct_rsn_ie(tHalHandle hHal, uint32_t sessionId,
|
|
|
pRSNIe->IeHeader.Length =
|
|
|
(uint8_t) (sizeof(*pRSNIe) - sizeof(pRSNIe->IeHeader) +
|
|
|
sizeof(*pAuthSuite) +
|
|
|
- sizeof(tCsrRSNCapabilities));
|
|
|
+ sizeof(struct rsn_caps));
|
|
|
if (pPMK->cPMKIDs)
|
|
|
pRSNIe->IeHeader.Length += (uint8_t) (sizeof(uint16_t) +
|
|
|
(pPMK->cPMKIDs *
|