qcacld-3.0: Don't clear MLO vdev flags while cleanup the link
Currently, MLO flags are cleared before issuing disconnect on the link vdev when DUT roams to a single link ML-AP. But these flags get cleared as part of disconnect handler and not supposed to be cleared anywhere else. Clearing these flags before issuing disconnect on link causes sending disconnect done indication to kernel as the flags got cleared, which make the vdev as non-MLO. This race condition is possible when a disconnect is queued from userspace on link vdev while one disconnect gets processed on it(due to single link roaming). Change-Id: I8206c1b8197bf26ad852eafb631c8585bc749846 CRs-Fixed: 3439175
This commit is contained in:

committed by
Madan Koyyalamudi

parent
a6d07e9314
commit
12c760b99b
@@ -88,16 +88,16 @@ end:
|
||||
static void
|
||||
mlo_cleanup_link(struct wlan_objmgr_vdev *vdev, uint8_t num_setup_links)
|
||||
{
|
||||
if (num_setup_links >= 2 &&
|
||||
wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
/*
|
||||
* Cleanup the non-assoc link link in below cases,
|
||||
* 1. Roamed to single link-MLO AP
|
||||
* 2. Roamed to an MLO AP but 4-way handshake is offloaded to
|
||||
* userspace, i.e.auth_status = ROAM_AUTH_STATUS_CONNECTED
|
||||
* 3. Roamed to non-MLO AP(num_setup_links = 0)
|
||||
* This covers all supported combinations. So cleanup the link always.
|
||||
*/
|
||||
if (wlan_vdev_mlme_is_mlo_link_vdev(vdev))
|
||||
cm_cleanup_mlo_link(vdev);
|
||||
} else if (!num_setup_links || wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
wlan_vdev_mlme_clear_mlo_vdev(vdev);
|
||||
if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
cm_cleanup_mlo_link(vdev);
|
||||
wlan_vdev_mlme_clear_mlo_link_vdev(vdev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user