diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 06cc8501b3f3..d16b517456e1 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -8308,6 +8308,7 @@ QDF_STATUS csr_roam_connect(struct mac_context *mac, uint32_t sessionId, csr_roam_cancel_roaming(mac, sessionId); csr_scan_abort_mac_scan(mac, sessionId, INVAL_SCAN_ID); csr_roam_remove_duplicate_command(mac, sessionId, NULL, eCsrHddIssued); + /* Check whether ssid changes */ if (csr_is_conn_state_connected(mac, sessionId) && pProfile->SSIDs.numOfSSIDs && @@ -18485,6 +18486,17 @@ csr_roam_switch_to_init(struct mac_context *mac, uint8_t vdev_id, uint32_t roaming_bitmap; bool dual_sta_roam_active; QDF_STATUS status; + struct wlan_objmgr_vdev *vdev; + struct mlme_roam_after_data_stall *vdev_roam_params; + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc, vdev_id, + WLAN_LEGACY_SME_ID); + if (vdev) { + vdev_roam_params = mlme_get_roam_invoke_params(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); + if (vdev_roam_params) + vdev_roam_params->roam_invoke_in_progress = false; + } dual_sta_roam_active = wlan_mlme_get_dual_sta_roaming_enabled(mac->psoc); @@ -18710,8 +18722,20 @@ csr_roam_switch_to_deinit(struct mac_context *mac, uint8_t vdev_id, uint8_t reason) { QDF_STATUS status; + struct wlan_objmgr_vdev *vdev; + struct mlme_roam_after_data_stall *vdev_roam_params; enum roam_offload_state cur_state = mlme_get_roam_state(mac->psoc, vdev_id); + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc, vdev_id, + WLAN_LEGACY_SME_ID); + if (vdev) { + vdev_roam_params = mlme_get_roam_invoke_params(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); + if (vdev_roam_params) + vdev_roam_params->roam_invoke_in_progress = false; + } + switch (cur_state) { /* * If RSO stop is not done already, send RSO stop first and