xref: /wlan-driver/qcacld-3.0/components/target_if/pmo/inc/target_if_pmo.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name /**
20*5113495bSYour Name  * DOC: Declare various api/struct which shall be used
21*5113495bSYour Name  * by pmo component for wmi cmd (tx path) and
22*5113495bSYour Name  * event (rx) handling.
23*5113495bSYour Name  */
24*5113495bSYour Name 
25*5113495bSYour Name #ifndef _TARGET_IF_PMO_H_
26*5113495bSYour Name #define _TARGET_IF_PMO_H_
27*5113495bSYour Name 
28*5113495bSYour Name #include "target_if.h"
29*5113495bSYour Name #include "wlan_pmo_tgt_api.h"
30*5113495bSYour Name #include "wlan_pmo_obj_mgmt_public_struct.h"
31*5113495bSYour Name 
32*5113495bSYour Name /**
33*5113495bSYour Name  * target_if_pmo_enable_wow_wakeup_event() - Enable wow wakeup events.
34*5113495bSYour Name  * @vdev:objmgr vdev handle
35*5113495bSYour Name  * @bitmap: Event bitmap
36*5113495bSYour Name  *
37*5113495bSYour Name  * Return: QDF status
38*5113495bSYour Name  */
39*5113495bSYour Name QDF_STATUS target_if_pmo_enable_wow_wakeup_event(struct wlan_objmgr_vdev *vdev,
40*5113495bSYour Name 		uint32_t *bitmap);
41*5113495bSYour Name 
42*5113495bSYour Name /**
43*5113495bSYour Name  * target_if_pmo_disable_wow_wakeup_event() -  Disable wow wakeup events.
44*5113495bSYour Name  * @vdev:objmgr vdev handle
45*5113495bSYour Name  * @bitmap: Event bitmap
46*5113495bSYour Name  *
47*5113495bSYour Name  * Return: QDF status
48*5113495bSYour Name  */
49*5113495bSYour Name QDF_STATUS target_if_pmo_disable_wow_wakeup_event(
50*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev, uint32_t *bitmap);
51*5113495bSYour Name 
52*5113495bSYour Name /**
53*5113495bSYour Name  * target_if_pmo_send_wow_patterns_to_fw() - Sends WOW patterns to FW.
54*5113495bSYour Name  * @vdev: objmgr vdev handle
55*5113495bSYour Name  * @ptrn_id: pattern id
56*5113495bSYour Name  * @ptrn: pattern
57*5113495bSYour Name  * @ptrn_len: pattern length
58*5113495bSYour Name  * @ptrn_offset: pattern offset
59*5113495bSYour Name  * @mask: mask
60*5113495bSYour Name  * @mask_len: mask length
61*5113495bSYour Name  * @user: true for user configured pattern and false for default pattern
62*5113495bSYour Name  *
63*5113495bSYour Name  * Return: QDF status
64*5113495bSYour Name  */
65*5113495bSYour Name QDF_STATUS target_if_pmo_send_wow_patterns_to_fw(struct wlan_objmgr_vdev *vdev,
66*5113495bSYour Name 		uint8_t ptrn_id,
67*5113495bSYour Name 		const uint8_t *ptrn, uint8_t ptrn_len,
68*5113495bSYour Name 		uint8_t ptrn_offset, const uint8_t *mask,
69*5113495bSYour Name 		uint8_t mask_len, bool user);
70*5113495bSYour Name 
71*5113495bSYour Name QDF_STATUS target_if_pmo_del_wow_patterns_to_fw(struct wlan_objmgr_vdev *vdev,
72*5113495bSYour Name 		uint8_t ptrn_id);
73*5113495bSYour Name 
74*5113495bSYour Name /**
75*5113495bSYour Name  * target_if_pmo_send_enhance_mc_offload_req() - send enhance mc offload req
76*5113495bSYour Name  * @vdev: objmgr vdev
77*5113495bSYour Name  * @enable: enable or disable enhance multicast offload
78*5113495bSYour Name  *
79*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success else error code
80*5113495bSYour Name  */
81*5113495bSYour Name QDF_STATUS target_if_pmo_send_enhance_mc_offload_req(
82*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
83*5113495bSYour Name 		bool enable);
84*5113495bSYour Name 
85*5113495bSYour Name /**
86*5113495bSYour Name  * target_if_pmo_set_mc_filter_req() - set mcast filter command to fw
87*5113495bSYour Name  * @vdev: objmgr vdev handle
88*5113495bSYour Name  * @multicast_addr: mcast address
89*5113495bSYour Name  *
90*5113495bSYour Name  * Return: 0 for success or error code
91*5113495bSYour Name  */
92*5113495bSYour Name QDF_STATUS target_if_pmo_set_mc_filter_req(struct wlan_objmgr_vdev *vdev,
93*5113495bSYour Name 		struct qdf_mac_addr multicast_addr);
94*5113495bSYour Name 
95*5113495bSYour Name /**
96*5113495bSYour Name  * target_if_pmo_clear_mc_filter_req() - clear mcast filter command to fw
97*5113495bSYour Name  * @vdev: objmgr vdev handle
98*5113495bSYour Name  * @multicast_addr: mcast address
99*5113495bSYour Name  *
100*5113495bSYour Name  * Return: 0 for success or error code
101*5113495bSYour Name  */
102*5113495bSYour Name QDF_STATUS target_if_pmo_clear_mc_filter_req(struct wlan_objmgr_vdev *vdev,
103*5113495bSYour Name 		struct qdf_mac_addr multicast_addr);
104*5113495bSYour Name 
105*5113495bSYour Name /**
106*5113495bSYour Name  * target_if_pmo_get_multiple_mc_filter_support() - get multiple mc filter
107*5113495bSYour Name  *						    request fw support
108*5113495bSYour Name  * @psoc: the psoc containing the vdev to configure
109*5113495bSYour Name  *
110*5113495bSYour Name  * Return: true if fw supports else false
111*5113495bSYour Name  */
112*5113495bSYour Name bool target_if_pmo_get_multiple_mc_filter_support(
113*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc);
114*5113495bSYour Name 
115*5113495bSYour Name /**
116*5113495bSYour Name  * target_if_pmo_set_multiple_mc_filter_req() - set multiple mcast filter
117*5113495bSYour Name  *						command to fw
118*5113495bSYour Name  * @vdev: objmgr vdev handle
119*5113495bSYour Name  * @mc_list: mcast address list
120*5113495bSYour Name  *
121*5113495bSYour Name  * Return: 0 for success or error code
122*5113495bSYour Name  */
123*5113495bSYour Name QDF_STATUS target_if_pmo_set_multiple_mc_filter_req(
124*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
125*5113495bSYour Name 		struct pmo_mc_addr_list *mc_list);
126*5113495bSYour Name 
127*5113495bSYour Name /**
128*5113495bSYour Name  * target_if_pmo_clear_multiple_mc_filter_req() - clear multiple mcast
129*5113495bSYour Name  *						  filter command to fw
130*5113495bSYour Name  * @vdev: objmgr vdev handle
131*5113495bSYour Name  * @mc_list: mcast address list
132*5113495bSYour Name  *
133*5113495bSYour Name  * Return: 0 for success or error code
134*5113495bSYour Name  */
135*5113495bSYour Name QDF_STATUS target_if_pmo_clear_multiple_mc_filter_req(
136*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
137*5113495bSYour Name 		struct pmo_mc_addr_list *mc_list);
138*5113495bSYour Name 
139*5113495bSYour Name /**
140*5113495bSYour Name  * target_if_pmo_send_ra_filter_req() - set RA filter pattern in fw
141*5113495bSYour Name  * @vdev: objmgr vdev handle
142*5113495bSYour Name  * @default_pattern: default pattern id
143*5113495bSYour Name  * @rate_limit_interval: ra rate limit interval
144*5113495bSYour Name  *
145*5113495bSYour Name  * Return: QDF status
146*5113495bSYour Name  */
147*5113495bSYour Name QDF_STATUS target_if_pmo_send_ra_filter_req(struct wlan_objmgr_vdev *vdev,
148*5113495bSYour Name 		uint8_t default_pattern, uint16_t rate_limit_interval);
149*5113495bSYour Name 
150*5113495bSYour Name /**
151*5113495bSYour Name  * target_if_pmo_send_action_frame_patterns() - register action frame map to fw
152*5113495bSYour Name  * @vdev: objmgr vdev handle
153*5113495bSYour Name  * @ip_cmd: Action frame wakeup params
154*5113495bSYour Name  *
155*5113495bSYour Name  * This is called to push action frames wow patterns from local
156*5113495bSYour Name  * cache to firmware.
157*5113495bSYour Name  *
158*5113495bSYour Name  * Return: QDF_STATUS
159*5113495bSYour Name  */
160*5113495bSYour Name QDF_STATUS target_if_pmo_send_action_frame_patterns(
161*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
162*5113495bSYour Name 		struct pmo_action_wakeup_set_params *ip_cmd);
163*5113495bSYour Name 
164*5113495bSYour Name /**
165*5113495bSYour Name  * target_if_pmo_conf_hw_filter() - configure hardware filter in DTIM mode
166*5113495bSYour Name  * @psoc: the psoc containing the vdev to configure
167*5113495bSYour Name  * @req: the request parameters
168*5113495bSYour Name  *
169*5113495bSYour Name  * Return: QDF_STATUS
170*5113495bSYour Name  */
171*5113495bSYour Name QDF_STATUS target_if_pmo_conf_hw_filter(struct wlan_objmgr_psoc *psoc,
172*5113495bSYour Name 					struct pmo_hw_filter_params *req);
173*5113495bSYour Name 
174*5113495bSYour Name #ifdef WLAN_FEATURE_PACKET_FILTERING
175*5113495bSYour Name /**
176*5113495bSYour Name  * target_if_pmo_send_pkt_filter_req() - enable packet filter
177*5113495bSYour Name  * @vdev: objmgr vdev
178*5113495bSYour Name  * @rcv_filter_param: filter params
179*5113495bSYour Name  *
180*5113495bSYour Name  * This function enable packet filter
181*5113495bSYour Name  *
182*5113495bSYour Name  *  Return: QDF_STATUS_SUCCESS for success or error code
183*5113495bSYour Name  */
184*5113495bSYour Name QDF_STATUS target_if_pmo_send_pkt_filter_req(struct wlan_objmgr_vdev *vdev,
185*5113495bSYour Name 			struct pmo_rcv_pkt_fltr_cfg *rcv_filter_param);
186*5113495bSYour Name 
187*5113495bSYour Name /**
188*5113495bSYour Name  * target_if_pmo_clear_pkt_filter_req() - disable packet filter
189*5113495bSYour Name  * @vdev: objmgr vdev
190*5113495bSYour Name  * @rcv_clear_param: filter params
191*5113495bSYour Name  *
192*5113495bSYour Name  * This function disable packet filter
193*5113495bSYour Name  *
194*5113495bSYour Name  *  Return: QDF_STATUS_SUCCESS for success or error code
195*5113495bSYour Name  */
196*5113495bSYour Name QDF_STATUS target_if_pmo_clear_pkt_filter_req(struct wlan_objmgr_vdev *vdev,
197*5113495bSYour Name 			struct pmo_rcv_pkt_fltr_clear_param *rcv_clear_param);
198*5113495bSYour Name #endif
199*5113495bSYour Name 
200*5113495bSYour Name /**
201*5113495bSYour Name  * target_if_pmo_send_arp_offload_req() - sends arp request to fwr
202*5113495bSYour Name  * @vdev: objmgr vdev
203*5113495bSYour Name  * @arp_offload_req: arp offload req
204*5113495bSYour Name  * @ns_offload_req: ns offload request
205*5113495bSYour Name  *
206*5113495bSYour Name  * This functions sends arp request to fwr.
207*5113495bSYour Name  *
208*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
209*5113495bSYour Name  */
210*5113495bSYour Name QDF_STATUS target_if_pmo_send_arp_offload_req(
211*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
212*5113495bSYour Name 		struct pmo_arp_offload_params *arp_offload_req,
213*5113495bSYour Name 		struct pmo_ns_offload_params *ns_offload_req);
214*5113495bSYour Name 
215*5113495bSYour Name #ifdef WLAN_NS_OFFLOAD
216*5113495bSYour Name /**
217*5113495bSYour Name  * target_if_pmo_send_ns_offload_req() - sends ns request to fwr
218*5113495bSYour Name  * @vdev: objmgr vdev
219*5113495bSYour Name  * @arp_offload_req: arp offload req
220*5113495bSYour Name  * @ns_offload_req: ns offload request
221*5113495bSYour Name  *
222*5113495bSYour Name  * This functions sends ns request to fwr.
223*5113495bSYour Name  *
224*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
225*5113495bSYour Name  */
226*5113495bSYour Name QDF_STATUS target_if_pmo_send_ns_offload_req(
227*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
228*5113495bSYour Name 		struct pmo_arp_offload_params *arp_offload_req,
229*5113495bSYour Name 		struct pmo_ns_offload_params *ns_offload_req);
230*5113495bSYour Name #else /* WLAN_NS_OFFLOAD */
231*5113495bSYour Name static inline QDF_STATUS
target_if_pmo_send_ns_offload_req(struct wlan_objmgr_vdev * vdev,struct pmo_arp_offload_params * arp_offload_req,struct pmo_ns_offload_params * ns_offload_req)232*5113495bSYour Name target_if_pmo_send_ns_offload_req(struct wlan_objmgr_vdev *vdev,
233*5113495bSYour Name 		struct pmo_arp_offload_params *arp_offload_req,
234*5113495bSYour Name 		struct pmo_ns_offload_params *ns_offload_req)
235*5113495bSYour Name {
236*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
237*5113495bSYour Name }
238*5113495bSYour Name #endif /* WLAN_NS_OFFLOAD */
239*5113495bSYour Name /**
240*5113495bSYour Name  * target_if_pmo_send_gtk_offload_req() - send gtk offload request in fwr
241*5113495bSYour Name  * @vdev: objmgr vdev handle
242*5113495bSYour Name  * @gtk_offload_req: gtk offload request
243*5113495bSYour Name  *
244*5113495bSYour Name  * Return: QDF status
245*5113495bSYour Name  */
246*5113495bSYour Name QDF_STATUS target_if_pmo_send_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
247*5113495bSYour Name 		struct pmo_gtk_req *gtk_offload_req);
248*5113495bSYour Name 
249*5113495bSYour Name /**
250*5113495bSYour Name  * target_if_pmo_send_gtk_response_req() - send gtk response request in fwr
251*5113495bSYour Name  * @vdev: objmgr vdev handle
252*5113495bSYour Name  *
253*5113495bSYour Name  * Return: QDF status
254*5113495bSYour Name  */
255*5113495bSYour Name QDF_STATUS target_if_pmo_send_gtk_response_req(struct wlan_objmgr_vdev *vdev);
256*5113495bSYour Name 
257*5113495bSYour Name /**
258*5113495bSYour Name  * target_if_pmo_gtk_offload_status_event() - GTK offload status event handler
259*5113495bSYour Name  * @scn_handle: scn handle
260*5113495bSYour Name  * @event: event buffer
261*5113495bSYour Name  * @len: buffer length
262*5113495bSYour Name  *
263*5113495bSYour Name  * Return: 0 for success or error code
264*5113495bSYour Name  */
265*5113495bSYour Name int target_if_pmo_gtk_offload_status_event(void *scn_handle,
266*5113495bSYour Name 	uint8_t *event, uint32_t len);
267*5113495bSYour Name 
268*5113495bSYour Name /**
269*5113495bSYour Name  * target_if_pmo_send_lphb_enable() - enable command of LPHB config req
270*5113495bSYour Name  * @psoc: objmgr psoc handle
271*5113495bSYour Name  * @ts_lphb_enable: lphb enable request which needs to configure in fwr
272*5113495bSYour Name  *
273*5113495bSYour Name  * Return: QDF status
274*5113495bSYour Name  */
275*5113495bSYour Name QDF_STATUS target_if_pmo_send_lphb_enable(struct wlan_objmgr_psoc *psoc,
276*5113495bSYour Name 			struct pmo_lphb_enable_req *ts_lphb_enable);
277*5113495bSYour Name 
278*5113495bSYour Name /**
279*5113495bSYour Name  * target_if_pmo_send_lphb_tcp_params() - set lphb tcp params config request
280*5113495bSYour Name  * @psoc: objmgr psoc handle
281*5113495bSYour Name  * @ts_lphb_tcp_param: lphb tcp params which needs to configure in fwr
282*5113495bSYour Name  *
283*5113495bSYour Name  * Return: QDF status
284*5113495bSYour Name  */
285*5113495bSYour Name QDF_STATUS target_if_pmo_send_lphb_tcp_params(struct wlan_objmgr_psoc *psoc,
286*5113495bSYour Name 			struct pmo_lphb_tcp_params *ts_lphb_tcp_param);
287*5113495bSYour Name 
288*5113495bSYour Name /**
289*5113495bSYour Name  * target_if_pmo_send_lphb_tcp_pkt_filter() - send lphb tcp packet filter req
290*5113495bSYour Name  * @psoc: objmgr psoc handle
291*5113495bSYour Name  * @ts_lphb_tcp_filter: lphb tcp filter request which needs to configure in fwr
292*5113495bSYour Name  *
293*5113495bSYour Name  * Return: QDF status
294*5113495bSYour Name  */
295*5113495bSYour Name QDF_STATUS target_if_pmo_send_lphb_tcp_pkt_filter(struct wlan_objmgr_psoc *psoc,
296*5113495bSYour Name 			struct pmo_lphb_tcp_filter_req *ts_lphb_tcp_filter);
297*5113495bSYour Name 
298*5113495bSYour Name /**
299*5113495bSYour Name  * target_if_pmo_send_lphb_udp_params() - Send udp param command of LPHB
300*5113495bSYour Name  * @psoc: objmgr psoc handle
301*5113495bSYour Name  * @ts_lphb_udp_param: lphb udp params which needs to configure in fwr
302*5113495bSYour Name  *
303*5113495bSYour Name  * Return: QDF status
304*5113495bSYour Name  */
305*5113495bSYour Name QDF_STATUS target_if_pmo_send_lphb_udp_params(struct wlan_objmgr_psoc *psoc,
306*5113495bSYour Name 			struct pmo_lphb_udp_params *ts_lphb_udp_param);
307*5113495bSYour Name 
308*5113495bSYour Name /**
309*5113495bSYour Name  * target_if_pmo_send_lphb_udp_pkt_filter() - Send lphb udp pkt filter cmd req
310*5113495bSYour Name  * @psoc: objmgr psoc handle
311*5113495bSYour Name  * @ts_lphb_udp_filter: lphb udp filter request which needs to configure in fwr
312*5113495bSYour Name  *
313*5113495bSYour Name  * Return: QDF status
314*5113495bSYour Name  */
315*5113495bSYour Name QDF_STATUS target_if_pmo_send_lphb_udp_pkt_filter(struct wlan_objmgr_psoc *psoc,
316*5113495bSYour Name 			struct pmo_lphb_udp_filter_req *ts_lphb_udp_filter);
317*5113495bSYour Name 
318*5113495bSYour Name /**
319*5113495bSYour Name  * target_if_pmo_lphb_evt_handler() - send LPHB indication to os if /HDD
320*5113495bSYour Name  * @psoc: objmgr psoc handle
321*5113495bSYour Name  * @event: lphb event buffer
322*5113495bSYour Name  *
323*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success else error code
324*5113495bSYour Name  */
325*5113495bSYour Name QDF_STATUS target_if_pmo_lphb_evt_handler(struct wlan_objmgr_psoc *psoc,
326*5113495bSYour Name 		uint8_t *event);
327*5113495bSYour Name 
328*5113495bSYour Name /**
329*5113495bSYour Name  * target_if_pmo_send_vdev_update_param_req() - Send vdev param value to fwr
330*5113495bSYour Name  * @vdev: objmgr vdev
331*5113495bSYour Name  * @param_id: tell vdev param id which needs to be updated in fwr
332*5113495bSYour Name  * @param_value: vdev parameter value
333*5113495bSYour Name  *
334*5113495bSYour Name  * Return: QDF status
335*5113495bSYour Name  */
336*5113495bSYour Name QDF_STATUS target_if_pmo_send_vdev_update_param_req(
337*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
338*5113495bSYour Name 		uint32_t param_id, uint32_t param_value);
339*5113495bSYour Name 
340*5113495bSYour Name /**
341*5113495bSYour Name  * target_if_pmo_send_vdev_ps_param_req() - Send vdev ps param value to fwr
342*5113495bSYour Name  * @vdev: objmgr vdev
343*5113495bSYour Name  * @param_id: tell vdev param id which needs to be updated in fwr
344*5113495bSYour Name  * @param_value: vdev parameter value
345*5113495bSYour Name  *
346*5113495bSYour Name  * Return: QDF status
347*5113495bSYour Name  */
348*5113495bSYour Name QDF_STATUS target_if_pmo_send_vdev_ps_param_req(
349*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
350*5113495bSYour Name 		uint32_t param_id,
351*5113495bSYour Name 		uint32_t param_value);
352*5113495bSYour Name 
353*5113495bSYour Name #ifdef WLAN_FEATURE_IGMP_OFFLOAD
354*5113495bSYour Name /**
355*5113495bSYour Name  * target_if_pmo_send_igmp_offload_req() - Send igmp offload req to fw
356*5113495bSYour Name  * @vdev: objmgr vdev
357*5113495bSYour Name  * @pmo_igmp_req: igmp req
358*5113495bSYour Name  *
359*5113495bSYour Name  * Return: QDF status
360*5113495bSYour Name  */
361*5113495bSYour Name QDF_STATUS
362*5113495bSYour Name target_if_pmo_send_igmp_offload_req(
363*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
364*5113495bSYour Name 		struct pmo_igmp_offload_req *pmo_igmp_req);
365*5113495bSYour Name #else
366*5113495bSYour Name static inline QDF_STATUS
target_if_pmo_send_igmp_offload_req(struct wlan_objmgr_vdev * vdev,struct pmo_igmp_offload_req * pmo_igmp_req)367*5113495bSYour Name target_if_pmo_send_igmp_offload_req(
368*5113495bSYour Name 		struct wlan_objmgr_vdev *vdev,
369*5113495bSYour Name 		struct pmo_igmp_offload_req *pmo_igmp_req)
370*5113495bSYour Name {
371*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
372*5113495bSYour Name }
373*5113495bSYour Name #endif
374*5113495bSYour Name 
375*5113495bSYour Name /**
376*5113495bSYour Name  * target_if_pmo_psoc_update_bus_suspend() - update wmi bus suspend flag
377*5113495bSYour Name  * @psoc: objmgr psoc
378*5113495bSYour Name  * @value: bus suspend value
379*5113495bSYour Name  *
380*5113495bSYour Name  * Return: None
381*5113495bSYour Name  */
382*5113495bSYour Name void target_if_pmo_psoc_update_bus_suspend(struct wlan_objmgr_psoc *psoc,
383*5113495bSYour Name 		uint8_t value);
384*5113495bSYour Name 
385*5113495bSYour Name /**
386*5113495bSYour Name  * target_if_pmo_psoc_get_host_credits() - get available host credits
387*5113495bSYour Name  * @psoc: objmgr psoc
388*5113495bSYour Name  *
389*5113495bSYour Name  * Return: return host credits
390*5113495bSYour Name  */
391*5113495bSYour Name int target_if_pmo_psoc_get_host_credits(struct wlan_objmgr_psoc *psoc);
392*5113495bSYour Name 
393*5113495bSYour Name /**
394*5113495bSYour Name  * target_if_pmo_psoc_get_pending_cmnds() - get wmi pending commands
395*5113495bSYour Name  * @psoc: objmgr psoc
396*5113495bSYour Name  *
397*5113495bSYour Name  * Return: return wmi pending commands
398*5113495bSYour Name  */
399*5113495bSYour Name int target_if_pmo_psoc_get_pending_cmnds(struct wlan_objmgr_psoc *psoc);
400*5113495bSYour Name 
401*5113495bSYour Name /**
402*5113495bSYour Name  * target_if_pmo_update_target_suspend_flag() - set wmi target suspend flag
403*5113495bSYour Name  * @psoc: objmgr psoc
404*5113495bSYour Name  * @value: value
405*5113495bSYour Name  *
406*5113495bSYour Name  * Return: None
407*5113495bSYour Name  */
408*5113495bSYour Name void target_if_pmo_update_target_suspend_flag(struct wlan_objmgr_psoc *psoc,
409*5113495bSYour Name 		uint8_t value);
410*5113495bSYour Name 
411*5113495bSYour Name /**
412*5113495bSYour Name  * target_if_pmo_update_target_suspend_acked_flag() - set wmi target suspend
413*5113495bSYour Name  *                                                    acked flag
414*5113495bSYour Name  * @psoc: objmgr psoc
415*5113495bSYour Name  * @value: value
416*5113495bSYour Name  *
417*5113495bSYour Name  * Return: None
418*5113495bSYour Name  */
419*5113495bSYour Name void target_if_pmo_update_target_suspend_acked_flag(
420*5113495bSYour Name 						struct wlan_objmgr_psoc *psoc,
421*5113495bSYour Name 						uint8_t value);
422*5113495bSYour Name 
423*5113495bSYour Name /**
424*5113495bSYour Name  * target_if_pmo_is_target_suspended() - get wmi target suspend flag
425*5113495bSYour Name  * @psoc: objmgr psoc
426*5113495bSYour Name  *
427*5113495bSYour Name  * Return: true if target suspended, false otherwise
428*5113495bSYour Name  */
429*5113495bSYour Name bool target_if_pmo_is_target_suspended(struct wlan_objmgr_psoc *psoc);
430*5113495bSYour Name 
431*5113495bSYour Name /**
432*5113495bSYour Name  * target_if_pmo_psoc_send_wow_enable_req() -send wow enable request
433*5113495bSYour Name  * @psoc: objmgr psoc
434*5113495bSYour Name  * @param: wow command params
435*5113495bSYour Name  *
436*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
437*5113495bSYour Name  */
438*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_wow_enable_req(struct wlan_objmgr_psoc *psoc,
439*5113495bSYour Name 		struct pmo_wow_cmd_params *param);
440*5113495bSYour Name 
441*5113495bSYour Name /**
442*5113495bSYour Name  * target_if_pmo_psoc_send_suspend_req() - fp to send suspend request
443*5113495bSYour Name  * @psoc: objmgr psoc
444*5113495bSYour Name  * @param: target suspend params
445*5113495bSYour Name  *
446*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
447*5113495bSYour Name  */
448*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_suspend_req(struct wlan_objmgr_psoc *psoc,
449*5113495bSYour Name 		struct pmo_suspend_params *param);
450*5113495bSYour Name 
451*5113495bSYour Name /**
452*5113495bSYour Name  * target_if_pmo_set_runtime_pm_in_progress() - set runtime pm status
453*5113495bSYour Name  * @psoc: objmgr psoc
454*5113495bSYour Name  * @value: set runtime pm status
455*5113495bSYour Name  *
456*5113495bSYour Name  * Return: none
457*5113495bSYour Name  */
458*5113495bSYour Name void target_if_pmo_set_runtime_pm_in_progress(struct wlan_objmgr_psoc *psoc,
459*5113495bSYour Name 					      bool value);
460*5113495bSYour Name 
461*5113495bSYour Name /**
462*5113495bSYour Name  * target_if_pmo_get_runtime_pm_in_progress() - fp to get runtime pm status
463*5113495bSYour Name  * @psoc: objmgr psoc
464*5113495bSYour Name  *
465*5113495bSYour Name  * Return: true if runtime pm in progress else false
466*5113495bSYour Name  */
467*5113495bSYour Name bool target_if_pmo_get_runtime_pm_in_progress(struct wlan_objmgr_psoc *psoc);
468*5113495bSYour Name 
469*5113495bSYour Name /**
470*5113495bSYour Name  * target_if_pmo_psoc_send_host_wakeup_ind() - send host wake ind to fwr
471*5113495bSYour Name  * @psoc: objmgr psoc
472*5113495bSYour Name  *
473*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
474*5113495bSYour Name  */
475*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_host_wakeup_ind(
476*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc);
477*5113495bSYour Name 
478*5113495bSYour Name /**
479*5113495bSYour Name  * target_if_pmo_psoc_send_target_resume_req() -send target resume request
480*5113495bSYour Name  * @psoc: objmgr psoc
481*5113495bSYour Name  *
482*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
483*5113495bSYour Name  */
484*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_target_resume_req(
485*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc);
486*5113495bSYour Name 
487*5113495bSYour Name /**
488*5113495bSYour Name  * target_if_pmo_psoc_send_d0wow_enable_req() - send d0 wow enable request
489*5113495bSYour Name  * @psoc: objmgr psoc
490*5113495bSYour Name  *
491*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
492*5113495bSYour Name  */
493*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_d0wow_enable_req(
494*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc);
495*5113495bSYour Name 
496*5113495bSYour Name /**
497*5113495bSYour Name  * target_if_pmo_psoc_send_d0wow_disable_req() - send d0 wow disable request
498*5113495bSYour Name  * @psoc: objmgr psoc
499*5113495bSYour Name  *
500*5113495bSYour Name  * Return: return QDF_STATUS_SUCCESS on success else error code
501*5113495bSYour Name  */
502*5113495bSYour Name QDF_STATUS target_if_pmo_psoc_send_d0wow_disable_req(
503*5113495bSYour Name 		struct wlan_objmgr_psoc *psoc);
504*5113495bSYour Name 
505*5113495bSYour Name /**
506*5113495bSYour Name  * target_if_pmo_psoc_send_idle_monitor_cmd() - send screen status to firmware
507*5113495bSYour Name  * @psoc: objmgr psoc
508*5113495bSYour Name  * @val: Idle monitor value
509*5113495bSYour Name  *
510*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success else error code
511*5113495bSYour Name  */
512*5113495bSYour Name QDF_STATUS
513*5113495bSYour Name target_if_pmo_psoc_send_idle_monitor_cmd(struct wlan_objmgr_psoc *psoc,
514*5113495bSYour Name 					 uint8_t val);
515*5113495bSYour Name 
516*5113495bSYour Name /**
517*5113495bSYour Name  * target_if_pmo_register_tx_ops() - Register PMO component TX OPS
518*5113495bSYour Name  * @tx_ops: PMO if transmit ops
519*5113495bSYour Name  *
520*5113495bSYour Name  * Return: None
521*5113495bSYour Name  */
522*5113495bSYour Name void target_if_pmo_register_tx_ops(struct wlan_pmo_tx_ops *tx_ops);
523*5113495bSYour Name 
524*5113495bSYour Name #ifdef WLAN_FEATURE_ICMP_OFFLOAD
525*5113495bSYour Name /**
526*5113495bSYour Name  * target_if_pmo_send_icmp_offload_req() - sends icmp request to fwr
527*5113495bSYour Name  * @psoc: objmgr psoc
528*5113495bSYour Name  * @pmo_icmp_req: icmp offload request
529*5113495bSYour Name  *
530*5113495bSYour Name  * This functions sends icmp request to fwr.
531*5113495bSYour Name  *
532*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for success or error code
533*5113495bSYour Name  */
534*5113495bSYour Name QDF_STATUS
535*5113495bSYour Name target_if_pmo_send_icmp_offload_req(struct wlan_objmgr_psoc *psoc,
536*5113495bSYour Name 				    struct pmo_icmp_offload *pmo_icmp_req);
537*5113495bSYour Name #endif
538*5113495bSYour Name 
539*5113495bSYour Name /**
540*5113495bSYour Name  * target_if_pmo_set_wow_enable_ack_failed() - set wow enable ack failure status
541*5113495bSYour Name  * @psoc: objmgr psoc
542*5113495bSYour Name  *
543*5113495bSYour Name  * Return: none
544*5113495bSYour Name  */
545*5113495bSYour Name void target_if_pmo_set_wow_enable_ack_failed(struct wlan_objmgr_psoc *psoc);
546*5113495bSYour Name #endif
547