From da80602fa6f4cce4ea22a227afb9052c4d30ef98 Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Wed, 26 Feb 2020 14:47:36 +0530 Subject: [PATCH] qcacld-3.0: Restore default RSO configs in driver only on disconnect Restore default RSO configs in host driver on disconnect, as vdev state in the firmware is VDEV_STOP no need to update default RSO configs in firmware. Change-Id: I061dbfcc5e3fb5350a7fe240d8b1405e1548d7d5 CRs-fixed: 2627107 --- core/sme/src/csr/csr_api_roam.c | 10 ++++++++-- core/sme/src/csr/csr_neighbor_roam.c | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 7706d9425d79..de29f1ba8b26 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 46b96be753be..748890d621fc 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,