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