1 /* 2 * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /** 18 * DOC: Implement API's specific to DCS component. 19 */ 20 #include <wmi_unified_dcs_api.h> 21 22 QDF_STATUS wmi_extract_dcs_interference_type( 23 void *wmi_hdl, 24 void *evt_buf, 25 struct wlan_host_dcs_interference_param *param) 26 { 27 wmi_unified_t wmi = (wmi_unified_t)wmi_hdl; 28 29 if (wmi->ops->extract_dcs_interference_type) { 30 return wmi->ops->extract_dcs_interference_type(wmi, 31 evt_buf, 32 param); 33 } 34 return QDF_STATUS_E_FAILURE; 35 } 36 37 QDF_STATUS wmi_extract_dcs_im_tgt_stats( 38 void *wmi_hdl, 39 void *evt_buf, 40 struct wlan_host_dcs_im_tgt_stats *wlan_stat) 41 { 42 wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl; 43 44 if (wmi_handle->ops->extract_dcs_im_tgt_stats) { 45 return wmi_handle->ops->extract_dcs_im_tgt_stats(wmi_handle, 46 evt_buf, 47 wlan_stat); 48 } 49 return QDF_STATUS_E_FAILURE; 50 } 51 52 QDF_STATUS wmi_extract_dcs_awgn_info(wmi_unified_t wmi_hdl, void *evt_buf, 53 struct wlan_host_dcs_awgn_info *awgn_info) 54 { 55 if (wmi_hdl && wmi_hdl->ops->extract_dcs_awgn_info) 56 return wmi_hdl->ops->extract_dcs_awgn_info(wmi_hdl, evt_buf, 57 awgn_info); 58 59 return QDF_STATUS_E_FAILURE; 60 } 61 62 #ifdef ENABLE_HOST_TO_TARGET_CONVERSION 63 QDF_STATUS wmi_send_dcs_pdev_param(wmi_unified_t wmi_handle, 64 uint32_t pdev_idx, 65 bool is_host_pdev_id, 66 uint32_t dcs_enable) 67 { 68 struct pdev_params pparam; 69 70 qdf_mem_zero(&pparam, sizeof(pparam)); 71 pparam.is_host_pdev_id = is_host_pdev_id; 72 pparam.param_id = wmi_pdev_param_dcs; 73 pparam.param_value = dcs_enable; 74 75 return wmi_unified_pdev_param_send(wmi_handle, &pparam, pdev_idx); 76 } 77 #else 78 QDF_STATUS wmi_send_dcs_pdev_param(wmi_unified_t wmi_handle, 79 uint32_t pdev_idx, 80 bool is_host_pdev_id, 81 uint32_t dcs_enable) 82 { 83 struct pdev_params pparam; 84 85 qdf_mem_zero(&pparam, sizeof(pparam)); 86 pparam.is_host_pdev_id = is_host_pdev_id; 87 pparam.param_id = WMI_PDEV_PARAM_DCS; 88 pparam.param_value = dcs_enable; 89 90 return wmi_unified_pdev_param_send(wmi_handle, &pparam, pdev_idx); 91 } 92 #endif 93