From 7a7a6e85bb6a6a9ac67d969dd7ddf6599e7b7000 Mon Sep 17 00:00:00 2001 From: Varun Reddy Yeturu Date: Wed, 26 Jul 2017 10:59:39 -0700 Subject: [PATCH] qcacmn: Pass config parameters for bad RSSI roaming to firmware Fill the roaming parameters wmi_roam_bg_scan_roaming_param and send them to firmware to be consumed for the background roaming at bad RSSI Change-Id: I08786141d28f8459aad27aaf53816ec4cdec7f08 CRs-Fixed: 2082906 --- wmi/inc/wmi_unified_param.h | 4 ++++ wmi/src/wmi_unified_tlv.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 1c2e1629b291..0a11f47ebe52 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -1976,6 +1976,8 @@ struct roam_offload_scan_params { * @dense_min_aps_cnt: dense roam minimum APs * @initial_dense_status: dense status detected by host * @traffic_threshold: dense roam RSSI threshold + * @bg_scan_bad_rssi_thresh: Bad RSSI threshold to perform bg scan + * @bg_scan_client_bitmap: Bitmap used to identify the client scans to snoop */ struct roam_offload_scan_rssi_params { int8_t rssi_thresh; @@ -1999,6 +2001,8 @@ struct roam_offload_scan_rssi_params { int initial_dense_status; int traffic_threshold; int32_t rssi_thresh_offset_5g; + int8_t bg_scan_bad_rssi_thresh; + uint32_t bg_scan_client_bitmap; }; /** diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 7814ba21f433..f8bffbc021da 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -5905,6 +5905,7 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_h wmi_roam_scan_extended_threshold_param *ext_thresholds = NULL; wmi_roam_earlystop_rssi_thres_param *early_stop_thresholds = NULL; wmi_roam_dense_thres_param *dense_thresholds = NULL; + wmi_roam_bg_scan_roaming_param *bg_scan_params = NULL; len = sizeof(wmi_roam_scan_rssi_threshold_fixed_param); len += WMI_TLV_HDR_SIZE; /* TLV for ext_thresholds*/ @@ -5913,6 +5914,8 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_h len += sizeof(wmi_roam_earlystop_rssi_thres_param); len += WMI_TLV_HDR_SIZE; /* TLV for dense thresholds*/ len += sizeof(wmi_roam_dense_thres_param); + len += WMI_TLV_HDR_SIZE; /* TLV for BG Scan*/ + len += sizeof(wmi_roam_bg_scan_roaming_param); buf = wmi_buf_alloc(wmi_handle, len); if (!buf) { WMI_LOGE("%s : wmi_buf_alloc failed", __func__); @@ -5995,6 +5998,20 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_h WMITLV_GET_STRUCT_TLVLEN (wmi_roam_dense_thres_param)); + buf_ptr += sizeof(wmi_roam_dense_thres_param); + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, + sizeof(wmi_roam_bg_scan_roaming_param)); + buf_ptr += WMI_TLV_HDR_SIZE; + bg_scan_params = (wmi_roam_bg_scan_roaming_param *) buf_ptr; + bg_scan_params->roam_bg_scan_bad_rssi_thresh = + roam_req->bg_scan_bad_rssi_thresh; + bg_scan_params->roam_bg_scan_client_bitmap = + roam_req->bg_scan_client_bitmap; + WMITLV_SET_HDR(&bg_scan_params->tlv_header, + WMITLV_TAG_STRUC_wmi_roam_bg_scan_roaming_param, + WMITLV_GET_STRUCT_TLVLEN + (wmi_roam_bg_scan_roaming_param)); + status = wmi_unified_cmd_send(wmi_handle, buf, len, WMI_ROAM_SCAN_RSSI_THRESHOLD); if (QDF_IS_STATUS_ERROR(status)) {