Эх сурвалжийг харах

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
Jianmin Zhu 2 жил өмнө
parent
commit
b905ea4fac

+ 1 - 1
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c

@@ -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))