ソースを参照

qcacld-3.0: Check disconnect state while fetching MLO vdev_id

In wlan_cm_mlo_update_disconnecting_vdev_id(), add an extra
check of wlan_cm_is_vdev_disconnecting with
wlan_cm_get_active_req_type, to check the vdev state as well,
along with the active_cm_id flag.

Change-Id: I80d59d419555864d6c9712e0d93efce0a6c203e4
CRs-Fixed: 3262543
Deeksha Gupta 2 年 前
コミット
446d532959

+ 9 - 0
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_disconnect.c

@@ -422,6 +422,14 @@ wlan_cm_mlo_update_disconnecting_vdev_id(struct wlan_objmgr_psoc *psoc,
 		goto done;
 	}
 
+	/*
+	 * During the link vdev disconnection the RSO stop vdev id will be of
+	 * assoc vdev (changed during cm_handle_mlo_rso_state_change), So try
+	 * to get the link vdev on which disconnect was actually happening i.e
+	 * the one with active disconnecting state from the mlo links, so that
+	 * continue disconnect is initiated on a proper vdev in connection
+	 * manager.
+	 */
 	mlo_get_ml_vdev_list(vdev, &num_links, vdev_list);
 	if (!num_links) {
 		mlme_err("No VDEVs under vdev id: %d", *vdev_id);
@@ -437,6 +445,7 @@ wlan_cm_mlo_update_disconnecting_vdev_id(struct wlan_objmgr_psoc *psoc,
 
 	for (i = 0; i < num_links; i++) {
 		if (wlan_vdev_mlme_is_mlo_link_vdev(vdev_list[i]) &&
+		    wlan_cm_is_vdev_disconnecting(vdev_list[i]) &&
 		    wlan_cm_get_active_req_type(vdev_list[i]) ==
 							CM_DISCONNECT_ACTIVE) {
 			/*