From a48a9c04681bba5f271ed3af41e1055e98fb3ff4 Mon Sep 17 00:00:00 2001 From: Arif Hussain Date: Tue, 31 Jan 2017 14:37:45 -0800 Subject: [PATCH] qcacld-3.0: Handle resetting do_not_roam flag in sme_config_fast_roaming do_not_roam flag is set when supplicant initiate connect request with BSSID. This flag reset when supplicant sends vendor command to enable roaming. If roaming is disabled using driver command, this supplicant request to enable roaming will be ignored in sme_config_fast_roaming function and do_not_roam flag remains set. So make sure to update do_not_roam flag in sme_config_fast_roaming function even before validating isFastRoamIniFeatureEnabled to process or skip roam request from supplicant. Change-Id: I541b9e5a66e7d7ad8b2040cf9070a7893be66b5f CRs-Fixed: 2000718 --- core/sme/src/common/sme_api.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index cc404d77c744..41b3086e754a 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -8916,6 +8916,19 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id, tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id); QDF_STATUS status; + /* do_not_roam flag is set in wlan_hdd_cfg80211_connect_start + * when supplicant initiate connect request with BSSID. + * This flag reset when supplicant sends vendor command to enable + * roaming after association. + * + * This request from wpa_supplicant will be skipped in this function + * if roaming is disabled using driver command or INI and do_not_roam + * flag remains set. So make sure to set do_not_roam flag as per + * wpa_supplicant even if roam request from wpa_supplicant ignored. + */ + if (session && session->pCurRoamProfile) + session->pCurRoamProfile->do_not_roam = !is_fast_roam_enabled; + if (!mac_ctx->roam.configParam.isFastRoamIniFeatureEnabled) { sms_log(mac_ctx, LOGE, FL("Fast roam is disabled through ini")); if (!is_fast_roam_enabled) @@ -8923,9 +8936,6 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id, return QDF_STATUS_E_FAILURE; } - if (session && session->pCurRoamProfile) - session->pCurRoamProfile->do_not_roam = !is_fast_roam_enabled; - status = csr_neighbor_roam_update_fast_roaming_enabled(mac_ctx, session_id, is_fast_roam_enabled); if (!QDF_IS_STATUS_SUCCESS(status)) {