qcacld-3.0: Don't skip RSO stop command if roaming is enabled

Currently, roaming state machine relies on the disconnect
sequence where link vdev gets disconnected first and then
assoc vdev. RSO stop is sent as part of link disconnection
and skipped for assoc vdev disconnection as the roaming
state machine is per ML than per link.
If link vdev connection hasn't happened due to some
reason (e.g. link not available in scan while connect, single link
ML connection), RSO stop command is not sent to firmware due
dependency on above sequence.
Check roam state while processing assoc vdev disconnect and send
RSO stop command to firmware if it's in enabled state to cleanup
the RSO state machine in firmware.

Change-Id: If3e9a579c0f3da27a337fbbffcaf0beb580bd8bd
CRs-Fixed: 3215155
This commit is contained in:
Srinivas Dasari
2022-06-15 00:06:59 +05:30
committato da Madan Koyyalamudi
parent c4d1f8e948
commit 70e98be7ab
4 ha cambiato i file con 33 aggiunte e 15 eliminazioni

Vedi File

@@ -1558,4 +1558,6 @@ bool wlan_cm_same_band_sta_allowed(struct wlan_objmgr_psoc *psoc);
* Return: qdf_status
*/
QDF_STATUS cm_cleanup_mlo_link(struct wlan_objmgr_vdev *vdev);
bool wlan_is_roaming_enabled(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id);
#endif /* WLAN_CM_ROAM_API_H__ */

Vedi File

@@ -3392,3 +3392,17 @@ cm_cleanup_mlo_link(struct wlan_objmgr_vdev *vdev)
return status;
}
bool wlan_is_roaming_enabled(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id)
{
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
enum roam_offload_state cur_state;
cur_state = mlme_get_roam_state(psoc, vdev_id);
if (cur_state == WLAN_ROAM_RSO_ENABLED ||
cur_state == WLAN_ROAMING_IN_PROG ||
cur_state == WLAN_ROAM_SYNCH_IN_PROG)
return true;
return false;
}

Vedi File

@@ -28,16 +28,7 @@
bool ucfg_is_roaming_enabled(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id)
{
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
enum roam_offload_state cur_state;
cur_state = mlme_get_roam_state(psoc, vdev_id);
if (cur_state == WLAN_ROAM_RSO_ENABLED ||
cur_state == WLAN_ROAMING_IN_PROG ||
cur_state == WLAN_ROAM_SYNCH_IN_PROG)
return true;
return false;
return wlan_is_roaming_enabled(pdev, vdev_id);
}
QDF_STATUS