소스 검색

qcacmn: Add support for dense roam params in wmi layer

qcacld-2.0 to qcacmn propagation

In High dense environment roaming should be triggered early
at dense RSSI threshold which provide better throughput result.
Add support for dense roaming parameters to read from ini file
and send to FW with other roaming parameters

CRs-Fixed: 953579
Change-Id: Ia63bfdd1248b4507d988b019f07164a7c75566af
Gupta, Kapil 9 년 전
부모
커밋
7e652921ab
1개의 변경된 파일19개의 추가작업 그리고 1개의 파일을 삭제
  1. 19 1
      wmi_unified_tlv.c

+ 19 - 1
wmi_unified_tlv.c

@@ -4125,13 +4125,15 @@ QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_handle,
 	wmi_roam_scan_rssi_threshold_fixed_param *rssi_threshold_fp;
 	wmi_roam_scan_rssi_threshold_fixed_param *rssi_threshold_fp;
 	wmi_roam_scan_extended_threshold_param *ext_thresholds = NULL;
 	wmi_roam_scan_extended_threshold_param *ext_thresholds = NULL;
 	wmi_roam_earlystop_rssi_thres_param *early_stop_thresholds = NULL;
 	wmi_roam_earlystop_rssi_thres_param *early_stop_thresholds = NULL;
-
+	wmi_roam_dense_thres_param *dense_thresholds = NULL;
 
 
 	len = sizeof(wmi_roam_scan_rssi_threshold_fixed_param);
 	len = sizeof(wmi_roam_scan_rssi_threshold_fixed_param);
 	len += WMI_TLV_HDR_SIZE; /* TLV for ext_thresholds*/
 	len += WMI_TLV_HDR_SIZE; /* TLV for ext_thresholds*/
 	len += sizeof(wmi_roam_scan_extended_threshold_param);
 	len += sizeof(wmi_roam_scan_extended_threshold_param);
 	len += WMI_TLV_HDR_SIZE;
 	len += WMI_TLV_HDR_SIZE;
 	len += sizeof(wmi_roam_earlystop_rssi_thres_param);
 	len += sizeof(wmi_roam_earlystop_rssi_thres_param);
+	len += WMI_TLV_HDR_SIZE; /* TLV for dense thresholds*/
+	len += sizeof(wmi_roam_dense_thres_param);
 	buf = wmi_buf_alloc(wmi_handle, len);
 	buf = wmi_buf_alloc(wmi_handle, len);
 	if (!buf) {
 	if (!buf) {
 		WMA_LOGE("%s : wmi_buf_alloc failed", __func__);
 		WMA_LOGE("%s : wmi_buf_alloc failed", __func__);
@@ -4196,6 +4198,22 @@ QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_handle,
 		WMITLV_GET_STRUCT_TLVLEN
 		WMITLV_GET_STRUCT_TLVLEN
 		(wmi_roam_earlystop_rssi_thres_param));
 		(wmi_roam_earlystop_rssi_thres_param));
 
 
+	buf_ptr += sizeof(wmi_roam_earlystop_rssi_thres_param);
+	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
+			 sizeof(wmi_roam_dense_thres_param));
+	buf_ptr += WMI_TLV_HDR_SIZE;
+	dense_thresholds = (wmi_roam_dense_thres_param *) buf_ptr;
+	dense_thresholds->roam_dense_rssi_thres_offset =
+			roam_req->dense_rssi_thresh_offset;
+	dense_thresholds->roam_dense_min_aps = roam_req->dense_min_aps_cnt;
+	dense_thresholds->roam_dense_traffic_thres =
+			roam_req->traffic_threshold;
+	dense_thresholds->roam_dense_status = roam_req->initial_dense_status;
+	WMITLV_SET_HDR(&dense_thresholds->tlv_header,
+			WMITLV_TAG_STRUC_wmi_roam_dense_thres_param,
+			WMITLV_GET_STRUCT_TLVLEN
+			(wmi_roam_dense_thres_param));
+
 	status = wmi_unified_cmd_send(wmi_handle, buf,
 	status = wmi_unified_cmd_send(wmi_handle, buf,
 				      len, WMI_ROAM_SCAN_RSSI_THRESHOLD);
 				      len, WMI_ROAM_SCAN_RSSI_THRESHOLD);
 	if (QDF_IS_STATUS_ERROR(status)) {
 	if (QDF_IS_STATUS_ERROR(status)) {