From 7fc616d09a3b713a43f7ae893d1dbc20f8f06ffc Mon Sep 17 00:00:00 2001 From: Varun Reddy Yeturu Date: Mon, 25 Apr 2016 17:03:56 -0700 Subject: [PATCH] qcacld-3.0: Disable HI_RSSI_SCAN in few scenarios qcacld-2.0 to qcacld-3.0 propagation The HI_RSSI_SCAN feature is only meant to address the scenario where user walks into a home which has dual band AP and the 2.4G AP is visible initially and then the 5G AP is visible later. Disable the HI_RSSI_SCAN feature in the following cases: 1. Connection is a roaming connection 2. Connection is made with a 5G AP 3. Connection is made with a 2.4G AP, but the rssi is stronger than the hi_rssi_lookup_threshold CRs-Fixed: 975401 Change-Id: I86c63d9f8b51b6bdccc804163241ffe5640baf4d --- core/sme/inc/csr_internal.h | 1 + core/sme/src/csr/csr_api_roam.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 4785acff94b1..f44b8621724e 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -990,6 +990,7 @@ typedef struct tagCsrRoamSession { bool ch_switch_in_progress; bool roam_synch_in_progress; bool supported_nss_1x1; + bool disable_hi_rssi; } tCsrRoamSession; typedef struct tagCsrRoamStruct { diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index c4576e58024c..1ce53f078a8e 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -13437,6 +13437,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, struct ps_global_info *ps_global_info = &pMac->sme.ps_global_info; struct ps_params *ps_param = &ps_global_info->ps_params[sessionId]; uint8_t ese_config = 0; + tpCsrNeighborRoamControlInfo neigh_roam_info; if (!pSession) { @@ -13448,6 +13449,20 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, sms_log(pMac, LOGE, FL(" pBssDescription is NULL")); return QDF_STATUS_E_FAILURE; } + neigh_roam_info = &pMac->roam.neighborRoamInfo[sessionId]; + if ((eWNI_SME_REASSOC_REQ == messageType) || + CDS_IS_CHANNEL_5GHZ(pBssDescription->channelId) || + (abs(pBssDescription->rssi) < + (neigh_roam_info->cfgParams.neighborLookupThreshold + + neigh_roam_info->cfgParams.hi_rssi_scan_rssi_delta))) { + pSession->disable_hi_rssi = true; + sms_log(pMac, LOG1, + FL("Disabling HI_RSSI feature, AP channel=%d, rssi=%d"), + pBssDescription->channelId, pBssDescription->rssi); + } else { + pSession->disable_hi_rssi = false; + } + do { pSession->joinFailStatusCode.statusCode = eSIR_SME_SUCCESS; @@ -16948,14 +16963,11 @@ csr_roam_offload_scan(tpAniSirGlobal mac_ctx, uint8_t session_id, * is useful only if we are connected to a 2.4 GHz AP and we wish * to connect to a better 5GHz AP is available. */ - if (CDS_IS_CHANNEL_5GHZ(op_channel)) { - QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, - "Disabling HI_RSSI feature as connected AP is 5GHz"); + if (session->disable_hi_rssi) req_buf->hi_rssi_scan_rssi_delta = 0; - } else { + else req_buf->hi_rssi_scan_rssi_delta = roam_info->cfgParams.hi_rssi_scan_rssi_delta; - } QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, "hi_rssi:delta=%d, max_count=%d, delay=%d, ub=%d", req_buf->hi_rssi_scan_rssi_delta,