blob: a92e8052e14b664e3cdda3e0cda561ce005b9648 [file] [log] [blame]
Mukul Sharmad75a6672017-06-22 15:40:53 +05301/*
Jeff Johnsonb4c29962017-10-07 19:35:14 -07002 * Copyright (c) 2017 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 */
Mukul Sharmad75a6672017-06-22 15:40:53 +053018/**
19 * DOC: Declare public API for pmo to interact with target/WMI
20 */
21
22#ifndef _WLAN_PMO_TGT_API_H_
23#define _WLAN_PMO_TGT_API_H_
24
25#include "wlan_pmo_common_public_struct.h"
26#include "wlan_pmo_arp_public_struct.h"
27#include "wlan_pmo_ns_public_struct.h"
28#include "wlan_pmo_gtk_public_struct.h"
29#include "wlan_pmo_wow_public_struct.h"
30#include "wlan_pmo_mc_addr_filtering_public_struct.h"
31#include "wlan_pmo_hw_filter_public_struct.h"
32#include "wlan_pmo_pkt_filter_public_struct.h"
33
34#define GET_PMO_TX_OPS_FROM_PSOC(psoc) \
35 (pmo_psoc_get_priv(psoc)->pmo_tx_ops)
36
37/**
38 * pmo_tgt_conf_hw_filter() - configure hardware filter mode in firmware
39 * @psoc: the psoc to use to communicate with firmware
40 * @req: the configuration request
41 *
42 * Return: QDF_STATUS
43 */
44QDF_STATUS pmo_tgt_conf_hw_filter(struct wlan_objmgr_psoc *psoc,
45 struct pmo_hw_filter_params *req);
46
47/**
48 * pmo_tgt_set_pkt_filter() - Set packet filter
49 * @vdev: objmgr vdev
50 * @pmo_set_pkt_fltr_req:
51 * @vdev_id: vdev id
52 *
53 * API to set packet filter
54 *
55 * Return: QDF_STATUS_SUCCESS in case of success else return error
56 */
57QDF_STATUS pmo_tgt_set_pkt_filter(struct wlan_objmgr_vdev *vdev,
58 struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
59 uint8_t vdev_id);
60
61/**
62 * pmo_tgt_clear_pkt_filter() - Clear packet filter
63 * @vdev: objmgr vdev
64 * @pmo_clr_pkt_fltr_param:
65 * @vdev_id: vdev id
66 *
67 * API to clear packet filter
68 *
69 * Return: QDF_STATUS_SUCCESS in case of success else return error
70 */
71QDF_STATUS pmo_tgt_clear_pkt_filter(struct wlan_objmgr_vdev *vdev,
72 struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
73 uint8_t vdev_id);
74
75/**
76 * pmo_tgt_enable_arp_offload_req() - Enable arp offload req to target
77 * @vdev: objmgr vdev
78 * @vdev_id: vdev id
79 *
80 * Return: QDF status
81 */
82QDF_STATUS pmo_tgt_enable_arp_offload_req(struct wlan_objmgr_vdev *vdev,
83 uint8_t vdev_id);
84
85/**
86 * pmo_tgt_disable_arp_offload_req() - Disable arp offload req to target
87 * @vdev: objmgr vdev
88 * @vdev_id: vdev id
89 *
90 * Return: QDF status
91 */
92QDF_STATUS pmo_tgt_disable_arp_offload_req(struct wlan_objmgr_vdev *vdev,
93 uint8_t vdev_id);
94
95/**
96 * pmo_tgt_enable_ns_offload_req() - Send ns offload req to targe
97 * @vdev: objmgr vdev
98 * @vdev_id: vdev id
99 *
100 * Return: QDF status
101 */
102QDF_STATUS pmo_tgt_enable_ns_offload_req(struct wlan_objmgr_vdev *vdev,
103 uint8_t vdev_id);
104
105/**
106 * pmo_tgt_disable_ns_offload_req() - Disable arp offload req to target
107 * @vdev: objmgr vdev
108 * @vdev_id: vdev id
109 *
110 * Return: QDF status
111 */
112QDF_STATUS pmo_tgt_disable_ns_offload_req(struct wlan_objmgr_vdev *vdev,
113 uint8_t vdev_id);
114
115/**
116 * pmo_tgt_enable_wow_wakeup_event() - Send Enable wow wakeup events req to fwr
117 * @vdev: objmgr vdev handle
118 * @bitmap: Event bitmap
119 *
120 * Return: QDF status
121 */
122QDF_STATUS pmo_tgt_enable_wow_wakeup_event(struct wlan_objmgr_vdev *vdev,
123 uint32_t *bitmap);
124
125/**
126 * pmo_tgt_disable_wow_wakeup_event() - Send Disable wow wakeup events to fwr
127 * @vdev: objmgr vdev handle
128 * @bitmap: Event bitmap
129 *
130 * Return: QDF status
131 */
132QDF_STATUS pmo_tgt_disable_wow_wakeup_event(struct wlan_objmgr_vdev *vdev,
133 uint32_t *bitmap);
134
135/**
136 * pmo_tgt_send_wow_patterns_to_fw() - Sends WOW patterns to FW.
137 * @vdev: objmgr vdev
138 * @ptrn_id: pattern id
139 * @ptrn: pattern
140 * @ptrn_len: pattern length
141 * @ptrn_offset: pattern offset
142 * @mask: mask
143 * @mask_len: mask length
144 * @user: true for user configured pattern and false for default pattern
145 *
146 * Return: QDF status
147 */
148QDF_STATUS pmo_tgt_send_wow_patterns_to_fw(struct wlan_objmgr_vdev *vdev,
149 uint8_t ptrn_id, const uint8_t *ptrn, uint8_t ptrn_len,
150 uint8_t ptrn_offset, const uint8_t *mask,
151 uint8_t mask_len, bool user);
152
153/**
154 * pmo_tgt_set_mc_filter_req() - Set mcast filter command to fw
155 * @vdev: objmgr vdev
156 * @multicastAddr: mcast address
157 *
158 * Return: QDF_STATUS_SUCCESS for success or error code
159 */
160QDF_STATUS pmo_tgt_set_mc_filter_req(struct wlan_objmgr_vdev *vdev,
161 struct qdf_mac_addr multicast_addr);
162
163/**
164 * pmo_tgt_clear_mc_filter_req() - Clear mcast filter command to fw
165 * @vdev: objmgr vdev
166 * @multicastAddr: mcast address
167 *
168 * Return: QDF_STATUS_SUCCESS for success or error code
169 */
170QDF_STATUS pmo_tgt_clear_mc_filter_req(struct wlan_objmgr_vdev *vdev,
171 struct qdf_mac_addr multicast_addr);
172
173/**
Poddar, Siddarthf7c49e72017-09-28 17:13:25 +0530174 * pmo_tgt_get_multiple_mc_filter_support() - get multiple mcast filter support
175 * @vdev: objmgr vdev
176 *
177 * Return: true if FW supports else false
178 */
179bool pmo_tgt_get_multiple_mc_filter_support(struct wlan_objmgr_vdev *vdev);
180
181/**
182 * pmo_tgt_set_multiple_mc_filter_req() - Set multiple mcast filter cmd to fw
183 * @vdev: objmgr vdev
184 * @mc_list: mcast address list
185 *
186 * Return: QDF_STATUS_SUCCESS for success or error code
187 */
188QDF_STATUS pmo_tgt_set_multiple_mc_filter_req(struct wlan_objmgr_vdev *vdev,
189 struct pmo_mc_addr_list *mc_list);
190
191/**
192 * pmo_tgt_clear_multiple_mc_filter_req() - clear multiple mcast filter
193 * to fw
194 * @vdev: objmgr vdev
195 * @mc_list: mcast address list
196 *
197 * Return: QDF_STATUS_SUCCESS for success or error code
198 */
199QDF_STATUS pmo_tgt_clear_multiple_mc_filter_req(struct wlan_objmgr_vdev *vdev,
200 struct pmo_mc_addr_list *mc_list);
201
202/**
Mukul Sharmad75a6672017-06-22 15:40:53 +0530203 * pmo_tgt_send_enhance_multicast_offload_req() - send enhance mc offload req
Dustin Brown8d8d9fe2017-07-18 16:01:25 -0700204 * @vdev: the vdev to configure
Mukul Sharmad75a6672017-06-22 15:40:53 +0530205 * @action: enable or disable enhance multicast offload
206 *
207 * Return: QDF_STATUS_SUCCESS on success else error code
208 */
209QDF_STATUS pmo_tgt_send_enhance_multicast_offload_req(
210 struct wlan_objmgr_vdev *vdev,
Mukul Sharmad75a6672017-06-22 15:40:53 +0530211 uint8_t action);
212
213/**
214 * pmo_tgt_send_ra_filter_req() - send ra filter request to target
215 * @vdev: objmgr vdev handle
216 *
217 * Return: QDF_STATUS_SUCCESS on success else error code
218 */
219QDF_STATUS pmo_tgt_send_ra_filter_req(struct wlan_objmgr_vdev *vdev);
220
221/**
222 * pmo_tgt_send_action_frame_pattern_req - send wow action frame patterns req
223 * @vdev: objmgr vdev handle
224 * @cmd: action frame pattern cmd
225 *
226 * Return: QDF_STATUS_SUCCESS on success else error code
227 */
228QDF_STATUS pmo_tgt_send_action_frame_pattern_req(
229 struct wlan_objmgr_vdev *vdev,
230 struct pmo_action_wakeup_set_params *cmd);
231
232/**
233 * pmo_tgt_send_gtk_offload_req() - send GTK offload command to fw
234 * @vdev: objmgr vdev
235 * @gtk_req: pmo gtk req
236 *
237 * Return: QDF status
238 */
239QDF_STATUS pmo_tgt_send_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
240 struct pmo_gtk_req *gtk_req);
241
242/**
243 * pmo_tgt_get_gtk_rsp() - send get gtk rsp command to fw
244 * @vdev: objmgr vdev
245 *
246 * Return: QDF status
247 */
248QDF_STATUS pmo_tgt_get_gtk_rsp(struct wlan_objmgr_vdev *vdev);
249
250/**
251 * pmo_tgt_gtk_rsp_evt() - receive gtk rsp event from fwr
252 * @psoc: objmgr psoc
253 * @gtk_rsp_param: gtk response parameters
254 *
255 * Return: QDF status
256 */
257QDF_STATUS pmo_tgt_gtk_rsp_evt(struct wlan_objmgr_psoc *psoc,
258 struct pmo_gtk_rsp_params *rsp_param);
259
260/**
261 * pmo_tgt_send_lphb_enable() - enable command of LPHB configuration requests
262 * @psoc: objmgr psoc handle
263 * @ts_lphb_enable: lphb enable request which needs to configure in fwr
264 *
265 * Return: QDF status
266 */
267QDF_STATUS pmo_tgt_send_lphb_enable(struct wlan_objmgr_psoc *psoc,
268 struct pmo_lphb_enable_req *ts_lphb_enable);
269
270/**
271 * pmo_tgt_send_lphb_tcp_params() - set tcp params of LPHB configuration req
272 * @psoc: objmgr psoc handle
273 * @ts_lphb_tcp_param: lphb tcp params which needs to configure in fwr
274 *
275 * Return: QDF status
276 */
277QDF_STATUS pmo_tgt_send_lphb_tcp_params(struct wlan_objmgr_psoc *psoc,
278 struct pmo_lphb_tcp_params *ts_lphb_tcp_param);
279
280/**
281 * pmo_tgt_send_lphb_tcp_pkt_filter() - send tcp packet filter command of LPHB
282 * @psoc: objmgr psoc handle
283 * @ts_lphb_tcp_filter: lphb tcp filter request which needs to configure in fwr
284 *
285 * Return: QDF status
286 */
287QDF_STATUS pmo_tgt_send_lphb_tcp_pkt_filter(struct wlan_objmgr_psoc *psoc,
288 struct pmo_lphb_tcp_filter_req *ts_lphb_tcp_filter);
289
290/**
291 * pmo_tgt_send_lphb_udp_params() - Send udp param command of LPHB
292 * @psoc: objmgr psoc handle
293 * @ts_lphb_udp_param: lphb udp params which needs to configure in fwr
294 *
295 * Return: QDF status
296 */
297QDF_STATUS pmo_tgt_send_lphb_udp_params(struct wlan_objmgr_psoc *psoc,
298 struct pmo_lphb_udp_params *ts_lphb_udp_param);
299
300/**
301 * pmo_tgt_send_lphb_udp_pkt_filter() - Send udp pkt filter command of LPHB
302 * @psoc: objmgr psoc handle
303 * @ts_lphb_udp_filter: lphb udp filter request which needs to configure in fwr
304 *
305 * Return: QDF status
306 */
307QDF_STATUS pmo_tgt_send_lphb_udp_pkt_filter(struct wlan_objmgr_psoc *psoc,
308 struct pmo_lphb_udp_filter_req *ts_lphb_udp_filter);
309
310
311/**
312 * pmo_tgt_lphb_rsp_evt() - receive lphb rsp event from fwr
313 * @psoc: objmgr psoc
314 * @rsp_param: lphb response parameters
315 *
316 * Return: QDF_STATUS
317 */
318QDF_STATUS pmo_tgt_lphb_rsp_evt(struct wlan_objmgr_psoc *psoc,
319 struct pmo_lphb_rsp *rsp_param);
320
321/**
322 * pmo_tgt_vdev_update_param_req() - Update vdev param value to fwr
323 * @vdev: objmgr vdev
324 * @param_id: tell vdev param id which needs to be updated in fwr
325 * @param_value: vdev parameter value
326 *
327 * Return: QDF status
328 */
329QDF_STATUS pmo_tgt_vdev_update_param_req(struct wlan_objmgr_vdev *vdev,
330 enum pmo_vdev_param_id param_id, uint32_t param_value);
331
332/**
333 * pmo_tgt_send_vdev_sta_ps_param() - Send vdev sta power save param to fwr
334 * @vdev: objmgr vdev
335 * @ps_param: sta mode ps power save params type
336 * @param_value: power save parameter value
337 *
338 * Return: QDF status
339 */
340QDF_STATUS pmo_tgt_send_vdev_sta_ps_param(struct wlan_objmgr_vdev *vdev,
341 enum pmo_sta_powersave_param ps_param, uint32_t param_value);
342
343/**
344 * pmo_tgt_update_wow_bus_suspend_state() - update wow bus suspend state flag
345 * @psoc: objmgr psoc
346 * @val: true for setting wow suspend flag to set else false
347 *
348 * Return: None
349 */
350void pmo_tgt_psoc_update_wow_bus_suspend_state(struct wlan_objmgr_psoc *psoc,
351 uint8_t val);
352
353/**
354 * pmo_tgt_get_host_credits() - Get host credits
355 * @psoc: objmgr psoc
356 *
357 * Return: Pending WMI commands on success else EAGAIN on error
358 */
359int pmo_tgt_psoc_get_host_credits(struct wlan_objmgr_psoc *psoc);
360
361/**
362 * pmo_tgt_get_pending_cmnds() - Get pending commands
363 * @psoc: objmgr psoc
364 *
365 * Return: Pending WMI commands on success else EAGAIN on error
366 */
367int pmo_tgt_psoc_get_pending_cmnds(struct wlan_objmgr_psoc *psoc);
368
369/**
370 * pmo_tgt_update_target_suspend_flag() - Set WMI target Suspend flag
371 * @psoc: objmgr psoc
372 * @val: true on suspend false for resume
373 *
374 * Return: Pending WMI commands on success else EAGAIN on error
375 */
376void pmo_tgt_update_target_suspend_flag(struct wlan_objmgr_psoc *psoc,
377 uint8_t val);
378
379/**
380 * pmo_tgt_psoc_send_wow_enable_req() -Send wow enable request
381 * @psoc: objmgr psoc
382 * @param: WOW enable request buffer
383 *
384 * Return: QDF_STATUS_SUCCESS on success else error code
385 */
386QDF_STATUS pmo_tgt_psoc_send_wow_enable_req(struct wlan_objmgr_psoc *psoc,
387 struct pmo_wow_cmd_params *param);
388
389/**
390 * pmo_tgt_psoc_send_supend_req() -Send target suspend request to fwr
391 * @psoc: objmgr psoc
392 * @param: suspend request buffer
393 *
394 * Return: QDF_STATUS_SUCCESS on success else error code
395 */
396QDF_STATUS pmo_tgt_psoc_send_supend_req(struct wlan_objmgr_psoc *psoc,
397 struct pmo_suspend_params *param);
398
399/**
400 * pmo_tgt_psoc_set_runtime_pm_inprogress() -set runtime status
401 * @psoc: objmgr psoc
402 * @value: set runtime pm in progress true or false
403 *
404 * Return: none
405 */
406QDF_STATUS pmo_tgt_psoc_set_runtime_pm_inprogress(struct wlan_objmgr_psoc *psoc,
407 bool value);
408
409/**
410 * pmo_tgt_psoc_get_runtime_pm_in_progress() -get runtime status
411 * @psoc: objmgr psoc
412 *
413 * Return: true if runtime pm is in progress else false
414 */
415bool pmo_tgt_psoc_get_runtime_pm_in_progress(struct wlan_objmgr_psoc *psoc);
416
417/**
418 * pmo_tgt_psoc_send_host_wakeup_ind() -Send host wake up indication to fwr
419 * @psoc: objmgr psoc
420 *
421 * Return: QDF_STATUS_SUCCESS on success else error code
422 */
423QDF_STATUS pmo_tgt_psoc_send_host_wakeup_ind(struct wlan_objmgr_psoc *psoc);
424
425/**
426 * pmo_tgt_psoc_send_target_resume_req() -Send target resume request
427 * @psoc: objmgr psoc
428 *
429 * Return: QDF_STATUS_SUCCESS on success else error code
430 */
431QDF_STATUS pmo_tgt_psoc_send_target_resume_req(struct wlan_objmgr_psoc *psoc);
432
433#endif /* end of _WLAN_PMO_TGT_API_H_ */