From a7b4ee1df84d696b0701b6731029e2e6203d8218 Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Fri, 8 May 2020 16:25:07 +0530 Subject: [PATCH] qcacld-3.0: Don't force RSSI trigger in controlled roaming mode Host configures rssi trigger, connected ap rssi delta and rssi threshold in firmware. As rssi threshold is hit, firmware start roam scan. Firmware decreases further RSSI threshold by connected ap rssi delta if matching profile ap not found and so on. Example: STA connects to an AP and host sets rssi trigger, connected ap rssi delta=5 and rssi threshold as -25dbm. Firmware starts roam scan as the rssi threshold is hit. In the roam scan if desired profile ap is not found, decreases rssi threshold by 5dbm i.e connected ap rssi delta. Now rssi threshold becomes -30dbm and then firmware triggers roam scan and so on. Thus the rssi threshold changes dynamically when controlled roaming mode is set from userspace, to fix this do not force RSSI triggers when controlled roaming from userspace is enable. Change-Id: I1de3f71ca96de9f464d5d33b0271f99c55cff535 CRs-Fixed: 2681882 --- core/sme/src/csr/csr_api_roam.c | 8 +++++++- core/wma/src/wma_scan_roam.c | 16 ++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 51a888c16ef5..8fae6f93e804 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -17666,6 +17666,10 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx, struct csr_roam_session *session) { uint32_t pmkid_modes = mac_ctx->mlme_cfg->sta.pmkid_modes; + struct sCsrNeighborRoamControlInfo *neighbor_roam_info; + + neighbor_roam_info = + &mac_ctx->roam.neighborRoamInfo[session->vdev_id]; req_buf->roam_offload_enabled = csr_is_roam_offload_enabled(mac_ctx); if (!req_buf->roam_offload_enabled) @@ -17708,8 +17712,10 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx, mac_ctx->mlme_cfg->lfr.min_delay_btw_roam_scans; req_buf->roam_trigger_reason_bitmask = mac_ctx->mlme_cfg->lfr.roam_trigger_reason_bitmask; + /* Do not force RSSI triggers in case controlled roaming enable */ req_buf->roam_force_rssi_trigger = - mac_ctx->mlme_cfg->lfr.roam_force_rssi_trigger; + (!neighbor_roam_info->roam_control_enable && + mac_ctx->mlme_cfg->lfr.roam_force_rssi_trigger); csr_update_roam_req_adaptive_11r(session, mac_ctx, req_buf); /* fill bss load triggered roam related configs */ diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 38c090f62f85..8609872a2c52 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -1890,14 +1890,10 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle, break; mode = WMI_ROAM_SCAN_MODE_PERIODIC; - /* Don't use rssi triggered roam scans if external app - * is in control of channel list. - */ - if (roam_req->ChannelCacheType != CHANNEL_LIST_STATIC || - roam_req->roam_force_rssi_trigger) + if (roam_req->roam_force_rssi_trigger) mode |= WMI_ROAM_SCAN_MODE_RSSI_CHANGE; - } else { + } else if (roam_req->roam_force_rssi_trigger) { mode = WMI_ROAM_SCAN_MODE_RSSI_CHANGE; } @@ -2191,14 +2187,10 @@ QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle, break; mode = WMI_ROAM_SCAN_MODE_PERIODIC; - /* Don't use rssi triggered roam scans if external app - * is in control of channel list. - */ - if (roam_req->ChannelCacheType != CHANNEL_LIST_STATIC || - roam_req->roam_force_rssi_trigger) + if (roam_req->roam_force_rssi_trigger) mode |= WMI_ROAM_SCAN_MODE_RSSI_CHANGE; - } else { + } else if (roam_req->roam_force_rssi_trigger) { mode = WMI_ROAM_SCAN_MODE_RSSI_CHANGE; }