1 /* 2 * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 /** 19 * DOC: Implement API's specific to P2P component. 20 */ 21 22 #include <wmi_unified_priv.h> 23 #include <wmi_unified_p2p_api.h> 24 25 QDF_STATUS wmi_unified_set_p2pgo_oppps_req(wmi_unified_t wmi_handle, 26 struct p2p_ps_params *oppps) 27 { 28 if (wmi_handle->ops->send_set_p2pgo_oppps_req_cmd) 29 return wmi_handle->ops->send_set_p2pgo_oppps_req_cmd(wmi_handle, 30 oppps); 31 32 return QDF_STATUS_E_FAILURE; 33 } 34 35 QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(wmi_unified_t wmi_handle, 36 struct p2p_ps_params *noa) 37 { 38 if (wmi_handle->ops->send_set_p2pgo_noa_req_cmd) 39 return wmi_handle->ops->send_set_p2pgo_noa_req_cmd(wmi_handle, 40 noa); 41 42 return QDF_STATUS_E_FAILURE; 43 } 44 45 QDF_STATUS wmi_extract_p2p_noa_ev_param(wmi_unified_t wmi_handle, 46 void *evt_buf, 47 struct p2p_noa_info *param) 48 { 49 if (!wmi_handle) { 50 wmi_err("wmi handle is null"); 51 return QDF_STATUS_E_INVAL; 52 } 53 54 if (wmi_handle->ops->extract_p2p_noa_ev_param) 55 return wmi_handle->ops->extract_p2p_noa_ev_param( 56 wmi_handle, evt_buf, param); 57 58 return QDF_STATUS_E_FAILURE; 59 } 60 61 QDF_STATUS 62 wmi_send_set_mac_addr_rx_filter_cmd(wmi_unified_t wmi_handle, 63 struct p2p_set_mac_filter *param) 64 { 65 if (!wmi_handle) { 66 wmi_err("wmi handle is null"); 67 return QDF_STATUS_E_INVAL; 68 } 69 70 if (wmi_handle->ops->set_mac_addr_rx_filter) 71 return wmi_handle->ops->set_mac_addr_rx_filter( 72 wmi_handle, param); 73 74 return QDF_STATUS_E_FAILURE; 75 } 76 77 QDF_STATUS 78 wmi_extract_mac_addr_rx_filter_evt_param(wmi_unified_t wmi_handle, 79 void *evt_buf, 80 struct p2p_set_mac_filter_evt *param) 81 { 82 if (!wmi_handle) { 83 wmi_err("wmi handle is null"); 84 return QDF_STATUS_E_INVAL; 85 } 86 87 if (wmi_handle->ops->extract_mac_addr_rx_filter_evt_param) 88 return wmi_handle->ops->extract_mac_addr_rx_filter_evt_param( 89 wmi_handle, evt_buf, param); 90 91 return QDF_STATUS_E_FAILURE; 92 } 93 94 #ifdef FEATURE_P2P_LISTEN_OFFLOAD 95 QDF_STATUS wmi_unified_p2p_lo_start_cmd(wmi_unified_t wmi_handle, 96 struct p2p_lo_start *param) 97 { 98 if (!wmi_handle) { 99 wmi_err("wmi handle is null"); 100 return QDF_STATUS_E_INVAL; 101 } 102 103 if (wmi_handle->ops->send_p2p_lo_start_cmd) 104 return wmi_handle->ops->send_p2p_lo_start_cmd(wmi_handle, 105 param); 106 107 return QDF_STATUS_E_FAILURE; 108 } 109 110 QDF_STATUS wmi_unified_p2p_lo_stop_cmd(wmi_unified_t wmi_handle, 111 uint8_t vdev_id) 112 { 113 if (!wmi_handle) { 114 wmi_err("wmi handle is null"); 115 return QDF_STATUS_E_INVAL; 116 } 117 118 if (wmi_handle->ops->send_p2p_lo_stop_cmd) 119 return wmi_handle->ops->send_p2p_lo_stop_cmd(wmi_handle, 120 vdev_id); 121 122 return QDF_STATUS_E_FAILURE; 123 } 124 125 QDF_STATUS wmi_extract_p2p_lo_stop_ev_param(wmi_unified_t wmi_handle, 126 void *evt_buf, 127 struct p2p_lo_event *param) 128 { 129 if (!wmi_handle) { 130 wmi_err("wmi handle is null"); 131 return QDF_STATUS_E_INVAL; 132 } 133 134 if (wmi_handle->ops->extract_p2p_lo_stop_ev_param) 135 return wmi_handle->ops->extract_p2p_lo_stop_ev_param( 136 wmi_handle, evt_buf, param); 137 138 return QDF_STATUS_E_FAILURE; 139 } 140 #endif /* End of FEATURE_P2P_LISTEN_OFFLOAD*/ 141 142