diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 382a7361d994..0314d819087a 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -19616,6 +19616,7 @@ csr_roam_switch_to_rso_start(struct mac_context *mac, uint8_t vdev_id, uint8_t control_bitmap; bool sup_disabled_roaming; bool rso_allowed = csr_roam_is_roam_offload_scan_enabled(mac); + uint8_t rso_command = ROAM_SCAN_OFFLOAD_START; cur_state = mlme_get_roam_state(mac->psoc, vdev_id); switch (cur_state) { @@ -19631,9 +19632,10 @@ csr_roam_switch_to_rso_start(struct mac_context *mac, uint8_t vdev_id, break; case ROAM_RSO_STARTED: /* - * Already the roaming module is initialized at fw, - * nothing to do here + * Send RSO update config if roaming already enabled */ + rso_command = ROAM_SCAN_OFFLOAD_UPDATE_CFG; + break; default: return QDF_STATUS_SUCCESS; } @@ -19650,8 +19652,7 @@ csr_roam_switch_to_rso_start(struct mac_context *mac, uint8_t vdev_id, return QDF_STATUS_E_FAILURE; } - status = csr_roam_offload_scan(mac, vdev_id, ROAM_SCAN_OFFLOAD_START, - reason); + status = csr_roam_offload_scan(mac, vdev_id, rso_command, reason); if (QDF_IS_STATUS_ERROR(status)) { sme_debug("ROAM: RSO start failed"); return status; @@ -21876,6 +21877,8 @@ static QDF_STATUS csr_process_roam_sync_callback(struct mac_context *mac_ctx, eCSR_ROAM_SUBSTATE_NONE, session_id); } + csr_neighbor_roam_state_transition(mac_ctx, + eCSR_NEIGHBOR_ROAM_STATE_INIT, session_id); } roam_info->nBeaconLength = 0; roam_info->nAssocReqLength = roam_synch_data->reassoc_req_length -