qcacld-3.0: Don't enable roam if MLO vdev is not up

When MLO sta disconnected, sta_ctx->wlan_connected_links is cleared,
mlo_check_if_all_vdev_up return true, RSO can be enabled on this stopped
vdev, F/W assert will happen for roam struct is absent.

To fix it, for MLO vdev, don't enable roam if current vdev is not up like
legacy vdev.

Change-Id: I32e1b50525edcc4e7f6b42078e4fda9f415c9841
CRs-Fixed: 3555349
This commit is contained in:
Jianmin Zhu
2023-07-12 14:57:50 +08:00
committed by Rahul Choudhary
vanhempi cc781de492
commit 331bebf233

Näytä tiedosto

@@ -767,6 +767,12 @@ mlo_check_if_all_vdev_up(struct wlan_objmgr_vdev *vdev)
return false; return false;
} }
if (QDF_IS_STATUS_ERROR(wlan_vdev_is_up(vdev))) {
mlo_debug("Vdev id %d is not in up state",
wlan_vdev_get_id(vdev));
return false;
}
mlo_dev_ctx = vdev->mlo_dev_ctx; mlo_dev_ctx = vdev->mlo_dev_ctx;
sta_ctx = mlo_dev_ctx->sta_ctx; sta_ctx = mlo_dev_ctx->sta_ctx;
for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) { for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {
@@ -775,7 +781,7 @@ mlo_check_if_all_vdev_up(struct wlan_objmgr_vdev *vdev)
if (qdf_test_bit(i, sta_ctx->wlan_connected_links) && if (qdf_test_bit(i, sta_ctx->wlan_connected_links) &&
!QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(mlo_dev_ctx->wlan_vdev_list[i]))) { !QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(mlo_dev_ctx->wlan_vdev_list[i]))) {
mlo_debug("Vdev id %d is not in connected state", mlo_debug("Vdev id %d is not in up state",
wlan_vdev_get_id(mlo_dev_ctx->wlan_vdev_list[i])); wlan_vdev_get_id(mlo_dev_ctx->wlan_vdev_list[i]));
return false; return false;
} }