qcacld-3.0: Allow RSO_STOP even if the vdevs are not UP

Host has to issue RSO_STOP to firmware before performing any
vdev operations(start/stop/down/up,..). Otherwise firmware may
face memory corruptions if it tries to access the same
vdev while host is modifying it.
Currently, RSO_STOP is sent to firmware only if all vdevs are
UP. But in OWE/EAPOL offloaded roaming cases, assoc vdev
would be UP and partner vdev would be down till EAPOL is
done and keys are received from userspace. Connect is started
on partner vdev once the keys are received. Host driver is going
to do a vdev start as part of this connect. So, RSO_STOP is
supposed to be sent to firmware before performing any connect
operations on partner vdev.

So, send RSO_STOP to firmware right after sending
ROAM_SYNC_COMPLETE even if the link vdev is no UP.

Change-Id: Idaa15c7b0cedff5fd6f276626047f349c500a5b8
CRs-Fixed: 3769038
This commit is contained in:
Srinivas Dasari
2024-03-21 17:39:13 +05:30
committato da Ravindra Konda
parent 7119280d0f
commit c0c64ac422

Vedi File

@@ -4958,7 +4958,8 @@ cm_roam_state_change(struct wlan_objmgr_pdev *pdev,
is_up = QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(vdev));
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
if (requested_state != WLAN_ROAM_DEINIT && !is_up) {
if ((requested_state != WLAN_ROAM_DEINIT &&
requested_state != WLAN_ROAM_RSO_STOPPED) && !is_up) {
mlme_debug("ROAM: roam state(%d) change requested in non-connected state",
requested_state);
goto end;