From cd737decf2331d557da2d8a72ce93b055054c31d Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Tue, 5 Mar 2019 17:01:24 +0530 Subject: [PATCH] qcacld-3.0: Allow roam invoke while FASTREASSOC While handling userspace-directed re-association, driver checks for flag "supplicant_disabled_roaming" before sending roam invoke command after connection. Currently, the value of supplicant_disabled_roaming is getting updated by value comes through vendor command QCA_WLAN_VENDOR_ATTR_ROAMING_POLICY. In case if roaming does not get enabled using vendor command in __wlan_hdd_cfg80211_set_fast_roaming, driver rejects fast re-association cmd. This leads to roaming failure. Fix is to allow roam invoke command irrespective of flag "supplicant_disabled_roaming" and send csr_roam_offload_scan with reason REASON_SUPPLICANT_DISABLED_ROAMING instead of REASON_DISCONNECTED while processing FASTREASSOC command. Change-Id: Iee55fff8dd9445a2fb2b96a244f59a763f207dd5 CRs-Fixed: 2408861 --- core/sme/src/common/sme_api.c | 6 ++---- core/sme/src/csr/csr_neighbor_roam.c | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 6a821fa96071..d9495e3cec9b 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -13530,10 +13530,8 @@ QDF_STATUS sme_fast_reassoc(mac_handle_t mac_handle, } roam_profile = session->pCurRoamProfile; - if (roam_profile->supplicant_disabled_roaming || - roam_profile->driver_disabled_roaming) { - sme_debug("roaming status in Supplicant %d and in driver %d", - roam_profile->supplicant_disabled_roaming, + if (roam_profile->driver_disabled_roaming) { + sme_debug("roaming status in driver %d", roam_profile->driver_disabled_roaming); return QDF_STATUS_E_FAILURE; } diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 6b120d72c862..235549e50273 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -141,8 +141,8 @@ QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(struct mac_context *mac REASON_CONNECT); } else { csr_roam_offload_scan(mac_ctx, session_id, - ROAM_SCAN_OFFLOAD_STOP, - REASON_DISCONNECTED); + ROAM_SCAN_OFFLOAD_STOP, + REASON_SUPPLICANT_DISABLED_ROAMING); } sme_release_global_lock(&mac_ctx->sme); }