浏览代码

qcacld-3.0: Add check to avoid multiple disassoc on ML disconnect

When send disassoc, check if ML peer state is ML_PEER_DISCONN_INITIATED
that indicates the link vdev has sent disassoc frame to FW. If the
check is true, then do not send another disassoc for assoc vdev
to avoid FW assert.

Change-Id: I8ba98c98fa3af8f4a547f4b7e63c73a44e32df74
CRs-Fixed: 3379097
Jianmin Zhu 2 年之前
父节点
当前提交
a8256d8add
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      core/mac/src/pe/lim/lim_send_management_frames.c

+ 11 - 0
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -4232,6 +4232,17 @@ lim_send_disassoc_mgmt_frame(struct mac_context *mac,
 		if (waitForAck)
 			lim_send_disassoc_cnf(mac);
 		return;
+	} else if (lim_is_ml_peer_state_disconn(mac, pe_session, peer)) {
+		/**
+		 * Check if disassoc is already sent on link vdev and ML peer
+		 * state is moved to ML_PEER_DISCONN_INITIATED. In which case,
+		 * do not send disassoc on assoc vdev, issue disassoc only if
+		 * this check fails.
+		 */
+		pe_debug("disassoc tx not required for vdev id %d",
+			 pe_session->vdev_id);
+		lim_send_disassoc_cnf(mac);
+		return;
 	}
 	smeSessionId = pe_session->smeSessionId;