1 /* 2 * Copyright (c) 2017-2018 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: This file contains the API definitions for the Unified Wireless Module 20 * Interface (WMI) which are specific to Power management offloads (PMO). 21 */ 22 23 #ifndef _WMI_UNIFIED_PMO_API_H_ 24 #define _WMI_UNIFIED_PMO_API_H_ 25 26 #include "wlan_pmo_tgt_api.h" 27 #include "wlan_pmo_arp_public_struct.h" 28 #include "wlan_pmo_ns_public_struct.h" 29 #include "wlan_pmo_gtk_public_struct.h" 30 #include "wlan_pmo_wow_public_struct.h" 31 #include "wlan_pmo_pkt_filter_public_struct.h" 32 33 /** 34 * wmi_unified_add_wow_wakeup_event_cmd() - Configures wow wakeup events. 35 * @wmi_handle: wmi handle 36 * @vdev_id: vdev id 37 * @bitmap: Event bitmap 38 * @enable: enable/disable 39 * 40 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 41 */ 42 QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl, 43 uint32_t vdev_id, 44 uint32_t *bitmap, 45 bool enable); 46 47 /** 48 * wmi_unified_wow_patterns_to_fw_cmd() - Sends WOW patterns to FW. 49 * @wmi_handle: wmi handle 50 * @vdev_id: vdev id 51 * @ptrn_id: pattern id 52 * @ptrn: pattern 53 * @ptrn_len: pattern length 54 * @ptrn_offset: pattern offset 55 * @mask: mask 56 * @mask_len: mask length 57 * @user: true for user configured pattern and false for default pattern 58 * @default_patterns: default patterns 59 * 60 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 61 */ 62 QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl, 63 uint8_t vdev_id, uint8_t ptrn_id, 64 const uint8_t *ptrn, uint8_t ptrn_len, 65 uint8_t ptrn_offset, const uint8_t *mask, 66 uint8_t mask_len, bool user, 67 uint8_t default_patterns); 68 69 /** 70 * wmi_unified_add_clear_mcbc_filter_cmd() - set mcast filter command to fw 71 * @wmi_handle: wmi handle 72 * @vdev_id: vdev id 73 * @multicastAddr: mcast address 74 * @clearList: clear list flag 75 * 76 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 77 */ 78 QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl, 79 uint8_t vdev_id, 80 struct qdf_mac_addr multicast_addr, 81 bool clearList); 82 83 /** 84 * wmi_unified_multiple_add_clear_mcbc_filter_cmd() - send multiple mcast 85 * filter command to fw 86 * @wmi_handle: wmi handle 87 * @vdev_id: vdev id 88 * @mcast_filter_params: mcast filter params 89 * 90 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 91 */ 92 QDF_STATUS wmi_unified_multiple_add_clear_mcbc_filter_cmd(void *wmi_hdl, 93 uint8_t vdev_id, 94 struct pmo_mcast_filter_params *filter_param); 95 96 /** 97 * wmi_unified_wow_sta_ra_filter_cmd() - set RA filter pattern in fw 98 * @wmi_handle: wmi handle 99 * @vdev_id: vdev id 100 * 101 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 102 */ 103 QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl, 104 uint8_t vdev_id, uint8_t default_pattern, 105 uint16_t rate_limit_interval); 106 107 /** 108 * wmi_unified_enable_enhance_multicast_offload() - enhance multicast offload 109 * @wmi_hdl: wmi handle 110 * @vdev_id: vdev id 111 * @action: true for enable else false 112 * 113 * To configure enhance multicast offload in to firmware 114 * 115 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 116 */ 117 QDF_STATUS wmi_unified_enable_enhance_multicast_offload_cmd( 118 void *wmi_hdl, uint8_t vdev_id, bool action); 119 120 /** 121 * wmi_extract_gtk_rsp_event() - extract gtk rsp params from event 122 * @wmi_handle: wmi handle 123 * @evt_buf: pointer to event buffer 124 * @gtk_rsp_param: Pointer to gtk rsp parameters 125 * @ len: len of gtk rsp event 126 * 127 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 128 */ 129 QDF_STATUS wmi_extract_gtk_rsp_event(void *wmi_hdl, void *evt_buf, 130 struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len); 131 132 /** 133 * wmi_unified_process_gtk_offload_getinfo_cmd() - send GTK offload cmd to fw 134 * @wmi_handle: wmi handle 135 * @params: GTK offload params 136 * 137 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 138 */ 139 QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl, 140 uint8_t vdev_id, 141 uint64_t offload_req_opcode); 142 143 /** 144 * wmi_unified_action_frame_patterns_cmd() - send action filter wmi cmd 145 * @wmi_handle: wmi handler 146 * @action_params: pointer to action_params 147 * 148 * Return: 0 for success, otherwise appropriate error code 149 */ 150 QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl, 151 struct pmo_action_wakeup_set_params *action_params); 152 153 /** 154 * wmi_unified_send_gtk_offload_cmd() - send GTK offload command to fw 155 * @wmi_handle: wmi handle 156 * @vdev_id: vdev id 157 * @params: GTK offload parameters 158 * 159 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 160 */ 161 QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id, 162 struct pmo_gtk_req *params, 163 bool enable_offload, 164 uint32_t gtk_offload_opcode); 165 166 /** 167 * wmi_unified_enable_arp_ns_offload_cmd() - enable ARP NS offload 168 * @wmi_hdl: wmi handle 169 * @param: offload request 170 * 171 * To configure ARP NS off load data to firmware 172 * when target goes to wow mode. 173 * 174 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 175 */ 176 QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl, 177 struct pmo_arp_offload_params *arp_offload_req, 178 struct pmo_ns_offload_params *ns_offload_req, 179 uint8_t vdev_id); 180 181 /** 182 * wmi_unified_conf_hw_filter_cmd() - Configure hardware filter in DTIM mode 183 * @opaque_wmi: wmi handle 184 * @req: request parameters to configure to firmware 185 * 186 * Return: QDF_STATUS 187 */ 188 QDF_STATUS wmi_unified_conf_hw_filter_cmd(void *opaque_wmi, 189 struct pmo_hw_filter_params *req); 190 191 /** 192 * wmi_unified_lphb_config_hbenable_cmd() - enable command of LPHB configuration 193 * @wmi_handle: wmi handle 194 * @lphb_conf_req: configuration info 195 * 196 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 197 */ 198 QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl, 199 wmi_hb_set_enable_cmd_fixed_param *params); 200 201 /** 202 * wmi_unified_lphb_config_tcp_params_cmd() - set tcp params of LPHB config req 203 * @wmi_handle: wmi handle 204 * @lphb_conf_req: lphb config request 205 * 206 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 207 */ 208 QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl, 209 wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req); 210 211 /** 212 * wmi_unified_lphb_config_tcp_pkt_filter_cmd() - config LPHB tcp packet filter 213 * @wmi_handle: wmi handle 214 * @lphb_conf_req: lphb config request 215 * 216 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 217 */ 218 QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl, 219 wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp); 220 221 /** 222 * wmi_unified_lphb_config_udp_params_cmd() - configure LPHB udp param command 223 * @wmi_handle: wmi handle 224 * @lphb_conf_req: lphb config request 225 * 226 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 227 */ 228 QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl, 229 wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req); 230 231 /** 232 * wmi_unified_lphb_config_udp_pkt_filter_cmd() - configure LPHB udp pkt filter 233 * @wmi_handle: wmi handle 234 * @lphb_conf_req: lphb config request 235 * 236 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 237 */ 238 QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl, 239 wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req); 240 241 #ifdef WLAN_FEATURE_PACKET_FILTERING 242 /** 243 * wmi_unified_enable_disable_packet_filter_cmd() - enable/disable packet filter 244 * @wmi_handle: wmi handle 245 * @vdev_id: vdev id 246 * @enable: Flag to enable/disable packet filter 247 * 248 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 249 */ 250 QDF_STATUS wmi_unified_enable_disable_packet_filter_cmd(void *wmi_hdl, 251 uint8_t vdev_id, bool enable); 252 253 /** 254 * wmi_unified_config_packet_filter_cmd() - configure packet filter in target 255 * @wmi_handle: wmi handle 256 * @vdev_id: vdev id 257 * @rcv_filter_param: Packet filter parameters 258 * @filter_id: Filter id 259 * @enable: Flag to add/delete packet filter configuration 260 * 261 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 262 */ 263 QDF_STATUS wmi_unified_config_packet_filter_cmd(void *wmi_hdl, 264 uint8_t vdev_id, struct pmo_rcv_pkt_fltr_cfg *rcv_filter_param, 265 uint8_t filter_id, bool enable); 266 #endif 267 268 #endif /* _WMI_UNIFIED_PMO_API_H_ */ 269