From bc1bea09568136db8e0732fecf04d4d2a3d07025 Mon Sep 17 00:00:00 2001 From: Varun Reddy Yeturu Date: Thu, 1 Feb 2018 18:12:34 -0800 Subject: [PATCH] qcacld-3.0: Send ROAM_STOP if roam synch failed Send a ROAM_STOP command to firmware with an explicit reason code for the failure so that it is not blocked in WMA before sending it to firmware. Change-Id: I4d7e2e525c145ca0e990dcef85948285e2186c63 CRs-Fixed: 2182671 --- core/sme/inc/csr_neighbor_roam.h | 1 + core/sme/src/common/sme_api.c | 2 +- core/wma/src/wma_scan_roam.c | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/sme/inc/csr_neighbor_roam.h b/core/sme/inc/csr_neighbor_roam.h index 2f3d8567f44d..615812fcfb40 100644 --- a/core/sme/inc/csr_neighbor_roam.h +++ b/core/sme/inc/csr_neighbor_roam.h @@ -332,6 +332,7 @@ void csr_roam_reset_roam_params(tpAniSirGlobal mac_ptr); #define REASON_SUPPLICANT_DISABLED_ROAMING 39 #define REASON_CTX_INIT 40 #define REASON_FILS_PARAMS_CHANGED 41 +#define REASON_SME_ISSUED 42 #if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD) QDF_STATUS csr_roam_offload_scan(tpAniSirGlobal pMac, uint8_t sessionId, diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 86fb71acc3f1..4f5bcdc9e94a 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -7351,7 +7351,7 @@ QDF_STATUS sme_stop_roaming(tHalHandle hal, uint8_t session_id, uint8_t reason) if (reason == eCsrForcedDisassoc) req->reason = REASON_ROAM_STOP_ALL; else - req->reason = REASON_ROAM_SYNCH_FAILED; + req->reason = REASON_SME_ISSUED; req->sessionId = session_id; if (csr_neighbor_middle_of_roaming(mac_ctx, session_id)) req->middle_of_roaming = 1; diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index ccf8d0515e8d..2b208dea5865 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -1576,7 +1576,8 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle, wma_roam_scan_fill_scan_params(wma_handle, pMac, NULL, &scan_params); - if (roam_req->reason == REASON_ROAM_STOP_ALL) + if (roam_req->reason == REASON_ROAM_STOP_ALL || + roam_req->reason == REASON_ROAM_SYNCH_FAILED) mode = WMI_ROAM_SCAN_MODE_NONE; else mode = WMI_ROAM_SCAN_MODE_NONE | @@ -2382,7 +2383,7 @@ cleanup_label: roam_req = qdf_mem_malloc(sizeof(tSirRoamOffloadScanReq)); if (roam_req && synch_event) { roam_req->Command = ROAM_SCAN_OFFLOAD_STOP; - roam_req->reason = REASON_ROAM_STOP_ALL; + roam_req->reason = REASON_ROAM_SYNCH_FAILED; roam_req->sessionId = synch_event->vdev_id; wma_process_roaming_config(wma, roam_req); }