xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_pmo_api.h (revision 27d564647e9b50e713c60b0d7e5ea2a9b0a3ae74)
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