Browse Source

qcacld-3.0: Fix assert for wrong mlo_vdev count

Current issue:
When roam from legacy to MLO, set vdev MLO flags but not increase the
mlo_vdev count, when disconnect, decrease mlo_vdev count, assert will
happen.
Solution:
Use API wlan_vdev_mlme_set_mlo_vdev and wlan_vdev_mlme_clear_mlo_vdev to
set MLO vdev flag.

Change-Id: Ib6fc2e479f222dca2f1c30df6d5fcf27fd07ae29
CRs-Fixed: 3299156
Jianmin Zhu 2 years ago
parent
commit
a9db1fa24b
1 changed files with 4 additions and 7 deletions
  1. 4 7
      components/umac/mlme/mlo_mgr/src/wlan_mlo_mgr_roam.c

+ 4 - 7
components/umac/mlme/mlo_mgr/src/wlan_mlo_mgr_roam.c

@@ -70,13 +70,11 @@ mlo_update_for_multi_link_roam(struct wlan_objmgr_psoc *psoc,
 	}
 
 	if (vdev_id == ml_link_vdev_id) {
-		wlan_vdev_mlme_feat_ext2_cap_set(vdev,
-						 WLAN_VDEV_FEXT2_MLO);
+		wlan_vdev_mlme_set_mlo_vdev(vdev);
 		goto end;
 	}
 
-	wlan_vdev_mlme_feat_ext2_cap_set(vdev,
-					 WLAN_VDEV_FEXT2_MLO);
+	wlan_vdev_mlme_set_mlo_vdev(vdev);
 	wlan_vdev_mlme_feat_ext2_cap_set(vdev,
 					 WLAN_VDEV_FEXT2_MLO_STA_LINK);
 
@@ -90,7 +88,7 @@ static void
 mlo_cleanup_link(struct wlan_objmgr_vdev *vdev, bool is_legacy)
 {
 	if (is_legacy || wlan_vdev_mlme_is_mlo_link_vdev(vdev))
-		wlan_vdev_mlme_feat_ext2_cap_clear(vdev, WLAN_VDEV_FEXT2_MLO);
+		wlan_vdev_mlme_clear_mlo_vdev(vdev);
 
 	if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
 		cm_cleanup_mlo_link(vdev);
@@ -145,8 +143,7 @@ mlo_clear_link_bmap(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
 	}
 
 	mlo_clear_connect_req_links_bmap(vdev);
-	wlan_vdev_mlme_feat_ext2_cap_clear(vdev,
-					   WLAN_VDEV_FEXT2_MLO);
+	wlan_vdev_mlme_clear_mlo_vdev(vdev);
 	if (wlan_vdev_mlme_is_mlo_link_vdev(vdev))
 		wlan_vdev_mlme_feat_ext2_cap_clear(vdev,
 				WLAN_VDEV_FEXT2_MLO_STA_LINK);