Browse 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 9 năm trước cách đây
mục cha
commit
e36aa82922
1 tập tin đã thay đổi với 13 bổ sung0 xóa
  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) &&