Parcourir la source

qcacld-3.0: If association timeout send deauth to cleanup the peer session

qcacld-2.0 to qcacld-3.0 propagation

In the scenario where association times out because device has missed
the assoc resp sent by peer, the peer assumes the device to be
connected and thus when device again sends the auth for fresh
connection the peer sends deauth. Thus fresh connection also fails.

To avoid this send deauth after association time out, to cleanup
the session in peer.

Change-Id: I1f7bfbe804da0dc92ce4ece87dc65954b086133c
CRs-Fixed: 987455
Abhishek Singh il y a 9 ans
Parent
commit
e36aa82922
1 fichiers modifiés avec 13 ajouts et 0 suppressions
  1. 13 0
      core/mac/src/pe/lim/lim_process_mlm_req_messages.c

+ 13 - 0
core/mac/src/pe/lim/lim_process_mlm_req_messages.c

@@ -2535,6 +2535,19 @@ lim_process_assoc_failure_timeout(tpAniSirGlobal mac_ctx, uint32_t msg_type)
 	lim_log(mac_ctx, LOG1,
 		FL("Re/Association Response not received before timeout "));
 
+	/*
+	 * Send Deauth to handle the scenareo where association timeout happened
+	 * when device has missed the assoc resp sent by peer.
+	 * By sending deauth try to clear the session created on peer device.
+	 */
+	lim_log(mac_ctx, LOGE,
+		FL("Sessionid: %d try sending deauth on channel %d to BSSID: "
+		MAC_ADDRESS_STR), session->peSessionId,
+		session->currentOperChannel,
+		MAC_ADDR_ARRAY(session->bssId));
+	lim_send_deauth_mgmt_frame(mac_ctx, eSIR_MAC_UNSPEC_FAILURE_REASON,
+		session->bssId, session, false);
+
 	if ((LIM_IS_AP_ROLE(session)) ||
 	    ((session->limMlmState != eLIM_MLM_WT_ASSOC_RSP_STATE) &&
 	    (session->limMlmState != eLIM_MLM_WT_REASSOC_RSP_STATE) &&