diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index d0828230f0bd..c6c6548e7435 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -1320,6 +1320,17 @@ static QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle, roam_req->min_rssi_params[DEAUTH_MIN_RSSI]; ap_profile.min_rssi_params[BMISS_MIN_RSSI] = roam_req->min_rssi_params[BMISS_MIN_RSSI]; + if (!db2dbm_enabled) { + ap_profile.min_rssi_params[DEAUTH_MIN_RSSI].min_rssi -= + WMA_NOISE_FLOOR_DBM_DEFAULT; + ap_profile.min_rssi_params[DEAUTH_MIN_RSSI].min_rssi &= + 0x000000ff; + + ap_profile.min_rssi_params[BMISS_MIN_RSSI].min_rssi -= + WMA_NOISE_FLOOR_DBM_DEFAULT; + ap_profile.min_rssi_params[BMISS_MIN_RSSI].min_rssi &= + 0x000000ff; + } ap_profile.score_delta_param[IDLE_ROAM_TRIGGER] = roam_req->score_delta_param[IDLE_ROAM_TRIGGER]; @@ -1575,15 +1586,27 @@ void wma_send_roam_bss_load_config(WMA_HANDLE handle, { QDF_STATUS status; tp_wma_handle wma_handle = (tp_wma_handle) handle; + bool db2dbm_enabled; if (!wma_handle || !wma_handle->wmi_handle) { WMA_LOGE("WMA is closed, cannot send bss load config"); return; } - WMA_LOGD("%s: Sending bss load trig params vdev %u bss_load_threshold %u bss_load_sample_time: %u", + db2dbm_enabled = wmi_service_enabled(wma_handle->wmi_handle, + wmi_service_hw_db2dbm_support); + if (!db2dbm_enabled) { + params->rssi_threshold_5ghz -= WMA_NOISE_FLOOR_DBM_DEFAULT; + params->rssi_threshold_5ghz &= 0x000000ff; + + params->rssi_threshold_24ghz -= WMA_NOISE_FLOOR_DBM_DEFAULT; + params->rssi_threshold_24ghz &= 0x000000ff; + } + + WMA_LOGD("%s: Bss load trig params vdev %u threshold %u sample_time: %u 5Ghz RSSI threshold:%d 2.4G rssi threshold:%d", __func__, params->vdev_id, params->bss_load_threshold, - params->bss_load_sample_time); + params->bss_load_sample_time, params->rssi_threshold_5ghz, + params->rssi_threshold_24ghz); status = wmi_unified_send_bss_load_config(wma_handle->wmi_handle, params); @@ -1687,6 +1710,7 @@ wma_send_idle_roam_params(tp_wma_handle wma_handle, struct roam_offload_scan_req *roam_req) { QDF_STATUS status; + bool db2dbm_enabled; if (!wma_handle || !wma_handle->wmi_handle) { WMA_LOGE("WMA is closed, cannot send idle roam params"); @@ -1706,6 +1730,14 @@ wma_send_idle_roam_params(tp_wma_handle wma_handle, break; } + db2dbm_enabled = wmi_service_enabled(wma_handle->wmi_handle, + wmi_service_hw_db2dbm_support); + if (!db2dbm_enabled) { + roam_req->idle_roam_params.conn_ap_min_rssi -= + WMA_NOISE_FLOOR_DBM_DEFAULT; + roam_req->idle_roam_params.conn_ap_min_rssi &= 0x000000ff; + } + status = wmi_unified_send_idle_roam_params(wma_handle->wmi_handle, &roam_req->idle_roam_params); if (QDF_IS_STATUS_ERROR(status))