Pārlūkot izejas kodu

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
Selvaraj, Sridhar 8 gadi atpakaļ
vecāks
revīzija
c7d808965f

+ 20 - 0
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;
@@ -1424,6 +1434,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;

+ 2 - 13
core/sme/src/csr/csr_api_roam.c

@@ -11782,19 +11782,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;