summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSridhar Selvaraj <sselvara@codeaurora.org>2017-07-17 18:43:55 +0530
committerYeshwanth Sriram Guntuka <ysriramg@codeaurora.org>2017-11-21 18:04:21 +0530
commitdb50a0bb2e83fc28b7b52d655f11b9bbe51c692e (patch)
tree4d8acaa34eefe66b41987808f0667677fa606fb5
parent934effe503aa7fd4b13913aef286570be46f5041 (diff)
qcacld-2.0: Keep bssDescription at the end of tSirSmeJoinReq struct
qcacld-3.0 to qcacld-2.0 propagation Move bssDescription to the end of tSirSmeJoinReq since bssDescription has ieFields at its end which would be corrupted if we dont keep it at the end of bssDescription. This results in not detecting the IE's properly after assoc response processing, not setting wpa_rsn flag in PEER_ASSOC_CMD to fw. The subsequent LFR3 roam if happens in fw fails because of this. Keep bssDescription at the end of tSirSmeJoinReq struct and other structs where bssDescription is used. Change-Id: I7096f7da0a475b0c63078f3c77fba240a41dfb00 CRs-Fixed: 2147063
-rw-r--r--CORE/MAC/inc/sirApi.h5
-rw-r--r--CORE/MAC/src/pe/include/limGlobal.h7
-rw-r--r--CORE/MAC/src/pe/lim/limTypes.h7
-rw-r--r--CORE/SME/src/csr/csrInsideApi.h11
4 files changed, 23 insertions, 7 deletions
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 14046cb8f9ac..6af44f5540b3 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -1209,6 +1209,11 @@ typedef struct sSirSmeJoinReq
struct cds_fils_connection_info fils_con_info;
#endif
tSirBssDescription bssDescription;
+ /*
+ * WARNING: Pls make bssDescription as last variable in struct
+ * tSirSmeJoinReq as it has ieFields followed after this bss
+ * description. Adding a variable after this corrupts the ieFields
+ */
} tSirSmeJoinReq, *tpSirSmeJoinReq;
/* Definition for response message to previously issued join request */
diff --git a/CORE/MAC/src/pe/include/limGlobal.h b/CORE/MAC/src/pe/include/limGlobal.h
index af331a415f43..5adc4f15bc00 100644
--- a/CORE/MAC/src/pe/include/limGlobal.h
+++ b/CORE/MAC/src/pe/include/limGlobal.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -261,6 +261,11 @@ typedef struct sLimMlmJoinReq
tSirMacRateSet operationalRateSet;
tANI_U8 sessionId;
tSirBssDescription bssDescription;
+ /*
+ * WARNING: Pls make bssDescription as last variable in struct
+ * tLimMlmJoinReq as it has ieFields followed after this bss
+ * description. Adding a variable after this corrupts the ieFields
+ */
} tLimMlmJoinReq, *tpLimMlmJoinReq;
typedef struct sLimMlmScanReq
diff --git a/CORE/MAC/src/pe/lim/limTypes.h b/CORE/MAC/src/pe/lim/limTypes.h
index 6b5910ccf790..f46dd6c09904 100644
--- a/CORE/MAC/src/pe/lim/limTypes.h
+++ b/CORE/MAC/src/pe/lim/limTypes.h
@@ -199,8 +199,13 @@ typedef struct sLimMlmScanCnf
{
tSirResultCodes resultCode;
tANI_U16 scanResultLength;
- tSirBssDescription bssDescription[1];
tANI_U8 sessionId;
+ tSirBssDescription bssDescription[1];
+ /*
+ * WARNING: Pls make bssDescription as last variable in struct
+ * tLimMlmScanCnf as it has ieFields followed after this bss
+ * description. Adding a variable after this corrupts the ieFields
+ */
} tLimMlmScanCnf, *tpLimMlmScanCnf;
typedef struct sLimScanResult
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index d5279dd7e4f1..06e9ab886345 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -178,16 +178,17 @@ typedef struct tagCsrScanResult
we have equal preferValue */
tANI_U32 capValue;
- /*
- * This member must be the last in the structure because the end of
- * tSirBssDescription (inside) is an array with non known size at this time
- */
-
eCsrEncryptionType ucEncryptionType; //Preferred Encryption type that matched with profile.
eCsrEncryptionType mcEncryptionType;
eCsrAuthType authType; //Preferred auth type that matched with the profile.
tCsrScanResultInfo Result;
+ /*
+ * WARNING - Do not add any element here
+ * This member Result must be the last in the structure because the end
+ * of tSirBssDescription (inside) is an array with nonknown size at
+ * this time.
+ */
}tCsrScanResult;
typedef struct