summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Reddy Yeturu <varunreddy.yeturu@codeaurora.org>2018-02-01 18:12:34 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-02-20 13:36:39 -0800
commite70bbd09e6e13bd6e69ec98520df003317d97bcf (patch)
tree9c003861ad28ab2267e2f304f43ea2894fa26942
parent245b65eb7230645168b8cee08fbc55e813d28bcd (diff)
qcacld-3.0: Send ROAM_STOP if roam synch failed
if roam synch propagation fails, then a ROAM_STOP command is sent to firmware so that the firmware can send a HO_FAIL and hence gracefully disconnect and connect again. But, in this case, the reason code while sending ROAM_STOP was being sent as REASON_ROAM_STOP_ALL and this was not letting the command go to the firmware. 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
-rw-r--r--core/sme/inc/csr_neighbor_roam.h1
-rw-r--r--core/sme/src/common/sme_api.c2
-rw-r--r--core/wma/src/wma_scan_roam.c5
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 f58c7ac7b63e..d6eb7742d9dc 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -9272,7 +9272,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 cb9647ced00d..fbe11b36b238 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -2129,7 +2129,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 |
@@ -2965,7 +2966,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);
}