浏览代码

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 年之前
父节点
当前提交
e36aa82922
共有 1 个文件被更改,包括 13 次插入0 次删除
  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) &&