summaryrefslogtreecommitdiff
path: root/core/mac/src
diff options
context:
space:
mode:
authorRajeev Kumar <rajekuma@codeaurora.org>2016-04-14 15:32:21 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-04-18 17:04:01 -0700
commit9b755ef5f5687eca5efc072e6360d86775f56281 (patch)
tree6a451167bc88594c63ddb3852ef8ef9857cb8eaa /core/mac/src
parent437c921a8fb6a9cf0e0fb739b8b60daff6d414a8 (diff)
qcacld-3.0: send correct status code when WEP AUTH fail
qcacld-2.0 to qcacld-3.0 propagation With invalid WEP password, some APs reply AUTH frame 4 with invalid seqNumber. This AUTH frame will be dropped by driver, then driver sends the generic status code instead of protocol status code. As a workaround, assign the seqNumber=4 for AUTH frame 4, which ensures driver to send correct status code when WEP AUTH fail. Change-Id: I2fc96f0c253cf639d730d59d567be50bca51bd0b CRs-Fixed: 947898
Diffstat (limited to 'core/mac/src')
-rw-r--r--core/mac/src/pe/lim/lim_process_auth_frame.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/core/mac/src/pe/lim/lim_process_auth_frame.c b/core/mac/src/pe/lim/lim_process_auth_frame.c
index 5eb8084520d2..98a8cc113a74 100644
--- a/core/mac/src/pe/lim/lim_process_auth_frame.c
+++ b/core/mac/src/pe/lim/lim_process_auth_frame.c
@@ -1348,6 +1348,28 @@ lim_process_auth_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
(uint32_t) rx_auth_frm_body->authStatusCode,
(uint32_t) mac_ctx->lim.gLimNumPreAuthContexts);
+ /*
+ * IOT Workaround: with invalid WEP key, some APs reply
+ * AuthFrame 4 with invalid seqNumber. This AuthFrame
+ * will be dropped by driver, thus driver sends the
+ * generic status code instead of protocol status code.
+ * As a workaround, override AuthFrame 4's seqNumber.
+ */
+ if ((pe_session->limMlmState ==
+ eLIM_MLM_WT_AUTH_FRAME4_STATE) &&
+ (rx_auth_frm_body->authTransactionSeqNumber !=
+ SIR_MAC_AUTH_FRAME_1) &&
+ (rx_auth_frm_body->authTransactionSeqNumber !=
+ SIR_MAC_AUTH_FRAME_2) &&
+ (rx_auth_frm_body->authTransactionSeqNumber !=
+ SIR_MAC_AUTH_FRAME_3)) {
+ lim_log(mac_ctx, LOGW,
+ FL("Override AuthFrame 4's seqNumber to 4."));
+ rx_auth_frm_body->authTransactionSeqNumber =
+ SIR_MAC_AUTH_FRAME_4;
+ }
+
+
switch (rx_auth_frm_body->authTransactionSeqNumber) {
case SIR_MAC_AUTH_FRAME_1:
lim_process_auth_frame_type1(mac_ctx,