summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelvaraj, Sridhar <sselvara@codeaurora.org>2016-09-29 11:56:45 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-12-23 06:38:56 -0800
commit0101f5317ea9383b474ec7bb01e3e949d5251373 (patch)
tree6465603f2d634f3c21625ee27d2336566f926f33
parent5e5311435220432c274cda25ebdb76c7310efd77 (diff)
qcacld-3.0: Send proper reason code to Supplicant on beacon miss event
qcacld-2.0 to qcacld-3.0 propagation Once the beacon miss event is received in driver, sta cleanup happens and sends deauth reason code as 505 which is internal value to driver(eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE). Send reason code as zero to Supplicant for Beacon miss kickout. Cleanup the similar handling in csr_api_roam as it is redundant. Change-Id: I6df97e05ac20f285646df3d5fe73800138a18d89 CRs-Fixed: 1025871
-rw-r--r--core/mac/src/pe/lim/lim_send_sme_rsp_messages.c20
-rw-r--r--core/sme/src/csr/csr_api_roam.c15
2 files changed, 22 insertions, 13 deletions
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index 40993dc1f0e4..08b179b9a2d0 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -958,6 +958,16 @@ lim_send_sme_disassoc_ntf(tpAniSirGlobal pMac,
sizeof(tSirMacAddr));
sir_sme_dis_ind->session_id = smesessionId;
sir_sme_dis_ind->reason_code = reasonCode;
+ /*
+ * Instead of sending deauth reason code as 505 which is
+ * internal value(eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE)
+ * Send reason code as zero to Supplicant
+ */
+ if (reasonCode == eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE)
+ sir_sme_dis_ind->reason_code = 0;
+ else
+ sir_sme_dis_ind->reason_code = reasonCode;
+
pMsg = (uint32_t *)sir_sme_dis_ind;
break;
@@ -1421,6 +1431,16 @@ lim_send_sme_deauth_ntf(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr,
sir_sme_dis_ind->reason_code = reasonCode;
qdf_mem_copy(sir_sme_dis_ind->peer_mac, peerMacAddr,
ETH_ALEN);
+ /*
+ * Instead of sending deauth reason code as 505 which is
+ * internal value(eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE)
+ * Send reason code as zero to Supplicant
+ */
+ if (reasonCode == eSIR_SME_LOST_LINK_WITH_PEER_RESULT_CODE)
+ sir_sme_dis_ind->reason_code = 0;
+ else
+ sir_sme_dis_ind->reason_code = reasonCode;
+
pMsg = (uint32_t *)sir_sme_dis_ind;
break;
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 2fca70196a60..9c6460205deb 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -11745,19 +11745,8 @@ QDF_STATUS csr_roam_lost_link(tpAniSirGlobal pMac, uint32_t sessionId,
result = eCSR_ROAM_RESULT_DEAUTH_IND;
pDeauthIndMsg = (tSirSmeDeauthInd *) pSirMsg;
pSession->roamingStatusCode = pDeauthIndMsg->statusCode;
- /* Convert into proper reason code */
- if ((pDeauthIndMsg->reasonCode == eSIR_BEACON_MISSED) ||
- (pDeauthIndMsg->reasonCode ==
- eSIR_MAC_DISASSOC_DUE_TO_INACTIVITY_REASON))
- pSession->joinFailStatusCode.reasonCode = 0;
- else
- pSession->joinFailStatusCode.reasonCode =
- pDeauthIndMsg->reasonCode;
- /*
- * cfg layer expects 0 as reason code if
- * the driver dosent know the reason code
- * eSIR_BEACON_MISSED is defined as locally
- */
+ pSession->joinFailStatusCode.reasonCode =
+ pDeauthIndMsg->reasonCode;
} else {
sms_log(pMac, LOGW, FL("gets an unknown type (%d)"), type);
result = eCSR_ROAM_RESULT_NONE;