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