diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 7706d9425d..de29f1ba8b 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -19363,9 +19363,15 @@ csr_roam_offload_scan(struct mac_context *mac_ctx, uint8_t session_id, return QDF_STATUS_E_FAILURE; } - if (!csr_is_conn_state_connected(mac_ctx, session_id) && - command == ROAM_SCAN_OFFLOAD_UPDATE_CFG) + if (roam_info->neighborRoamState != + eCSR_NEIGHBOR_ROAM_STATE_CONNECTED && + (command == ROAM_SCAN_OFFLOAD_UPDATE_CFG || + command == ROAM_SCAN_OFFLOAD_START || + command == ROAM_SCAN_OFFLOAD_RESTART)) { + sme_debug("Session not in connected state, RSO not sent and state=%d ", + roam_info->neighborRoamState); return QDF_STATUS_E_FAILURE; + } temp_session_id = csr_get_roam_enabled_sta_sessionid(mac_ctx); if ((temp_session_id != WLAN_UMAC_VDEV_ID_MAX) && diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 46b96be753..748890d621 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -674,14 +674,7 @@ QDF_STATUS csr_neighbor_roam_indicate_disconnect(struct mac_context *mac, */ csr_roam_free_connect_profile(pPrevProfile); csr_roam_copy_connect_profile(mac, sessionId, pPrevProfile); - /* - * clear the roaming parameters that are per connection. - * For a new connection, they have to be programmed again. - */ - if (!csr_neighbor_middle_of_roaming(mac, sessionId)) { - csr_roam_reset_roam_params(mac); - csr_roam_restore_default_config(mac, sessionId); - } + if (pSession) { roam_session = &mac->roam.roamSession[sessionId]; if (pSession->pCurRoamProfile && (QDF_STA_MODE != @@ -768,6 +761,16 @@ QDF_STATUS csr_neighbor_roam_indicate_disconnect(struct mac_context *mac, pNeighborRoamInfo->uOsRequestedHandoff = 0; break; } + + /* + * clear the roaming parameters that are per connection. + * For a new connection, they have to be programmed again. + */ + if (!csr_neighbor_middle_of_roaming(mac, sessionId)) { + csr_roam_reset_roam_params(mac); + csr_roam_restore_default_config(mac, sessionId); + } + /*Inform the Firmware to STOP Scanning as the host has a disconnect. */ if (csr_roam_is_sta_mode(mac, sessionId)) csr_post_roam_state_change(mac, sessionId, ROAM_DEINIT,