diff options
| author | Varun Reddy Yeturu <varunreddy.yeturu@codeaurora.org> | 2018-02-01 18:12:34 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-02-20 13:36:39 -0800 |
| commit | e70bbd09e6e13bd6e69ec98520df003317d97bcf (patch) | |
| tree | 9c003861ad28ab2267e2f304f43ea2894fa26942 | |
| parent | 245b65eb7230645168b8cee08fbc55e813d28bcd (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.h | 1 | ||||
| -rw-r--r-- | core/sme/src/common/sme_api.c | 2 | ||||
| -rw-r--r-- | 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 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); } |
