qcacld-3.0: Fix race condition between supplicant and driver

There is a race condition issue between supplicant and driver thread.
1.	Suppliant disable F/W roaming.
2.	Supplicant Invoked roaming.
3.	Driver reported roam completed to supplicant before EV_ROAM_DONE.
4. 	Supplicant tried to enabled roaming, failed for vdev ROAMING state.
5.	Roaming completed, but RSO kept disabled for supplicant disabled
	roaming flag not cleared.
6. 	F/W roaming kept disabled until next disconnect and reconnect.

To fix it, driver don't report roam completed event to supplicant until
vdev changed from ROAMING to CONNECTED.

Change-Id: I8f0db74b5dce69ea355fde2c43edaf6419c87eb0
CRs-Fixed: 3280727
Esse commit está contido em:
Jianmin Zhu
2022-09-01 15:58:14 +08:00
commit de Madan Koyyalamudi
commit b905ea4fac

Ver arquivo

@@ -885,7 +885,6 @@ cm_fw_roam_sync_propagation(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
policy_mgr_move_vdev_from_disabled_to_connection_tbl(psoc,
vdev_id);
mlo_roam_copy_partner_info(connect_rsp, roam_synch_data);
mlme_cm_osif_connect_complete(vdev, connect_rsp);
/**
* Don't send roam_sync complete for MLO link vdevs.
@@ -924,6 +923,7 @@ cm_fw_roam_sync_propagation(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
CM_PREFIX_REF(vdev_id, cm_id));
goto error;
}
mlme_cm_osif_connect_complete(vdev, connect_rsp);
mlme_cm_osif_roam_complete(vdev);
mlme_debug(CM_PREFIX_FMT, CM_PREFIX_REF(vdev_id, cm_id));
if (!wlan_vdev_mlme_is_mlo_link_vdev(vdev))