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 #ifdef FEATURE_WLAN_D0WOW 34 /** 35 * wmi_unified_d0wow_enable_send() - WMI d0 wow enable function 36 * @param wmi_handle: handle to WMI. 37 * @mac_id: radio context 38 * 39 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 40 */ 41 QDF_STATUS wmi_unified_d0wow_enable_send(void *wmi_hdl, uint8_t mac_id); 42 43 /** 44 * wmi_unified_d0wow_disable_send() - WMI d0 wow disable function 45 * @param wmi_handle: handle to WMI. 46 * @mac_id: radio context 47 * 48 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 49 */ 50 QDF_STATUS wmi_unified_d0wow_disable_send(void *wmi_hdl, uint8_t mac_id); 51 #endif /* FEATURE_WLAN_D0WOW */ 52 53 /** 54 * wmi_unified_add_wow_wakeup_event_cmd() - Configures wow wakeup events. 55 * @wmi_handle: wmi handle 56 * @vdev_id: vdev id 57 * @bitmap: Event bitmap 58 * @enable: enable/disable 59 * 60 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 61 */ 62 QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl, 63 uint32_t vdev_id, 64 uint32_t *bitmap, 65 bool enable); 66 67 /** 68 * wmi_unified_wow_patterns_to_fw_cmd() - Sends WOW patterns to FW. 69 * @wmi_handle: wmi handle 70 * @vdev_id: vdev id 71 * @ptrn_id: pattern id 72 * @ptrn: pattern 73 * @ptrn_len: pattern length 74 * @ptrn_offset: pattern offset 75 * @mask: mask 76 * @mask_len: mask length 77 * @user: true for user configured pattern and false for default pattern 78 * @default_patterns: default patterns 79 * 80 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 81 */ 82 QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl, 83 uint8_t vdev_id, uint8_t ptrn_id, 84 const uint8_t *ptrn, uint8_t ptrn_len, 85 uint8_t ptrn_offset, const uint8_t *mask, 86 uint8_t mask_len, bool user, 87 uint8_t default_patterns); 88 89 /** 90 * wmi_unified_add_clear_mcbc_filter_cmd() - set mcast filter command to fw 91 * @wmi_handle: wmi handle 92 * @vdev_id: vdev id 93 * @multicastAddr: mcast address 94 * @clearList: clear list flag 95 * 96 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 97 */ 98 QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl, 99 uint8_t vdev_id, 100 struct qdf_mac_addr multicast_addr, 101 bool clearList); 102 103 /** 104 * wmi_unified_multiple_add_clear_mcbc_filter_cmd() - send multiple mcast 105 * filter command to fw 106 * @wmi_handle: wmi handle 107 * @vdev_id: vdev id 108 * @mcast_filter_params: mcast filter params 109 * 110 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 111 */ 112 QDF_STATUS wmi_unified_multiple_add_clear_mcbc_filter_cmd(void *wmi_hdl, 113 uint8_t vdev_id, 114 struct pmo_mcast_filter_params *filter_param); 115 116 #ifdef FEATURE_WLAN_RA_FILTERING 117 /** 118 * wmi_unified_wow_sta_ra_filter_cmd() - set RA filter pattern in fw 119 * @wmi_handle: wmi handle 120 * @vdev_id: vdev id 121 * 122 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 123 */ 124 QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl, 125 uint8_t vdev_id, 126 uint8_t default_pattern, 127 uint16_t rate_limit_interval); 128 #endif 129 130 /** 131 * wmi_unified_enable_enhance_multicast_offload() - enhance multicast offload 132 * @wmi_hdl: wmi handle 133 * @vdev_id: vdev id 134 * @action: true for enable else false 135 * 136 * To configure enhance multicast offload in to firmware 137 * 138 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 139 */ 140 QDF_STATUS wmi_unified_enable_enhance_multicast_offload_cmd( 141 void *wmi_hdl, uint8_t vdev_id, bool action); 142 143 /** 144 * wmi_extract_gtk_rsp_event() - extract gtk rsp params from event 145 * @wmi_handle: wmi handle 146 * @evt_buf: pointer to event buffer 147 * @gtk_rsp_param: Pointer to gtk rsp parameters 148 * @ len: len of gtk rsp event 149 * 150 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 151 */ 152 QDF_STATUS wmi_extract_gtk_rsp_event(void *wmi_hdl, void *evt_buf, 153 struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len); 154 155 /** 156 * wmi_unified_process_gtk_offload_getinfo_cmd() - send GTK offload cmd to fw 157 * @wmi_handle: wmi handle 158 * @params: GTK offload params 159 * 160 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 161 */ 162 QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl, 163 uint8_t vdev_id, 164 uint64_t offload_req_opcode); 165 166 /** 167 * wmi_unified_action_frame_patterns_cmd() - send action filter wmi cmd 168 * @wmi_handle: wmi handler 169 * @action_params: pointer to action_params 170 * 171 * Return: 0 for success, otherwise appropriate error code 172 */ 173 QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl, 174 struct pmo_action_wakeup_set_params *action_params); 175 176 /** 177 * wmi_unified_send_gtk_offload_cmd() - send GTK offload command to fw 178 * @wmi_handle: wmi handle 179 * @vdev_id: vdev id 180 * @params: GTK offload parameters 181 * 182 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 183 */ 184 QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id, 185 struct pmo_gtk_req *params, 186 bool enable_offload, 187 uint32_t gtk_offload_opcode); 188 189 /** 190 * wmi_unified_enable_arp_ns_offload_cmd() - enable ARP NS offload 191 * @wmi_hdl: wmi handle 192 * @param: offload request 193 * 194 * To configure ARP NS off load data to firmware 195 * when target goes to wow mode. 196 * 197 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 198 */ 199 QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl, 200 struct pmo_arp_offload_params *arp_offload_req, 201 struct pmo_ns_offload_params *ns_offload_req, 202 uint8_t vdev_id); 203 204 /** 205 * wmi_unified_conf_hw_filter_cmd() - Configure hardware filter in DTIM mode 206 * @opaque_wmi: wmi handle 207 * @req: request parameters to configure to firmware 208 * 209 * Return: QDF_STATUS 210 */ 211 QDF_STATUS wmi_unified_conf_hw_filter_cmd(void *opaque_wmi, 212 struct pmo_hw_filter_params *req); 213 214 #ifdef FEATURE_WLAN_LPHB 215 /** 216 * wmi_unified_lphb_config_hbenable_cmd() - enable command of LPHB configuration 217 * @wmi_handle: wmi handle 218 * @lphb_conf_req: configuration info 219 * 220 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 221 */ 222 QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl, 223 wmi_hb_set_enable_cmd_fixed_param *params); 224 225 /** 226 * wmi_unified_lphb_config_tcp_params_cmd() - set tcp params of LPHB config req 227 * @wmi_handle: wmi handle 228 * @lphb_conf_req: lphb config request 229 * 230 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 231 */ 232 QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl, 233 wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req); 234 235 /** 236 * wmi_unified_lphb_config_tcp_pkt_filter_cmd() - config LPHB tcp packet filter 237 * @wmi_handle: wmi handle 238 * @lphb_conf_req: lphb config request 239 * 240 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 241 */ 242 QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl, 243 wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp); 244 245 /** 246 * wmi_unified_lphb_config_udp_params_cmd() - configure LPHB udp param command 247 * @wmi_handle: wmi handle 248 * @lphb_conf_req: lphb config request 249 * 250 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 251 */ 252 QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl, 253 wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req); 254 255 /** 256 * wmi_unified_lphb_config_udp_pkt_filter_cmd() - configure LPHB udp pkt filter 257 * @wmi_handle: wmi handle 258 * @lphb_conf_req: lphb config request 259 * 260 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 261 */ 262 QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl, 263 wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req); 264 #endif /* FEATURE_WLAN_LPHB */ 265 266 #ifdef WLAN_FEATURE_PACKET_FILTERING 267 /** 268 * wmi_unified_enable_disable_packet_filter_cmd() - enable/disable packet filter 269 * @wmi_handle: wmi handle 270 * @vdev_id: vdev id 271 * @enable: Flag to enable/disable packet filter 272 * 273 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 274 */ 275 QDF_STATUS wmi_unified_enable_disable_packet_filter_cmd(void *wmi_hdl, 276 uint8_t vdev_id, 277 bool enable); 278 279 /** 280 * wmi_unified_config_packet_filter_cmd() - configure packet filter in target 281 * @wmi_handle: wmi handle 282 * @vdev_id: vdev id 283 * @rcv_filter_param: Packet filter parameters 284 * @filter_id: Filter id 285 * @enable: Flag to add/delete packet filter configuration 286 * 287 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 288 */ 289 QDF_STATUS wmi_unified_config_packet_filter_cmd(void *wmi_hdl, 290 uint8_t vdev_id, struct pmo_rcv_pkt_fltr_cfg *rcv_filter_param, 291 uint8_t filter_id, bool enable); 292 #endif /* WLAN_FEATURE_PACKET_FILTERING */ 293 294 /** 295 * wmi_unified_wow_delete_pattern_cmd() - delete wow pattern in target 296 * @wmi_handle: wmi handle 297 * @ptrn_id: pattern id 298 * @vdev_id: vdev id 299 * 300 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 301 */ 302 QDF_STATUS wmi_unified_wow_delete_pattern_cmd(void *wmi_hdl, uint8_t ptrn_id, 303 uint8_t vdev_id); 304 305 /** 306 * wmi_unified_host_wakeup_ind_to_fw_cmd() - send wakeup ind to fw 307 * @wmi_handle: wmi handle 308 * 309 * Sends host wakeup indication to FW. On receiving this indication, 310 * FW will come out of WOW. 311 * 312 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 313 */ 314 QDF_STATUS wmi_unified_host_wakeup_ind_to_fw_cmd(void *wmi_hdl); 315 316 /** 317 * wmi_unified_wow_timer_pattern_cmd() - set timer pattern tlv, so that 318 * firmware will wake up host after 319 * specified time is elapsed 320 * @wmi_handle: wmi handle 321 * @vdev_id: vdev id 322 * @cookie: value to identify reason why host set up wake call. 323 * @time: time in ms 324 * 325 * Return: QDF status 326 */ 327 QDF_STATUS wmi_unified_wow_timer_pattern_cmd(void *wmi_hdl, uint8_t vdev_id, 328 uint32_t cookie, uint32_t time); 329 330 #ifdef WLAN_FEATURE_EXTWOW_SUPPORT 331 /** 332 * wmi_unified_enable_ext_wow_cmd() - enable ext wow in fw 333 * @wmi_handle: wmi handle 334 * @params: ext wow params 335 * 336 * Return:QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 337 */ 338 QDF_STATUS wmi_unified_enable_ext_wow_cmd(void *wmi_hdl, 339 struct ext_wow_params *params); 340 341 /** 342 * wmi_unified_set_app_type2_params_in_fw_cmd() - set app type2 params in fw 343 * @wmi_handle: wmi handle 344 * @appType2Params: app type2 params 345 * 346 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 347 */ 348 QDF_STATUS wmi_unified_set_app_type2_params_in_fw_cmd(void *wmi_hdl, 349 struct app_type2_params *appType2Params); 350 351 /** 352 * wmi_unified_app_type1_params_in_fw_cmd() - set app type1 params in fw 353 * @wmi_hdl: wmi handle 354 * @app_type1_params: app type1 params 355 * 356 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 357 */ 358 QDF_STATUS wmi_unified_app_type1_params_in_fw_cmd(void *wmi_hdl, 359 struct app_type1_params *app_type1_params); 360 #endif /* WLAN_FEATURE_EXTWOW_SUPPORT */ 361 362 #endif /* _WMI_UNIFIED_PMO_API_H_ */ 363