qcacmn: Count MLO vdevs in a pdev

Count the MLO vdevs in a pdev. WLAN_VDEV_FEXT2_MLO feature
flag in vdev object is set for all MLO vdevs. Simple solution is
to increment/decrement the count on every set/clear of
WLAN_VDEV_FEXT2_MLO feature flag. Since this feature flag will be
set/clear at multiple places for a given vdev, this approach
will lead to wrong MLO vdev count. To fix this we need to
increment/decrement the count on first set/first clear of
WLAN_VDEV_FEXT2_MLO flag. Add a lock also to prevent the race
conditions.

CRs-Fixed: 3106235
Change-Id: Ice7edde04553088fbb7c9b769508d441ccd6e4bf
This commit is contained in:
Edayilliam Jayadev
2022-01-10 10:43:18 +05:30
committed by Madan Koyyalamudi
parent 70a8e8a708
commit 40dacfa471
9 changed files with 351 additions and 40 deletions

View File

@@ -530,8 +530,7 @@ void osif_update_partner_vdev_info(struct wlan_objmgr_vdev *vdev,
&partner_info.partner_link_info[i].link_addr);
if (tmp_vdev) {
mlo_update_connect_req_links(tmp_vdev, 1);
wlan_vdev_mlme_feat_ext2_cap_set(
tmp_vdev, WLAN_VDEV_FEXT2_MLO);
wlan_vdev_mlme_set_mlo_vdev(tmp_vdev);
wlan_vdev_mlme_feat_ext2_cap_set(
tmp_vdev, WLAN_VDEV_FEXT2_MLO_STA_LINK);
wlan_vdev_set_link_id(
@@ -617,7 +616,7 @@ QDF_STATUS osif_update_mlo_partner_info(
}
wlan_vdev_set_link_id(vdev, linkid);
wlan_vdev_mlme_feat_ext2_cap_set(vdev, WLAN_VDEV_FEXT2_MLO);
wlan_vdev_mlme_set_mlo_vdev(vdev);
}
qdf_mem_copy(&connect_req->ml_parnter_info,