xref: /wlan-driver/qcacld-3.0/components/dp/dispatcher/inc/wlan_dp_ucfg_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name /**
20*5113495bSYour Name  * DOC: wlan_dp_ucfg_api.h
21*5113495bSYour Name  *
22*5113495bSYour Name  * TDLS north bound interface declaration
23*5113495bSYour Name  */
24*5113495bSYour Name 
25*5113495bSYour Name #if !defined(_WLAN_DP_UCFG_API_H_)
26*5113495bSYour Name #define _WLAN_DP_UCFG_API_H_
27*5113495bSYour Name 
28*5113495bSYour Name #include <scheduler_api.h>
29*5113495bSYour Name #include <wlan_objmgr_cmn.h>
30*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h>
31*5113495bSYour Name #include <wlan_objmgr_pdev_obj.h>
32*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
33*5113495bSYour Name #include "pld_common.h"
34*5113495bSYour Name #include <wlan_dp_public_struct.h>
35*5113495bSYour Name #include <cdp_txrx_misc.h>
36*5113495bSYour Name #include "wlan_dp_objmgr.h"
37*5113495bSYour Name #include "wlan_qmi_public_struct.h"
38*5113495bSYour Name 
39*5113495bSYour Name #define DP_IGNORE_NUD_FAIL                      0
40*5113495bSYour Name #define DP_DISCONNECT_AFTER_NUD_FAIL            1
41*5113495bSYour Name #define DP_ROAM_AFTER_NUD_FAIL                  2
42*5113495bSYour Name #define DP_DISCONNECT_AFTER_ROAM_FAIL           3
43*5113495bSYour Name 
44*5113495bSYour Name #ifdef WLAN_NUD_TRACKING
45*5113495bSYour Name bool
46*5113495bSYour Name ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc);
47*5113495bSYour Name 
48*5113495bSYour Name bool
49*5113495bSYour Name ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc *psoc);
50*5113495bSYour Name #else
51*5113495bSYour Name static inline bool
ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc * psoc)52*5113495bSYour Name ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc)
53*5113495bSYour Name {
54*5113495bSYour Name 	return false;
55*5113495bSYour Name }
56*5113495bSYour Name 
57*5113495bSYour Name static inline bool
ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc * psoc)58*5113495bSYour Name ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc *psoc)
59*5113495bSYour Name {
60*5113495bSYour Name 	return false;
61*5113495bSYour Name }
62*5113495bSYour Name #endif
63*5113495bSYour Name 
64*5113495bSYour Name /**
65*5113495bSYour Name  * ucfg_dp_update_link_mac_addr() - Update the dp_link mac address, during MLO
66*5113495bSYour Name  *				    link switch.
67*5113495bSYour Name  * @vdev: Objmgr vdev corresponding to the dp_link
68*5113495bSYour Name  * @new_mac_addr: New mac address of the dp_link
69*5113495bSYour Name  * @is_link_switch: Flag to indicate if the link mac addr update is as a part
70*5113495bSYour Name  *		    of MLO link switch.
71*5113495bSYour Name  *
72*5113495bSYour Name  * Return: QDF_STATUS
73*5113495bSYour Name  */
74*5113495bSYour Name QDF_STATUS ucfg_dp_update_link_mac_addr(struct wlan_objmgr_vdev *vdev,
75*5113495bSYour Name 					struct qdf_mac_addr *new_mac_addr,
76*5113495bSYour Name 					bool is_link_switch);
77*5113495bSYour Name 
78*5113495bSYour Name /**
79*5113495bSYour Name  * ucfg_dp_update_def_link() - update DP interface default link
80*5113495bSYour Name  * @psoc: psoc handle
81*5113495bSYour Name  * @intf_mac: interface MAC address
82*5113495bSYour Name  * @vdev: objmgr vdev handle to set the def_link in dp_intf
83*5113495bSYour Name  *
84*5113495bSYour Name  */
85*5113495bSYour Name void ucfg_dp_update_def_link(struct wlan_objmgr_psoc *psoc,
86*5113495bSYour Name 			     struct qdf_mac_addr *intf_mac,
87*5113495bSYour Name 			     struct wlan_objmgr_vdev *vdev);
88*5113495bSYour Name 
89*5113495bSYour Name /**
90*5113495bSYour Name  * ucfg_dp_update_intf_mac() - update DP interface MAC address
91*5113495bSYour Name  * @psoc: psoc handle
92*5113495bSYour Name  * @cur_mac: Current MAC address
93*5113495bSYour Name  * @new_mac: new MAC address
94*5113495bSYour Name  * @vdev: objmgr vdev handle to set the def_link in dp_intf
95*5113495bSYour Name  *
96*5113495bSYour Name  */
97*5113495bSYour Name void ucfg_dp_update_intf_mac(struct wlan_objmgr_psoc *psoc,
98*5113495bSYour Name 			     struct qdf_mac_addr *cur_mac,
99*5113495bSYour Name 			     struct qdf_mac_addr *new_mac,
100*5113495bSYour Name 			     struct wlan_objmgr_vdev *vdev);
101*5113495bSYour Name 
102*5113495bSYour Name /**
103*5113495bSYour Name  * ucfg_dp_destroy_intf() - DP module interface deletion
104*5113495bSYour Name  * @psoc: psoc handle
105*5113495bSYour Name  * @intf_addr: Interface MAC address
106*5113495bSYour Name  *
107*5113495bSYour Name  */
108*5113495bSYour Name QDF_STATUS ucfg_dp_destroy_intf(struct wlan_objmgr_psoc *psoc,
109*5113495bSYour Name 				struct qdf_mac_addr *intf_addr);
110*5113495bSYour Name 
111*5113495bSYour Name /**
112*5113495bSYour Name  * ucfg_dp_create_intf() - DP module interface creation
113*5113495bSYour Name  * @psoc: psoc handle
114*5113495bSYour Name  * @intf_addr: Interface MAC address
115*5113495bSYour Name  * @ndev : netdev object
116*5113495bSYour Name  *
117*5113495bSYour Name  */
118*5113495bSYour Name QDF_STATUS ucfg_dp_create_intf(struct wlan_objmgr_psoc *psoc,
119*5113495bSYour Name 			       struct qdf_mac_addr *intf_addr,
120*5113495bSYour Name 			       qdf_netdev_t ndev);
121*5113495bSYour Name 
122*5113495bSYour Name void ucfg_dp_set_hif_handle(struct wlan_objmgr_psoc *psoc,
123*5113495bSYour Name 			    struct hif_opaque_softc *hif_handle);
124*5113495bSYour Name void ucfg_dp_set_cmn_dp_handle(struct wlan_objmgr_psoc *psoc,
125*5113495bSYour Name 			       ol_txrx_soc_handle soc);
126*5113495bSYour Name /**
127*5113495bSYour Name  * ucfg_dp_init() - DP module initialization API
128*5113495bSYour Name  *
129*5113495bSYour Name  * Return: QDF_STATUS
130*5113495bSYour Name  */
131*5113495bSYour Name QDF_STATUS ucfg_dp_init(void);
132*5113495bSYour Name 
133*5113495bSYour Name /**
134*5113495bSYour Name  * ucfg_dp_deinit() - DP module deinitialization API
135*5113495bSYour Name  *
136*5113495bSYour Name  * Return: QDF_STATUS
137*5113495bSYour Name  */
138*5113495bSYour Name QDF_STATUS ucfg_dp_deinit(void);
139*5113495bSYour Name 
140*5113495bSYour Name /**
141*5113495bSYour Name  * ucfg_dp_psoc_open() - DP component Open
142*5113495bSYour Name  * @psoc: pointer to psoc object
143*5113495bSYour Name  *
144*5113495bSYour Name  * Return: QDF Status
145*5113495bSYour Name  */
146*5113495bSYour Name QDF_STATUS ucfg_dp_psoc_open(struct wlan_objmgr_psoc *psoc);
147*5113495bSYour Name 
148*5113495bSYour Name /**
149*5113495bSYour Name  * ucfg_dp_psoc_close() - DP component Close
150*5113495bSYour Name  * @psoc: pointer to psoc object
151*5113495bSYour Name  *
152*5113495bSYour Name  * Return: QDF Status
153*5113495bSYour Name  */
154*5113495bSYour Name QDF_STATUS ucfg_dp_psoc_close(struct wlan_objmgr_psoc *psoc);
155*5113495bSYour Name 
156*5113495bSYour Name /**
157*5113495bSYour Name  * ucfg_dp_suspend_wlan() - update suspend state in DP component
158*5113495bSYour Name  * @psoc: pointer to psoc object
159*5113495bSYour Name  *
160*5113495bSYour Name  * Return: None
161*5113495bSYour Name  */
162*5113495bSYour Name void ucfg_dp_suspend_wlan(struct wlan_objmgr_psoc *psoc);
163*5113495bSYour Name 
164*5113495bSYour Name /**
165*5113495bSYour Name  * ucfg_dp_resume_wlan() - update resume state in DP component
166*5113495bSYour Name  * @psoc: pointer to psoc object
167*5113495bSYour Name  *
168*5113495bSYour Name  * Return: None
169*5113495bSYour Name  */
170*5113495bSYour Name void ucfg_dp_resume_wlan(struct wlan_objmgr_psoc *psoc);
171*5113495bSYour Name 
172*5113495bSYour Name /**
173*5113495bSYour Name  * ucfg_dp_update_config() - DP module config update
174*5113495bSYour Name  * @psoc: pointer to psoc object
175*5113495bSYour Name  * @req : user config
176*5113495bSYour Name  *
177*5113495bSYour Name  * Return: QDF_STATUS
178*5113495bSYour Name  */
179*5113495bSYour Name QDF_STATUS
180*5113495bSYour Name ucfg_dp_update_config(struct wlan_objmgr_psoc *psoc,
181*5113495bSYour Name 		      struct wlan_dp_user_config *req);
182*5113495bSYour Name /**
183*5113495bSYour Name  * ucfg_dp_wait_complete_tasks() - wait for DP tasks to complete
184*5113495bSYour Name  * Called from legacy layer to wait DP tasks completion
185*5113495bSYour Name  *
186*5113495bSYour Name  * Return: None
187*5113495bSYour Name  */
188*5113495bSYour Name void
189*5113495bSYour Name ucfg_dp_wait_complete_tasks(void);
190*5113495bSYour Name 
191*5113495bSYour Name /**
192*5113495bSYour Name  * ucfg_dp_remove_conn_info() - Remove DP STA intf connection info
193*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
194*5113495bSYour Name  *
195*5113495bSYour Name  * Return: QDF_STATUS
196*5113495bSYour Name  */
197*5113495bSYour Name void
198*5113495bSYour Name ucfg_dp_remove_conn_info(struct wlan_objmgr_vdev *vdev);
199*5113495bSYour Name 
200*5113495bSYour Name /**
201*5113495bSYour Name  * ucfg_dp_conn_info_set_bssid() - set BSSID info in STA intf
202*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
203*5113495bSYour Name  * @bssid: BSSID mac
204*5113495bSYour Name  *
205*5113495bSYour Name  * Return: None
206*5113495bSYour Name  */
207*5113495bSYour Name void ucfg_dp_conn_info_set_bssid(struct wlan_objmgr_vdev *vdev,
208*5113495bSYour Name 				 struct qdf_mac_addr *bssid);
209*5113495bSYour Name 
210*5113495bSYour Name /**
211*5113495bSYour Name  * ucfg_dp_conn_info_set_arp_service() - set ARP service info
212*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
213*5113495bSYour Name  * @proxy_arp_service: ARP service info
214*5113495bSYour Name  *
215*5113495bSYour Name  * Return: None
216*5113495bSYour Name  */
217*5113495bSYour Name void ucfg_dp_conn_info_set_arp_service(struct wlan_objmgr_vdev *vdev,
218*5113495bSYour Name 				       uint8_t proxy_arp_service);
219*5113495bSYour Name 
220*5113495bSYour Name /**
221*5113495bSYour Name  * ucfg_dp_conn_info_set_peer_authenticate() - set Peer authenticated state
222*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
223*5113495bSYour Name  * @is_authenticated: Peer authenticated info
224*5113495bSYour Name  *
225*5113495bSYour Name  * Return: None
226*5113495bSYour Name  */
227*5113495bSYour Name void ucfg_dp_conn_info_set_peer_authenticate(struct wlan_objmgr_vdev *vdev,
228*5113495bSYour Name 					     uint8_t is_authenticated);
229*5113495bSYour Name 
230*5113495bSYour Name /**
231*5113495bSYour Name  * ucfg_dp_conn_info_set_peer_mac() - set peer mac info in DP intf
232*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
233*5113495bSYour Name  * @peer_mac: Peer MAC information
234*5113495bSYour Name  *
235*5113495bSYour Name  * Return: None
236*5113495bSYour Name  */
237*5113495bSYour Name void ucfg_dp_conn_info_set_peer_mac(struct wlan_objmgr_vdev *vdev,
238*5113495bSYour Name 				    struct qdf_mac_addr *peer_mac);
239*5113495bSYour Name 
240*5113495bSYour Name /**
241*5113495bSYour Name  * ucfg_dp_softap_check_wait_for_tx_eap_pkt() - wait for TX EAP pkt in SAP
242*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
243*5113495bSYour Name  * @mac_addr: Peer MAC address info
244*5113495bSYour Name  *
245*5113495bSYour Name  * Return: None
246*5113495bSYour Name  */
247*5113495bSYour Name void ucfg_dp_softap_check_wait_for_tx_eap_pkt(struct wlan_objmgr_vdev *vdev,
248*5113495bSYour Name 					      struct qdf_mac_addr *mac_addr);
249*5113495bSYour Name 
250*5113495bSYour Name /**
251*5113495bSYour Name  * ucfg_dp_update_dhcp_state_on_disassoc() - update DHCP during disassoc
252*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
253*5113495bSYour Name  * @mac_addr: Peer MAC address info
254*5113495bSYour Name  *
255*5113495bSYour Name  * Return: None
256*5113495bSYour Name  */
257*5113495bSYour Name void ucfg_dp_update_dhcp_state_on_disassoc(struct wlan_objmgr_vdev *vdev,
258*5113495bSYour Name 					   struct qdf_mac_addr *mac_addr);
259*5113495bSYour Name 
260*5113495bSYour Name /**
261*5113495bSYour Name  * ucfg_dp_set_dfs_cac_tx() - update DFS CAC TX block info
262*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
263*5113495bSYour Name  * @tx_block: true if TX need to be blocked
264*5113495bSYour Name  *
265*5113495bSYour Name  * Return: None
266*5113495bSYour Name  */
267*5113495bSYour Name void ucfg_dp_set_dfs_cac_tx(struct wlan_objmgr_vdev *vdev,
268*5113495bSYour Name 			    bool tx_block);
269*5113495bSYour Name 
270*5113495bSYour Name /**
271*5113495bSYour Name  * ucfg_dp_set_bss_state_start() - update BSS state for SAP intf
272*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
273*5113495bSYour Name  * @start: true if BSS state is started
274*5113495bSYour Name  *
275*5113495bSYour Name  * Return: None
276*5113495bSYour Name  */
277*5113495bSYour Name void ucfg_dp_set_bss_state_start(struct wlan_objmgr_vdev *vdev, bool start);
278*5113495bSYour Name 
279*5113495bSYour Name /**
280*5113495bSYour Name  * ucfg_dp_lro_set_reset() - LRO set/reset in DP
281*5113495bSYour Name  * @vdev: vdev mapped to DP interface
282*5113495bSYour Name  * @enable_flag: Enable/disable LRO feature
283*5113495bSYour Name  *
284*5113495bSYour Name  * Return: 0 on success and non zero on failure.
285*5113495bSYour Name  */
286*5113495bSYour Name QDF_STATUS ucfg_dp_lro_set_reset(struct wlan_objmgr_vdev *vdev,
287*5113495bSYour Name 				 uint8_t enable_flag);
288*5113495bSYour Name /**
289*5113495bSYour Name  * ucfg_dp_is_ol_enabled() - Get ol enable/disable info
290*5113495bSYour Name  * @psoc: PSOC mapped to DP context
291*5113495bSYour Name  *
292*5113495bSYour Name  * Return: true if OL enabled
293*5113495bSYour Name  */
294*5113495bSYour Name bool ucfg_dp_is_ol_enabled(struct wlan_objmgr_psoc *psoc);
295*5113495bSYour Name 
296*5113495bSYour Name #ifdef RECEIVE_OFFLOAD
297*5113495bSYour Name /**
298*5113495bSYour Name  * ucfg_dp_rx_handle_concurrency() - Handle concurrency setting in DP
299*5113495bSYour Name  * @psoc: PSOC mapped to DP context
300*5113495bSYour Name  * @disable: true/false to disable/enable the Rx offload
301*5113495bSYour Name  *
302*5113495bSYour Name  * Return: None
303*5113495bSYour Name  */
304*5113495bSYour Name void ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc *psoc,
305*5113495bSYour Name 				   bool disable);
306*5113495bSYour Name #else
307*5113495bSYour Name static inline
ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc * psoc,bool disable)308*5113495bSYour Name void ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc *psoc,
309*5113495bSYour Name 				   bool disable) { }
310*5113495bSYour Name #endif
311*5113495bSYour Name 
312*5113495bSYour Name /**
313*5113495bSYour Name  * ucfg_dp_is_rx_common_thread_enabled() - Get common thread enable/disable info
314*5113495bSYour Name  * @psoc: PSOC mapped to DP context
315*5113495bSYour Name  *
316*5113495bSYour Name  * Return: true if common thread enabled
317*5113495bSYour Name  */
318*5113495bSYour Name bool ucfg_dp_is_rx_common_thread_enabled(struct wlan_objmgr_psoc *psoc);
319*5113495bSYour Name 
320*5113495bSYour Name /**
321*5113495bSYour Name  * ucfg_dp_is_rx_threads_enabled() - Get RX DP threads info
322*5113495bSYour Name  * @psoc: PSOC mapped to DP context
323*5113495bSYour Name  *
324*5113495bSYour Name  * Return: true if DP RX threads enabled
325*5113495bSYour Name  */
326*5113495bSYour Name bool ucfg_dp_is_rx_threads_enabled(struct wlan_objmgr_psoc *psoc);
327*5113495bSYour Name 
328*5113495bSYour Name /**
329*5113495bSYour Name  * ucfg_dp_rx_ol_init() - Initialize Rx offload mode (LRO or GRO)
330*5113495bSYour Name  * @psoc: PSOC mapped to DP context
331*5113495bSYour Name  * @is_wifi3_0_target: true if it wifi3.0 target
332*5113495bSYour Name  *
333*5113495bSYour Name  * Return: 0 on success and non zero on failure.
334*5113495bSYour Name  */
335*5113495bSYour Name QDF_STATUS ucfg_dp_rx_ol_init(struct wlan_objmgr_psoc *psoc,
336*5113495bSYour Name 			      bool is_wifi3_0_target);
337*5113495bSYour Name 
338*5113495bSYour Name /**
339*5113495bSYour Name  * ucfg_dp_start_xmit() - Transmit packet on STA interface
340*5113495bSYour Name  * @nbuf: n/w buffer to transmitted
341*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
342*5113495bSYour Name  *
343*5113495bSYour Name  * Return: 0 on success and non zero on failure.
344*5113495bSYour Name  */
345*5113495bSYour Name QDF_STATUS
346*5113495bSYour Name ucfg_dp_start_xmit(qdf_nbuf_t nbuf, struct wlan_objmgr_vdev *vdev);
347*5113495bSYour Name 
348*5113495bSYour Name /**
349*5113495bSYour Name  * ucfg_dp_rx_packet_cbk() - Receive packet on STA interface
350*5113495bSYour Name  * @nbuf: n/w buffer to be received
351*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
352*5113495bSYour Name  *
353*5113495bSYour Name  * Return: 0 on success and non zero on failure.
354*5113495bSYour Name  */
355*5113495bSYour Name QDF_STATUS ucfg_dp_rx_packet_cbk(struct wlan_objmgr_vdev *vdev,
356*5113495bSYour Name 				 qdf_nbuf_t nbuf);
357*5113495bSYour Name 
358*5113495bSYour Name /**
359*5113495bSYour Name  * ucfg_dp_tx_timeout() - called during transmission timeout on STA
360*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
361*5113495bSYour Name  *
362*5113495bSYour Name  * Return: None
363*5113495bSYour Name  */
364*5113495bSYour Name void ucfg_dp_tx_timeout(struct wlan_objmgr_vdev *vdev);
365*5113495bSYour Name 
366*5113495bSYour Name /**
367*5113495bSYour Name  * ucfg_dp_softap_tx_timeout() - called during transmission timeout on SAP
368*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
369*5113495bSYour Name  *
370*5113495bSYour Name  * Return: None
371*5113495bSYour Name  */
372*5113495bSYour Name void ucfg_dp_softap_tx_timeout(struct wlan_objmgr_vdev *vdev);
373*5113495bSYour Name 
374*5113495bSYour Name /**
375*5113495bSYour Name  * ucfg_dp_softap_start_xmit() - Transmit packet on SAP interface
376*5113495bSYour Name  * @nbuf: n/w buffer to transmitted
377*5113495bSYour Name  * @vdev: vdev mapped to SAP DP interface
378*5113495bSYour Name  *
379*5113495bSYour Name  * Return: 0 on success and non zero on failure.
380*5113495bSYour Name  */
381*5113495bSYour Name QDF_STATUS
382*5113495bSYour Name ucfg_dp_softap_start_xmit(qdf_nbuf_t nbuf, struct wlan_objmgr_vdev *vdev);
383*5113495bSYour Name 
384*5113495bSYour Name /**
385*5113495bSYour Name  * ucfg_dp_get_dev_stats() - Get netdev stats info
386*5113495bSYour Name  * @dev: Pointer to network device
387*5113495bSYour Name  *
388*5113495bSYour Name  * Return: qdf_net_dev_stats info
389*5113495bSYour Name  */
390*5113495bSYour Name qdf_net_dev_stats *ucfg_dp_get_dev_stats(qdf_netdev_t dev);
391*5113495bSYour Name 
392*5113495bSYour Name /**
393*5113495bSYour Name  * ucfg_dp_inc_rx_pkt_stats() - DP increment RX pkt stats
394*5113495bSYour Name  * @vdev: VDEV mapped to DP interface
395*5113495bSYour Name  * @pkt_len: packet length to be incremented in stats
396*5113495bSYour Name  * @delivered: pkts delivered or not
397*5113495bSYour Name  *
398*5113495bSYour Name  * Return: None
399*5113495bSYour Name  */
400*5113495bSYour Name void ucfg_dp_inc_rx_pkt_stats(struct wlan_objmgr_vdev *vdev,
401*5113495bSYour Name 			      uint32_t pkt_len,
402*5113495bSYour Name 			      bool delivered);
403*5113495bSYour Name 
404*5113495bSYour Name /**
405*5113495bSYour Name  * ucfg_dp_get_rx_softirq_yield_duration() - Get rx soft IRQ yield duration
406*5113495bSYour Name  * @psoc: pointer to psoc object
407*5113495bSYour Name  *
408*5113495bSYour Name  * Return: soft IRQ yield duration
409*5113495bSYour Name  */
410*5113495bSYour Name uint64_t
411*5113495bSYour Name ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc);
412*5113495bSYour Name 
413*5113495bSYour Name /**
414*5113495bSYour Name  * ucfg_dp_register_rx_mic_error_ind_handler : register mic error handler.
415*5113495bSYour Name  * @soc: soc handle
416*5113495bSYour Name  */
417*5113495bSYour Name void ucfg_dp_register_rx_mic_error_ind_handler(void *soc);
418*5113495bSYour Name 
419*5113495bSYour Name /**
420*5113495bSYour Name  * ucfg_dp_sta_register_txrx_ops() - Register ops for TX/RX operations in STA
421*5113495bSYour Name  * @vdev: vdev mapped to STA DP interface
422*5113495bSYour Name  *
423*5113495bSYour Name  * Return: 0 on success and non zero on failure.
424*5113495bSYour Name  */
425*5113495bSYour Name QDF_STATUS ucfg_dp_sta_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
426*5113495bSYour Name 
427*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS
428*5113495bSYour Name /**
429*5113495bSYour Name  * ucfg_dp_tdlsta_register_txrx_ops() - Register ops for TX/RX operations
430*5113495bSYour Name  * @vdev: vdev mapped to TDLS STA DP interface
431*5113495bSYour Name  *
432*5113495bSYour Name  * Return: 0 on success and non zero on failure.
433*5113495bSYour Name  */
434*5113495bSYour Name QDF_STATUS ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
435*5113495bSYour Name #else
436*5113495bSYour Name static inline
ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev * vdev)437*5113495bSYour Name QDF_STATUS ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
438*5113495bSYour Name {
439*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
440*5113495bSYour Name }
441*5113495bSYour Name #endif
442*5113495bSYour Name 
443*5113495bSYour Name /**
444*5113495bSYour Name  * ucfg_dp_ocb_register_txrx_ops() - Register ops for TX/RX operations
445*5113495bSYour Name  * @vdev: vdev mapped to OCB DP interface
446*5113495bSYour Name  *
447*5113495bSYour Name  * Return: 0 on success and non zero on failure.
448*5113495bSYour Name  */
449*5113495bSYour Name QDF_STATUS ucfg_dp_ocb_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
450*5113495bSYour Name 
451*5113495bSYour Name #ifdef FEATURE_MONITOR_MODE_SUPPORT
452*5113495bSYour Name /**
453*5113495bSYour Name  * ucfg_dp_mon_register_txrx_ops() - Register ops for TX/RX operations
454*5113495bSYour Name  * @vdev: vdev mapped to Monitor mode DP interface
455*5113495bSYour Name  *
456*5113495bSYour Name  * Return: 0 on success and non zero on failure.
457*5113495bSYour Name  */
458*5113495bSYour Name QDF_STATUS ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
459*5113495bSYour Name #else
460*5113495bSYour Name static inline
ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev * vdev)461*5113495bSYour Name QDF_STATUS ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
462*5113495bSYour Name {
463*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
464*5113495bSYour Name }
465*5113495bSYour Name #endif
466*5113495bSYour Name 
467*5113495bSYour Name /**
468*5113495bSYour Name  * ucfg_dp_softap_register_txrx_ops() - Register ops for TX/RX operations
469*5113495bSYour Name  * @vdev: vdev mapped to SAP mode DP interface
470*5113495bSYour Name  * @txrx_ops: Tx and Rx data transfer ops
471*5113495bSYour Name  *
472*5113495bSYour Name  * Return: 0 on success and non zero on failure.
473*5113495bSYour Name  */
474*5113495bSYour Name QDF_STATUS ucfg_dp_softap_register_txrx_ops(struct wlan_objmgr_vdev *vdev,
475*5113495bSYour Name 					    struct ol_txrx_ops *txrx_ops);
476*5113495bSYour Name 
477*5113495bSYour Name /**
478*5113495bSYour Name  * ucfg_dp_register_pkt_capture_callbacks() - Register ops for pkt capture operations
479*5113495bSYour Name  * @vdev: vdev mapped to DP interface
480*5113495bSYour Name  *
481*5113495bSYour Name  * Return: 0 on success and non zero on failure.
482*5113495bSYour Name  */
483*5113495bSYour Name QDF_STATUS
484*5113495bSYour Name ucfg_dp_register_pkt_capture_callbacks(struct wlan_objmgr_vdev *vdev);
485*5113495bSYour Name 
486*5113495bSYour Name /**
487*5113495bSYour Name  * ucfg_dp_bbm_context_init() - Initialize BBM context
488*5113495bSYour Name  * @psoc: psoc handle
489*5113495bSYour Name  *
490*5113495bSYour Name  * Returns: error code
491*5113495bSYour Name  */
492*5113495bSYour Name int ucfg_dp_bbm_context_init(struct wlan_objmgr_psoc *psoc);
493*5113495bSYour Name 
494*5113495bSYour Name /**
495*5113495bSYour Name  * ucfg_dp_bbm_context_deinit() - De-initialize BBM context
496*5113495bSYour Name  * @psoc: psoc handle
497*5113495bSYour Name  *
498*5113495bSYour Name  * Returns: None
499*5113495bSYour Name  */
500*5113495bSYour Name void ucfg_dp_bbm_context_deinit(struct wlan_objmgr_psoc *psoc);
501*5113495bSYour Name 
502*5113495bSYour Name /**
503*5113495bSYour Name  * ucfg_dp_bbm_apply_independent_policy() - Apply independent policies
504*5113495bSYour Name  *  to set the bus bw level
505*5113495bSYour Name  * @psoc: psoc handle
506*5113495bSYour Name  * @params: BBM policy related params
507*5113495bSYour Name  *
508*5113495bSYour Name  * The function applies BBM related policies and appropriately sets the bus
509*5113495bSYour Name  * bandwidth level.
510*5113495bSYour Name  *
511*5113495bSYour Name  * Returns: None
512*5113495bSYour Name  */
513*5113495bSYour Name void ucfg_dp_bbm_apply_independent_policy(struct wlan_objmgr_psoc *psoc,
514*5113495bSYour Name 					  struct bbm_params *params);
515*5113495bSYour Name 
516*5113495bSYour Name /**
517*5113495bSYour Name  * ucfg_dp_periodic_sta_stats_start() - Start displaying periodic stats for STA
518*5113495bSYour Name  * @vdev: Pointer to the vdev
519*5113495bSYour Name  *
520*5113495bSYour Name  * Return: none
521*5113495bSYour Name  */
522*5113495bSYour Name void ucfg_dp_periodic_sta_stats_start(struct wlan_objmgr_vdev *vdev);
523*5113495bSYour Name 
524*5113495bSYour Name /**
525*5113495bSYour Name  * ucfg_dp_periodic_sta_stats_stop() - Stop displaying periodic stats for STA
526*5113495bSYour Name  * @vdev: Pointer to the vdev
527*5113495bSYour Name  *
528*5113495bSYour Name  * Return: none
529*5113495bSYour Name  */
530*5113495bSYour Name void ucfg_dp_periodic_sta_stats_stop(struct wlan_objmgr_vdev *vdev);
531*5113495bSYour Name 
532*5113495bSYour Name /**
533*5113495bSYour Name  * ucfg_dp_set_rx_mode_rps() - Enable/disable RPS in SAP mode
534*5113495bSYour Name  * @enable: Set true to enable RPS in SAP mode
535*5113495bSYour Name  *
536*5113495bSYour Name  * Callback function registered with datapath
537*5113495bSYour Name  *
538*5113495bSYour Name  * Return: none
539*5113495bSYour Name  */
540*5113495bSYour Name void ucfg_dp_set_rx_mode_rps(bool enable);
541*5113495bSYour Name 
542*5113495bSYour Name /**
543*5113495bSYour Name  * ucfg_dp_try_send_rps_ind() - send rps indication to daemon
544*5113495bSYour Name  * @vdev: vdev handle
545*5113495bSYour Name  *
546*5113495bSYour Name  * If RPS feature enabled by INI, send RPS enable indication to daemon
547*5113495bSYour Name  * Indication contents is the name of interface to find correct sysfs node
548*5113495bSYour Name  * Should send all available interfaces
549*5113495bSYour Name  *
550*5113495bSYour Name  * Return: none
551*5113495bSYour Name  */
552*5113495bSYour Name void ucfg_dp_try_send_rps_ind(struct wlan_objmgr_vdev *vdev);
553*5113495bSYour Name 
554*5113495bSYour Name /**
555*5113495bSYour Name  * ucfg_dp_reg_ipa_rsp_ind() - Resiter RSP IND cb with IPA component
556*5113495bSYour Name  * @pdev: pdev handle
557*5113495bSYour Name  *
558*5113495bSYour Name  * Returns: None
559*5113495bSYour Name  */
560*5113495bSYour Name void ucfg_dp_reg_ipa_rsp_ind(struct wlan_objmgr_pdev *pdev);
561*5113495bSYour Name 
562*5113495bSYour Name /**
563*5113495bSYour Name  * ucfg_dp_try_set_rps_cpu_mask - set RPS CPU mask for interfaces
564*5113495bSYour Name  * @psoc: psoc handle
565*5113495bSYour Name  *
566*5113495bSYour Name  * Return: none
567*5113495bSYour Name  */
568*5113495bSYour Name void ucfg_dp_try_set_rps_cpu_mask(struct wlan_objmgr_psoc *psoc);
569*5113495bSYour Name 
570*5113495bSYour Name /**
571*5113495bSYour Name  * ucfg_dp_add_latency_critical_client() - Add latency critical client
572*5113495bSYour Name  * @vdev: vdev handle (Should not be NULL)
573*5113495bSYour Name  * @phymode: the phymode of the connected adapter
574*5113495bSYour Name  *
575*5113495bSYour Name  * This function checks if the present connection is latency critical
576*5113495bSYour Name  * and adds to the latency critical clients count and informs the
577*5113495bSYour Name  * datapath about this connection being latency critical.
578*5113495bSYour Name  *
579*5113495bSYour Name  * Returns: None
580*5113495bSYour Name  */
581*5113495bSYour Name void ucfg_dp_add_latency_critical_client(struct wlan_objmgr_vdev *vdev,
582*5113495bSYour Name 					 enum qca_wlan_802_11_mode phymode);
583*5113495bSYour Name 
584*5113495bSYour Name /**
585*5113495bSYour Name  * ucfg_dp_del_latency_critical_client() - Remove latency critical client
586*5113495bSYour Name  * @vdev: vdev handle (Should not be NULL)
587*5113495bSYour Name  * @phymode: the phymode of the connected adapter
588*5113495bSYour Name  *
589*5113495bSYour Name  * This function checks if the present connection was latency critical
590*5113495bSYour Name  * and removes from the latency critical clients count and informs the
591*5113495bSYour Name  * datapath about the removed connection being latency critical.
592*5113495bSYour Name  *
593*5113495bSYour Name  * Returns: None
594*5113495bSYour Name  */
595*5113495bSYour Name void ucfg_dp_del_latency_critical_client(struct wlan_objmgr_vdev *vdev,
596*5113495bSYour Name 					 enum qca_wlan_802_11_mode phymode);
597*5113495bSYour Name 
598*5113495bSYour Name /**
599*5113495bSYour Name  * ucfg_dp_reset_tcp_delack() - Reset TCP delay ACK
600*5113495bSYour Name  * level
601*5113495bSYour Name  * @psoc: psoc handle
602*5113495bSYour Name  *
603*5113495bSYour Name  * Return: None
604*5113495bSYour Name  */
605*5113495bSYour Name void ucfg_dp_reset_tcp_delack(struct wlan_objmgr_psoc *psoc);
606*5113495bSYour Name 
607*5113495bSYour Name /**
608*5113495bSYour Name  * ucfg_dp_set_current_throughput_level() - update the current vote
609*5113495bSYour Name  * level
610*5113495bSYour Name  * @psoc: psoc handle
611*5113495bSYour Name  * @next_vote_level: pld_bus_width_type voting level
612*5113495bSYour Name  *
613*5113495bSYour Name  * This function updates the current vote level to the new level
614*5113495bSYour Name  * provided
615*5113495bSYour Name  *
616*5113495bSYour Name  * Return: None
617*5113495bSYour Name  */
618*5113495bSYour Name void
619*5113495bSYour Name ucfg_dp_set_current_throughput_level(struct wlan_objmgr_psoc *psoc,
620*5113495bSYour Name 				     enum pld_bus_width_type next_vote_level);
621*5113495bSYour Name 
622*5113495bSYour Name /**
623*5113495bSYour Name  * ucfg_wlan_dp_display_tx_rx_histogram() - display tx rx histogram
624*5113495bSYour Name  * @psoc: psoc handle
625*5113495bSYour Name  *
626*5113495bSYour Name  * Return: none
627*5113495bSYour Name  */
628*5113495bSYour Name void ucfg_wlan_dp_display_tx_rx_histogram(struct wlan_objmgr_psoc *psoc);
629*5113495bSYour Name 
630*5113495bSYour Name /**
631*5113495bSYour Name  * ucfg_wlan_dp_clear_tx_rx_histogram() - clear tx rx histogram
632*5113495bSYour Name  * @psoc: psoc handle
633*5113495bSYour Name  *
634*5113495bSYour Name  * Return: none
635*5113495bSYour Name  */
636*5113495bSYour Name void ucfg_wlan_dp_clear_tx_rx_histogram(struct wlan_objmgr_psoc *psoc);
637*5113495bSYour Name 
638*5113495bSYour Name /**
639*5113495bSYour Name  * ucfg_dp_set_high_bus_bw_request() - Set high bandwidth request.
640*5113495bSYour Name  * @psoc: psoc handle
641*5113495bSYour Name  * @vdev_id: vdev_id
642*5113495bSYour Name  * @high_bus_bw : High bus bandwidth requested
643*5113495bSYour Name  *
644*5113495bSYour Name  * Return: None.
645*5113495bSYour Name  */
646*5113495bSYour Name void
647*5113495bSYour Name ucfg_dp_set_high_bus_bw_request(struct wlan_objmgr_psoc *psoc,
648*5113495bSYour Name 				uint8_t vdev_id,
649*5113495bSYour Name 				bool high_bus_bw);
650*5113495bSYour Name 
651*5113495bSYour Name /**
652*5113495bSYour Name  * ucfg_dp_bus_bw_compute_timer_start() - start the bandwidth timer
653*5113495bSYour Name  * @psoc: psoc handle
654*5113495bSYour Name  *
655*5113495bSYour Name  * Return: None
656*5113495bSYour Name  */
657*5113495bSYour Name void ucfg_dp_bus_bw_compute_timer_start(struct wlan_objmgr_psoc *psoc);
658*5113495bSYour Name 
659*5113495bSYour Name /**
660*5113495bSYour Name  * ucfg_dp_bus_bw_compute_timer_try_start() - try to start the bandwidth timer
661*5113495bSYour Name  * @psoc: psoc handle
662*5113495bSYour Name  *
663*5113495bSYour Name  * This function ensures there is at least one intf in the associated state
664*5113495bSYour Name  * before starting the bandwidth timer.
665*5113495bSYour Name  *
666*5113495bSYour Name  * Return: None
667*5113495bSYour Name  */
668*5113495bSYour Name void ucfg_dp_bus_bw_compute_timer_try_start(struct wlan_objmgr_psoc *psoc);
669*5113495bSYour Name 
670*5113495bSYour Name /**
671*5113495bSYour Name  * ucfg_dp_bus_bw_compute_timer_stop() - stop the bandwidth timer
672*5113495bSYour Name  * @psoc: psoc handle
673*5113495bSYour Name  *
674*5113495bSYour Name  * Return: None
675*5113495bSYour Name  */
676*5113495bSYour Name void ucfg_dp_bus_bw_compute_timer_stop(struct wlan_objmgr_psoc *psoc);
677*5113495bSYour Name 
678*5113495bSYour Name /**
679*5113495bSYour Name  * ucfg_dp_bus_bw_compute_timer_try_stop() - try to stop the bandwidth timer
680*5113495bSYour Name  * @psoc: psoc handle
681*5113495bSYour Name  *
682*5113495bSYour Name  * This function ensures there are no interface in the associated state before
683*5113495bSYour Name  * stopping the bandwidth timer.
684*5113495bSYour Name  *
685*5113495bSYour Name  * Return: None
686*5113495bSYour Name  */
687*5113495bSYour Name void ucfg_dp_bus_bw_compute_timer_try_stop(struct wlan_objmgr_psoc *psoc);
688*5113495bSYour Name 
689*5113495bSYour Name /**
690*5113495bSYour Name  * ucfg_dp_bus_bw_compute_prev_txrx_stats() - get tx and rx stats
691*5113495bSYour Name  * @vdev: vdev handle
692*5113495bSYour Name  *
693*5113495bSYour Name  * This function get the collected tx and rx stats before starting
694*5113495bSYour Name  * the bus bandwidth timer.
695*5113495bSYour Name  *
696*5113495bSYour Name  * Return: None
697*5113495bSYour Name  */
698*5113495bSYour Name void ucfg_dp_bus_bw_compute_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
699*5113495bSYour Name 
700*5113495bSYour Name /**
701*5113495bSYour Name  * ucfg_dp_bus_bw_compute_reset_prev_txrx_stats() - reset previous txrx stats
702*5113495bSYour Name  * @vdev: vdev handle
703*5113495bSYour Name  *
704*5113495bSYour Name  * This function resets the adapter previous tx rx stats.
705*5113495bSYour Name  *
706*5113495bSYour Name  * Return: None
707*5113495bSYour Name  */
708*5113495bSYour Name void
709*5113495bSYour Name ucfg_dp_bus_bw_compute_reset_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
710*5113495bSYour Name 
711*5113495bSYour Name /**
712*5113495bSYour Name  * ucfg_dp_nud_set_gateway_addr() - set gateway mac address
713*5113495bSYour Name  * @vdev: vdev handle
714*5113495bSYour Name  * @gw_mac_addr: mac address to be set
715*5113495bSYour Name  *
716*5113495bSYour Name  * Return: none
717*5113495bSYour Name  */
718*5113495bSYour Name void ucfg_dp_nud_set_gateway_addr(struct wlan_objmgr_vdev *vdev,
719*5113495bSYour Name 				  struct qdf_mac_addr gw_mac_addr);
720*5113495bSYour Name 
721*5113495bSYour Name /**
722*5113495bSYour Name  * ucfg_dp_nud_event() - netevent callback
723*5113495bSYour Name  * @netdev_mac_addr: netdev MAC addr
724*5113495bSYour Name  * @gw_mac_addr: Gateway MAC address
725*5113495bSYour Name  * @nud_state : NUD State
726*5113495bSYour Name  *
727*5113495bSYour Name  * Return: None
728*5113495bSYour Name  */
729*5113495bSYour Name void ucfg_dp_nud_event(struct qdf_mac_addr *netdev_mac_addr,
730*5113495bSYour Name 		       struct qdf_mac_addr *gw_mac_addr,
731*5113495bSYour Name 		       uint8_t nud_state);
732*5113495bSYour Name 
733*5113495bSYour Name /**
734*5113495bSYour Name  * ucfg_dp_get_arp_stats_event_handler - ARP get stats event handler
735*5113495bSYour Name  *
736*5113495bSYour Name  * @psoc: PSOC Handle
737*5113495bSYour Name  * @rsp : response message
738*5113495bSYour Name  *
739*5113495bSYour Name  * Return : 0 on success else error code.
740*5113495bSYour Name  */
741*5113495bSYour Name 
742*5113495bSYour Name QDF_STATUS ucfg_dp_get_arp_stats_event_handler(struct wlan_objmgr_psoc *psoc,
743*5113495bSYour Name 					       struct dp_rsp_stats *rsp);
744*5113495bSYour Name 
745*5113495bSYour Name /**
746*5113495bSYour Name  * ucfg_dp_get_arp_request_ctx - Get ARP request context
747*5113495bSYour Name  *
748*5113495bSYour Name  * @psoc: PSOC Handle
749*5113495bSYour Name  *
750*5113495bSYour Name  * Return : ARP request context
751*5113495bSYour Name  */
752*5113495bSYour Name void *ucfg_dp_get_arp_request_ctx(struct wlan_objmgr_psoc *psoc);
753*5113495bSYour Name 
754*5113495bSYour Name /**
755*5113495bSYour Name  * ucfg_dp_nud_reset_tracking() - reset NUD tracking
756*5113495bSYour Name  * @vdev: vdev handle
757*5113495bSYour Name  *
758*5113495bSYour Name  * Return: None
759*5113495bSYour Name  */
760*5113495bSYour Name void ucfg_dp_nud_reset_tracking(struct wlan_objmgr_vdev *vdev);
761*5113495bSYour Name 
762*5113495bSYour Name /**
763*5113495bSYour Name  * ucfg_dp_nud_tracking_enabled - Check if NUD tracking is enabled
764*5113495bSYour Name  *
765*5113495bSYour Name  * @psoc: PSOC Handle
766*5113495bSYour Name  *
767*5113495bSYour Name  * Return : NUD tracking value.
768*5113495bSYour Name  */
769*5113495bSYour Name uint8_t ucfg_dp_nud_tracking_enabled(struct wlan_objmgr_psoc *psoc);
770*5113495bSYour Name 
771*5113495bSYour Name /**
772*5113495bSYour Name  * ucfg_dp_nud_indicate_roam() - reset NUD when roaming happens
773*5113495bSYour Name  * @vdev: vdev handle
774*5113495bSYour Name  *
775*5113495bSYour Name  * Return: None
776*5113495bSYour Name  */
777*5113495bSYour Name void ucfg_dp_nud_indicate_roam(struct wlan_objmgr_vdev *vdev);
778*5113495bSYour Name 
779*5113495bSYour Name /**
780*5113495bSYour Name  * ucfg_dp_clear_arp_stats() - Clear ARP Stats
781*5113495bSYour Name  * @vdev: vdev context
782*5113495bSYour Name  *
783*5113495bSYour Name  * Return: None
784*5113495bSYour Name  */
785*5113495bSYour Name void ucfg_dp_clear_arp_stats(struct wlan_objmgr_vdev *vdev);
786*5113495bSYour Name 
787*5113495bSYour Name /**
788*5113495bSYour Name  * ucfg_dp_clear_dns_stats() - Clear DNS Stats
789*5113495bSYour Name  * @vdev: vdev context
790*5113495bSYour Name  *
791*5113495bSYour Name  * Return: None
792*5113495bSYour Name  */
793*5113495bSYour Name void ucfg_dp_clear_dns_stats(struct wlan_objmgr_vdev *vdev);
794*5113495bSYour Name 
795*5113495bSYour Name /**
796*5113495bSYour Name  * ucfg_dp_clear_tcp_stats() - Clear TCP Stats
797*5113495bSYour Name  * @vdev: vdev context
798*5113495bSYour Name  *
799*5113495bSYour Name  * Return: None
800*5113495bSYour Name  */
801*5113495bSYour Name void ucfg_dp_clear_tcp_stats(struct wlan_objmgr_vdev *vdev);
802*5113495bSYour Name 
803*5113495bSYour Name /**
804*5113495bSYour Name  * ucfg_dp_clear_icmpv4_stats() - Clear ICMPv4 Stats
805*5113495bSYour Name  * @vdev: vdev context
806*5113495bSYour Name  *
807*5113495bSYour Name  * Return: None
808*5113495bSYour Name  */
809*5113495bSYour Name void ucfg_dp_clear_icmpv4_stats(struct wlan_objmgr_vdev *vdev);
810*5113495bSYour Name 
811*5113495bSYour Name /**
812*5113495bSYour Name  * ucfg_dp_clear_dns_payload_value() - Clear DNS payload value
813*5113495bSYour Name  * @vdev: vdev context
814*5113495bSYour Name  *
815*5113495bSYour Name  * Return: None
816*5113495bSYour Name  */
817*5113495bSYour Name void ucfg_dp_clear_dns_payload_value(struct wlan_objmgr_vdev *vdev);
818*5113495bSYour Name 
819*5113495bSYour Name /**
820*5113495bSYour Name  * ucfg_dp_set_pkt_type_bitmap_value() - Set Packet type bitmap value
821*5113495bSYour Name  * @vdev: vdev context
822*5113495bSYour Name  * @value: bitmap value
823*5113495bSYour Name  *
824*5113495bSYour Name  * Return: None
825*5113495bSYour Name  */
826*5113495bSYour Name void ucfg_dp_set_pkt_type_bitmap_value(struct wlan_objmgr_vdev *vdev,
827*5113495bSYour Name 				       uint32_t value);
828*5113495bSYour Name 
829*5113495bSYour Name /**
830*5113495bSYour Name  * ucfg_dp_intf_get_pkt_type_bitmap_value() - Get packt type bitmap info
831*5113495bSYour Name  * @intf_ctx: DP interface context
832*5113495bSYour Name  *
833*5113495bSYour Name  * Return: bitmap information
834*5113495bSYour Name  */
835*5113495bSYour Name uint32_t ucfg_dp_intf_get_pkt_type_bitmap_value(void *intf_ctx);
836*5113495bSYour Name 
837*5113495bSYour Name /**
838*5113495bSYour Name  * ucfg_dp_set_track_dest_ipv4_value() - Set track_dest_ipv4 value
839*5113495bSYour Name  * @vdev: vdev context
840*5113495bSYour Name  * @value: dest ipv4 value
841*5113495bSYour Name  *
842*5113495bSYour Name  * Return: None
843*5113495bSYour Name  */
844*5113495bSYour Name void ucfg_dp_set_track_dest_ipv4_value(struct wlan_objmgr_vdev *vdev,
845*5113495bSYour Name 				       uint32_t value);
846*5113495bSYour Name 
847*5113495bSYour Name /**
848*5113495bSYour Name  * ucfg_dp_set_track_dest_port_value() - Set track_dest_port value
849*5113495bSYour Name  * @vdev: vdev context
850*5113495bSYour Name  * @value: dest port value
851*5113495bSYour Name  *
852*5113495bSYour Name  * Return: None
853*5113495bSYour Name  */
854*5113495bSYour Name void ucfg_dp_set_track_dest_port_value(struct wlan_objmgr_vdev *vdev,
855*5113495bSYour Name 				       uint32_t value);
856*5113495bSYour Name 
857*5113495bSYour Name /**
858*5113495bSYour Name  * ucfg_dp_set_track_src_port_value() - Set track_dest_port value
859*5113495bSYour Name  * @vdev: vdev context
860*5113495bSYour Name  * @value: src port value
861*5113495bSYour Name  *
862*5113495bSYour Name  * Return: None
863*5113495bSYour Name  */
864*5113495bSYour Name void ucfg_dp_set_track_src_port_value(struct wlan_objmgr_vdev *vdev,
865*5113495bSYour Name 				      uint32_t value);
866*5113495bSYour Name 
867*5113495bSYour Name /**
868*5113495bSYour Name  * ucfg_dp_set_track_dns_domain_len_value() - Set track_dns_domain_len value
869*5113495bSYour Name  * @vdev: vdev context
870*5113495bSYour Name  * @value: dns domain len value
871*5113495bSYour Name  *
872*5113495bSYour Name  * Return: None
873*5113495bSYour Name  */
874*5113495bSYour Name void ucfg_dp_set_track_dns_domain_len_value(struct wlan_objmgr_vdev *vdev,
875*5113495bSYour Name 					    uint32_t value);
876*5113495bSYour Name 
877*5113495bSYour Name /**
878*5113495bSYour Name  * ucfg_dp_set_track_arp_ip_value() - Set track_arp_ip value
879*5113495bSYour Name  * @vdev: vdev context
880*5113495bSYour Name  * @value: ARP IP value
881*5113495bSYour Name  *
882*5113495bSYour Name  * Return: None
883*5113495bSYour Name  */
884*5113495bSYour Name void ucfg_dp_set_track_arp_ip_value(struct wlan_objmgr_vdev *vdev,
885*5113495bSYour Name 				    uint32_t value);
886*5113495bSYour Name 
887*5113495bSYour Name /**
888*5113495bSYour Name  * ucfg_dp_get_pkt_type_bitmap_value() - Get pkt_type_bitmap value
889*5113495bSYour Name  * @vdev: vdev context
890*5113495bSYour Name  *
891*5113495bSYour Name  * Return: pkt_type_bitmap value
892*5113495bSYour Name  */
893*5113495bSYour Name uint32_t ucfg_dp_get_pkt_type_bitmap_value(struct wlan_objmgr_vdev *vdev);
894*5113495bSYour Name 
895*5113495bSYour Name /**
896*5113495bSYour Name  * ucfg_dp_get_dns_payload_value() - Get dns_payload value
897*5113495bSYour Name  * @vdev: vdev context
898*5113495bSYour Name  * @dns_query : DNS query pointer
899*5113495bSYour Name  *
900*5113495bSYour Name  * Return: None
901*5113495bSYour Name  */
902*5113495bSYour Name void ucfg_dp_get_dns_payload_value(struct wlan_objmgr_vdev *vdev,
903*5113495bSYour Name 				   uint8_t *dns_query);
904*5113495bSYour Name 
905*5113495bSYour Name /**
906*5113495bSYour Name  * ucfg_dp_get_track_dns_domain_len_value() - Get track_dns_domain_len value
907*5113495bSYour Name  * @vdev: vdev context
908*5113495bSYour Name  *
909*5113495bSYour Name  * Return: track_dns_domain_len value
910*5113495bSYour Name  */
911*5113495bSYour Name uint32_t ucfg_dp_get_track_dns_domain_len_value(struct wlan_objmgr_vdev *vdev);
912*5113495bSYour Name 
913*5113495bSYour Name /**
914*5113495bSYour Name  * ucfg_dp_get_track_dest_port_value() - Get track_dest_port value
915*5113495bSYour Name  * @vdev: vdev context
916*5113495bSYour Name  *
917*5113495bSYour Name  * Return: track_dest_port value
918*5113495bSYour Name  */
919*5113495bSYour Name uint32_t ucfg_dp_get_track_dest_port_value(struct wlan_objmgr_vdev *vdev);
920*5113495bSYour Name 
921*5113495bSYour Name /**
922*5113495bSYour Name  * ucfg_dp_get_track_src_port_value() - Get track_src_port value
923*5113495bSYour Name  * @vdev: vdev context
924*5113495bSYour Name  *
925*5113495bSYour Name  * Return: track_src_port value
926*5113495bSYour Name  */
927*5113495bSYour Name uint32_t ucfg_dp_get_track_src_port_value(struct wlan_objmgr_vdev *vdev);
928*5113495bSYour Name 
929*5113495bSYour Name /**
930*5113495bSYour Name  * ucfg_dp_get_track_dest_ipv4_value() - Get track_dest_ipv4 value
931*5113495bSYour Name  * @vdev: vdev context
932*5113495bSYour Name  *
933*5113495bSYour Name  * Return: track_dest_ipv4 value
934*5113495bSYour Name  */
935*5113495bSYour Name uint32_t ucfg_dp_get_track_dest_ipv4_value(struct wlan_objmgr_vdev *vdev);
936*5113495bSYour Name 
937*5113495bSYour Name /**
938*5113495bSYour Name  * ucfg_dp_get_dad_value() - Get dad value
939*5113495bSYour Name  * @vdev: vdev context
940*5113495bSYour Name  *
941*5113495bSYour Name  * Return: dad value
942*5113495bSYour Name  */
943*5113495bSYour Name bool ucfg_dp_get_dad_value(struct wlan_objmgr_vdev *vdev);
944*5113495bSYour Name 
945*5113495bSYour Name /**
946*5113495bSYour Name  * ucfg_dp_get_con_status_value() - Get con_status value
947*5113495bSYour Name  * @vdev: vdev context
948*5113495bSYour Name  *
949*5113495bSYour Name  * Return: con_status value
950*5113495bSYour Name  */
951*5113495bSYour Name bool ucfg_dp_get_con_status_value(struct wlan_objmgr_vdev *vdev);
952*5113495bSYour Name 
953*5113495bSYour Name /**
954*5113495bSYour Name  * ucfg_dp_get_link_id() - Get link_id
955*5113495bSYour Name  * @vdev: vdev context
956*5113495bSYour Name  *
957*5113495bSYour Name  * Return: link_id
958*5113495bSYour Name  */
959*5113495bSYour Name uint8_t ucfg_dp_get_link_id(struct wlan_objmgr_vdev *vdev);
960*5113495bSYour Name 
961*5113495bSYour Name /**
962*5113495bSYour Name  * ucfg_dp_get_arp_stats() - Get ARP stats
963*5113495bSYour Name  * @vdev: vdev context
964*5113495bSYour Name  *
965*5113495bSYour Name  * Return: ARP Stats
966*5113495bSYour Name  */
967*5113495bSYour Name struct dp_arp_stats *ucfg_dp_get_arp_stats(struct wlan_objmgr_vdev *vdev);
968*5113495bSYour Name 
969*5113495bSYour Name /**
970*5113495bSYour Name  * ucfg_dp_get_icmpv4_stats() - Get ICMPv4 stats
971*5113495bSYour Name  * @vdev: vdev context
972*5113495bSYour Name  *
973*5113495bSYour Name  * Return: ICMPv4 Stats
974*5113495bSYour Name  */
975*5113495bSYour Name struct dp_icmpv4_stats
976*5113495bSYour Name *ucfg_dp_get_icmpv4_stats(struct wlan_objmgr_vdev *vdev);
977*5113495bSYour Name 
978*5113495bSYour Name /**
979*5113495bSYour Name  * ucfg_dp_get_tcp_stats() - Get TCP stats
980*5113495bSYour Name  * @vdev: vdev context
981*5113495bSYour Name  *
982*5113495bSYour Name  * Return: TCP Stats
983*5113495bSYour Name  */
984*5113495bSYour Name struct dp_tcp_stats *ucfg_dp_get_tcp_stats(struct wlan_objmgr_vdev *vdev);
985*5113495bSYour Name 
986*5113495bSYour Name /**
987*5113495bSYour Name  * ucfg_dp_get_dns_stats() - Get DNS stats
988*5113495bSYour Name  * @vdev: vdev context
989*5113495bSYour Name  *
990*5113495bSYour Name  * Return: DNS Stats
991*5113495bSYour Name  */
992*5113495bSYour Name struct dp_dns_stats *ucfg_dp_get_dns_stats(struct wlan_objmgr_vdev *vdev);
993*5113495bSYour Name 
994*5113495bSYour Name /**
995*5113495bSYour Name  * ucfg_dp_set_nud_stats_cb() - Register callback with WMI
996*5113495bSYour Name  * @psoc: psoc context
997*5113495bSYour Name  * @cookie: callback context
998*5113495bSYour Name  *
999*5113495bSYour Name  * Return: None
1000*5113495bSYour Name  */
1001*5113495bSYour Name 
1002*5113495bSYour Name void ucfg_dp_set_nud_stats_cb(struct wlan_objmgr_psoc *psoc, void *cookie);
1003*5113495bSYour Name 
1004*5113495bSYour Name /**
1005*5113495bSYour Name  * ucfg_dp_clear_nud_stats_cb() - Unregister callback with WMI
1006*5113495bSYour Name  * @psoc: psoc context
1007*5113495bSYour Name  *
1008*5113495bSYour Name  * Return: None
1009*5113495bSYour Name  */
1010*5113495bSYour Name void ucfg_dp_clear_nud_stats_cb(struct wlan_objmgr_psoc *psoc);
1011*5113495bSYour Name 
1012*5113495bSYour Name /**
1013*5113495bSYour Name  * ucfg_dp_set_dump_dp_trace() - set DP Trace
1014*5113495bSYour Name  * @cmd_type : command
1015*5113495bSYour Name  * @count : Number of lines to dump
1016*5113495bSYour Name  *
1017*5113495bSYour Name  * Return: None
1018*5113495bSYour Name  */
1019*5113495bSYour Name void ucfg_dp_set_dump_dp_trace(uint16_t cmd_type, uint16_t count);
1020*5113495bSYour Name 
1021*5113495bSYour Name /**
1022*5113495bSYour Name  * ucfg_dp_req_get_arp_stats() - Send Get ARP set request to FW
1023*5113495bSYour Name  * @psoc: psoc context
1024*5113495bSYour Name  * @params : Get ARP stats param
1025*5113495bSYour Name  *
1026*5113495bSYour Name  * Return: Status
1027*5113495bSYour Name  */
1028*5113495bSYour Name QDF_STATUS
1029*5113495bSYour Name ucfg_dp_req_get_arp_stats(struct wlan_objmgr_psoc *psoc,
1030*5113495bSYour Name 			  struct dp_get_arp_stats_params *params);
1031*5113495bSYour Name 
1032*5113495bSYour Name /**
1033*5113495bSYour Name  * ucfg_dp_req_set_arp_stats() - Send Set ARP set request to FW
1034*5113495bSYour Name  * @psoc: psoc context
1035*5113495bSYour Name  * @params : Set ARP stats param
1036*5113495bSYour Name  *
1037*5113495bSYour Name  * Return: Status
1038*5113495bSYour Name  */
1039*5113495bSYour Name QDF_STATUS
1040*5113495bSYour Name ucfg_dp_req_set_arp_stats(struct wlan_objmgr_psoc *psoc,
1041*5113495bSYour Name 			  struct dp_set_arp_stats_params *params);
1042*5113495bSYour Name 
1043*5113495bSYour Name /**
1044*5113495bSYour Name  * ucfg_dp_register_hdd_callbacks() - Resiter HDD callbacks with DP component
1045*5113495bSYour Name  * @psoc: psoc handle
1046*5113495bSYour Name  * @cb_obj: Callback object
1047*5113495bSYour Name  *
1048*5113495bSYour Name  * Returns: None
1049*5113495bSYour Name  */
1050*5113495bSYour Name void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
1051*5113495bSYour Name 				    struct wlan_dp_psoc_callbacks *cb_obj);
1052*5113495bSYour Name 
1053*5113495bSYour Name /**
1054*5113495bSYour Name  * ucfg_dp_register_event_handler() - Resiter event handler with DP component
1055*5113495bSYour Name  * @psoc: psoc handle
1056*5113495bSYour Name  * @cb_obj: Callback object
1057*5113495bSYour Name  *
1058*5113495bSYour Name  * Returns: None
1059*5113495bSYour Name  */
1060*5113495bSYour Name void ucfg_dp_register_event_handler(struct wlan_objmgr_psoc *psoc,
1061*5113495bSYour Name 				    struct wlan_dp_psoc_nb_ops *cb_obj);
1062*5113495bSYour Name 
1063*5113495bSYour Name /**
1064*5113495bSYour Name  * ucfg_dp_get_bus_bw_compute_interval() - Get bus bandwidth compute interval
1065*5113495bSYour Name  * @psoc: psoc handle
1066*5113495bSYour Name  *
1067*5113495bSYour Name  * Returns: Bus bandwidth compute interval
1068*5113495bSYour Name  */
1069*5113495bSYour Name uint32_t ucfg_dp_get_bus_bw_compute_interval(struct wlan_objmgr_psoc *psoc);
1070*5113495bSYour Name 
1071*5113495bSYour Name /**
1072*5113495bSYour Name  * ucfg_dp_get_current_throughput_level() - get current bandwidth level
1073*5113495bSYour Name  * @psoc: psoc handle
1074*5113495bSYour Name  *
1075*5113495bSYour Name  * Return: current bandwidth level
1076*5113495bSYour Name  */
1077*5113495bSYour Name int ucfg_dp_get_current_throughput_level(struct wlan_objmgr_psoc *psoc);
1078*5113495bSYour Name 
1079*5113495bSYour Name /**
1080*5113495bSYour Name  * ucfg_dp_get_txrx_stats() - get dp txrx stats
1081*5113495bSYour Name  * @vdev: vdev handle
1082*5113495bSYour Name  * @dp_stats : dp_stats pointer
1083*5113495bSYour Name  *
1084*5113495bSYour Name  * This function update dp_stats pointer with DP component
1085*5113495bSYour Name  * txrx stats
1086*5113495bSYour Name  * Return: 0 on success
1087*5113495bSYour Name  */
1088*5113495bSYour Name QDF_STATUS ucfg_dp_get_txrx_stats(struct wlan_objmgr_vdev *vdev,
1089*5113495bSYour Name 				  struct dp_tx_rx_stats *dp_stats);
1090*5113495bSYour Name 
1091*5113495bSYour Name /*
1092*5113495bSYour Name  * ucfg_dp_get_net_dev_stats(): Get netdev stats
1093*5113495bSYour Name  * @vdev: vdev handle
1094*5113495bSYour Name  * @stats: To hold netdev stats
1095*5113495bSYour Name  *
1096*5113495bSYour Name  * Return: None
1097*5113495bSYour Name  */
1098*5113495bSYour Name void ucfg_dp_get_net_dev_stats(struct wlan_objmgr_vdev *vdev,
1099*5113495bSYour Name 			       qdf_net_dev_stats *stats);
1100*5113495bSYour Name 
1101*5113495bSYour Name /*
1102*5113495bSYour Name  * ucfg_dp_clear_net_dev_stats(): Clear netdev stats
1103*5113495bSYour Name  * @dev: Pointer to netdev
1104*5113495bSYour Name  *
1105*5113495bSYour Name  * Return: None
1106*5113495bSYour Name  */
1107*5113495bSYour Name void ucfg_dp_clear_net_dev_stats(qdf_netdev_t dev);
1108*5113495bSYour Name 
1109*5113495bSYour Name /**
1110*5113495bSYour Name  * ucfg_dp_reset_cont_txtimeout_cnt() - Reset Tx Timeout count
1111*5113495bSYour Name  * @vdev: vdev handle
1112*5113495bSYour Name  *
1113*5113495bSYour Name  * Return: None
1114*5113495bSYour Name  */
1115*5113495bSYour Name void ucfg_dp_reset_cont_txtimeout_cnt(struct wlan_objmgr_vdev *vdev);
1116*5113495bSYour Name 
1117*5113495bSYour Name /**
1118*5113495bSYour Name  * ucfg_dp_set_rx_thread_affinity() - Set rx thread affinity mask
1119*5113495bSYour Name  * @psoc: psoc handle
1120*5113495bSYour Name  *
1121*5113495bSYour Name  * Return: None
1122*5113495bSYour Name  */
1123*5113495bSYour Name void ucfg_dp_set_rx_thread_affinity(struct wlan_objmgr_psoc *psoc);
1124*5113495bSYour Name 
1125*5113495bSYour Name /**
1126*5113495bSYour Name  * ucfg_dp_get_disable_rx_ol_val() - Get Rx OL concurrency value
1127*5113495bSYour Name  * @psoc: psoc handle
1128*5113495bSYour Name  * @disable_conc : disable rx OL concurrency value
1129*5113495bSYour Name  * @disable_low_tput : disable rx OL low tput value
1130*5113495bSYour Name  *
1131*5113495bSYour Name  * this function reads and update value in pointer variable
1132*5113495bSYour Name  * passed as arguments to function.
1133*5113495bSYour Name  *
1134*5113495bSYour Name  * Return: None
1135*5113495bSYour Name  */
1136*5113495bSYour Name 
1137*5113495bSYour Name void ucfg_dp_get_disable_rx_ol_val(struct wlan_objmgr_psoc *psoc,
1138*5113495bSYour Name 				   uint8_t *disable_conc,
1139*5113495bSYour Name 				   uint8_t *disable_low_tput);
1140*5113495bSYour Name 
1141*5113495bSYour Name /**
1142*5113495bSYour Name  * ucfg_dp_get_rx_aggregation_val() - Get Rx aggregation values
1143*5113495bSYour Name  * @psoc: psoc handle
1144*5113495bSYour Name  *
1145*5113495bSYour Name  * Return: Rx aggregation value
1146*5113495bSYour Name  */
1147*5113495bSYour Name uint32_t ucfg_dp_get_rx_aggregation_val(struct wlan_objmgr_psoc *psoc);
1148*5113495bSYour Name 
1149*5113495bSYour Name /**
1150*5113495bSYour Name  * ucfg_dp_set_rx_aggregation_val() - Set rx aggregation value
1151*5113495bSYour Name  * @psoc: psoc handle
1152*5113495bSYour Name  * @value : value to be set
1153*5113495bSYour Name  *
1154*5113495bSYour Name  * Return: None
1155*5113495bSYour Name  */
1156*5113495bSYour Name void ucfg_dp_set_rx_aggregation_val(struct wlan_objmgr_psoc *psoc,
1157*5113495bSYour Name 				    uint32_t value);
1158*5113495bSYour Name 
1159*5113495bSYour Name /**
1160*5113495bSYour Name  * ucfg_dp_set_tc_based_dyn_gro() - Set tc based dynamic gro
1161*5113495bSYour Name  * @psoc: psoc handle
1162*5113495bSYour Name  * @value : value to be set
1163*5113495bSYour Name  *
1164*5113495bSYour Name  * Return: None
1165*5113495bSYour Name  */
1166*5113495bSYour Name void ucfg_dp_set_tc_based_dyn_gro(struct wlan_objmgr_psoc *psoc, bool value);
1167*5113495bSYour Name 
1168*5113495bSYour Name /**
1169*5113495bSYour Name  * ucfg_dp_runtime_disable_rx_thread() - Disable rx thread
1170*5113495bSYour Name  * @vdev: vdev handle
1171*5113495bSYour Name  * @value : value to be set (true/false)
1172*5113495bSYour Name  *
1173*5113495bSYour Name  * Return: None
1174*5113495bSYour Name  */
1175*5113495bSYour Name void ucfg_dp_runtime_disable_rx_thread(struct wlan_objmgr_vdev *vdev,
1176*5113495bSYour Name 				       bool value);
1177*5113495bSYour Name 
1178*5113495bSYour Name /**
1179*5113495bSYour Name  * ucfg_dp_get_napi_enabled() - Get NAPI enabled/disabled info
1180*5113495bSYour Name  * @psoc: psoc handle mapped to DP context
1181*5113495bSYour Name  *
1182*5113495bSYour Name  * Return: true if NAPI enabled
1183*5113495bSYour Name  */
1184*5113495bSYour Name bool ucfg_dp_get_napi_enabled(struct wlan_objmgr_psoc *psoc);
1185*5113495bSYour Name 
1186*5113495bSYour Name /**
1187*5113495bSYour Name  * ucfg_dp_set_tc_ingress_prio() - Set tc ingress priority
1188*5113495bSYour Name  * @psoc: psoc handle mapped to DP context
1189*5113495bSYour Name  * @value: value to be set
1190*5113495bSYour Name  *
1191*5113495bSYour Name  * Return: None
1192*5113495bSYour Name  */
1193*5113495bSYour Name void ucfg_dp_set_tc_ingress_prio(struct wlan_objmgr_psoc *psoc, uint32_t value);
1194*5113495bSYour Name 
1195*5113495bSYour Name /**
1196*5113495bSYour Name  * ucfg_dp_nud_fail_data_stall_evt_enabled() - Check if NUD failuire data stall
1197*5113495bSYour Name  * detection is enabled
1198*5113495bSYour Name  *
1199*5113495bSYour Name  * Return: True if the data stall event is enabled
1200*5113495bSYour Name  */
1201*5113495bSYour Name bool ucfg_dp_nud_fail_data_stall_evt_enabled(void);
1202*5113495bSYour Name 
1203*5113495bSYour Name /**
1204*5113495bSYour Name  * ucfg_dp_fw_data_stall_evt_enabled() - Check if Fw data stall
1205*5113495bSYour Name  * detection is enabled
1206*5113495bSYour Name  *
1207*5113495bSYour Name  * Return: data stall event mask
1208*5113495bSYour Name  */
1209*5113495bSYour Name uint32_t ucfg_dp_fw_data_stall_evt_enabled(void);
1210*5113495bSYour Name 
1211*5113495bSYour Name /**
1212*5113495bSYour Name  * ucfg_dp_get_bus_bw_high_threshold() - Get the bus bw high threshold
1213*5113495bSYour Name  * @psoc: psoc handle
1214*5113495bSYour Name  *
1215*5113495bSYour Name  * Return: current bus bw high threshold
1216*5113495bSYour Name  */
1217*5113495bSYour Name uint32_t ucfg_dp_get_bus_bw_high_threshold(struct wlan_objmgr_psoc *psoc);
1218*5113495bSYour Name 
1219*5113495bSYour Name /**
1220*5113495bSYour Name  * ucfg_dp_event_eapol_log() - send event to wlan diag
1221*5113495bSYour Name  * @nbuf: Network buffer ptr
1222*5113495bSYour Name  * @dir: direction
1223*5113495bSYour Name  *
1224*5113495bSYour Name  * Return: None
1225*5113495bSYour Name  */
1226*5113495bSYour Name void ucfg_dp_event_eapol_log(qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
1227*5113495bSYour Name 
1228*5113495bSYour Name /**
1229*5113495bSYour Name  * ucfg_dp_softap_inspect_dhcp_packet() - Inspect DHCP packet
1230*5113495bSYour Name  * @vdev: Vdev handle
1231*5113495bSYour Name  * @nbuf: pointer to network buffer
1232*5113495bSYour Name  * @dir: direction
1233*5113495bSYour Name  *
1234*5113495bSYour Name  * Inspect the Tx/Rx frame, and send DHCP START/STOP notification to the FW
1235*5113495bSYour Name  * through WMI message, during DHCP based IP address acquisition phase.
1236*5113495bSYour Name  *
1237*5113495bSYour Name  * Return: error number
1238*5113495bSYour Name  */
1239*5113495bSYour Name QDF_STATUS
1240*5113495bSYour Name ucfg_dp_softap_inspect_dhcp_packet(struct wlan_objmgr_vdev *vdev,
1241*5113495bSYour Name 				   qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
1242*5113495bSYour Name 
1243*5113495bSYour Name void
1244*5113495bSYour Name dp_ucfg_enable_link_monitoring(struct wlan_objmgr_psoc *psoc,
1245*5113495bSYour Name 			       struct wlan_objmgr_vdev *vdev,
1246*5113495bSYour Name 			       uint32_t threshold);
1247*5113495bSYour Name 
1248*5113495bSYour Name void
1249*5113495bSYour Name dp_ucfg_disable_link_monitoring(struct wlan_objmgr_psoc *psoc,
1250*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev);
1251*5113495bSYour Name 
1252*5113495bSYour Name #if defined(WLAN_SUPPORT_RX_FISA)
1253*5113495bSYour Name /**
1254*5113495bSYour Name  * ucfg_dp_rx_skip_fisa() - Set flags to skip fisa aggregation
1255*5113495bSYour Name  * @value: allow or skip fisa
1256*5113495bSYour Name  *
1257*5113495bSYour Name  * Return: None
1258*5113495bSYour Name  */
1259*5113495bSYour Name void ucfg_dp_rx_skip_fisa(uint32_t value);
1260*5113495bSYour Name 
1261*5113495bSYour Name #else
1262*5113495bSYour Name static inline
ucfg_dp_rx_skip_fisa(uint32_t value)1263*5113495bSYour Name void ucfg_dp_rx_skip_fisa(uint32_t value)
1264*5113495bSYour Name {
1265*5113495bSYour Name }
1266*5113495bSYour Name #endif
1267*5113495bSYour Name 
1268*5113495bSYour Name #ifdef DP_TRAFFIC_END_INDICATION
1269*5113495bSYour Name /**
1270*5113495bSYour Name  * ucfg_dp_traffic_end_indication_get() - Get data end indication info
1271*5113495bSYour Name  * @vdev: vdev handle
1272*5113495bSYour Name  * @info: variable to hold stored data end indication info
1273*5113495bSYour Name  *
1274*5113495bSYour Name  * Return: QDF_STATUS
1275*5113495bSYour Name  */
1276*5113495bSYour Name QDF_STATUS
1277*5113495bSYour Name ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev *vdev,
1278*5113495bSYour Name 				   struct dp_traffic_end_indication *info);
1279*5113495bSYour Name /**
1280*5113495bSYour Name  * ucfg_dp_traffic_end_indication_set() - Store data end indication info
1281*5113495bSYour Name  * @vdev: vdev handle
1282*5113495bSYour Name  * @info: variable holding new data end indication info
1283*5113495bSYour Name  *
1284*5113495bSYour Name  * Return: QDF_STATUS
1285*5113495bSYour Name  */
1286*5113495bSYour Name QDF_STATUS
1287*5113495bSYour Name ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev *vdev,
1288*5113495bSYour Name 				   struct dp_traffic_end_indication info);
1289*5113495bSYour Name /**
1290*5113495bSYour Name  * ucfg_dp_traffic_end_indication_update_dscp() - update dscp value to default
1291*5113495bSYour Name  * @psoc: psoc handle
1292*5113495bSYour Name  * @vdev_id: vdev id
1293*5113495bSYour Name  * @dscp: dscp value to be updated
1294*5113495bSYour Name  *
1295*5113495bSYour Name  * Return: void
1296*5113495bSYour Name  */
1297*5113495bSYour Name void
1298*5113495bSYour Name ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc *psoc,
1299*5113495bSYour Name 					   uint8_t vdev_id,
1300*5113495bSYour Name 					   unsigned char *dscp);
1301*5113495bSYour Name #else
1302*5113495bSYour Name static inline QDF_STATUS
ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev * vdev,struct dp_traffic_end_indication * info)1303*5113495bSYour Name ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev *vdev,
1304*5113495bSYour Name 				   struct dp_traffic_end_indication *info)
1305*5113495bSYour Name {
1306*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1307*5113495bSYour Name }
1308*5113495bSYour Name 
1309*5113495bSYour Name static inline QDF_STATUS
ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev * vdev,struct dp_traffic_end_indication info)1310*5113495bSYour Name ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev *vdev,
1311*5113495bSYour Name 				   struct dp_traffic_end_indication info)
1312*5113495bSYour Name {
1313*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1314*5113495bSYour Name }
1315*5113495bSYour Name 
1316*5113495bSYour Name static inline void
ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,unsigned char * dscp)1317*5113495bSYour Name ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc *psoc,
1318*5113495bSYour Name 					   uint8_t vdev_id,
1319*5113495bSYour Name 					   unsigned char *dscp)
1320*5113495bSYour Name {}
1321*5113495bSYour Name #endif
1322*5113495bSYour Name 
1323*5113495bSYour Name /*
1324*5113495bSYour Name  * ucfg_dp_prealloc_init() - Pre-allocate DP memory
1325*5113495bSYour Name  * @ctrl_psoc: objmgr psoc
1326*5113495bSYour Name  *
1327*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1328*5113495bSYour Name  */
1329*5113495bSYour Name QDF_STATUS ucfg_dp_prealloc_init(struct cdp_ctrl_objmgr_psoc *ctrl_psoc);
1330*5113495bSYour Name 
1331*5113495bSYour Name /*
1332*5113495bSYour Name  * ucfg_dp_prealloc_deinit() - Free pre-alloced DP memory
1333*5113495bSYour Name  *
1334*5113495bSYour Name  * Return: None
1335*5113495bSYour Name  */
1336*5113495bSYour Name void ucfg_dp_prealloc_deinit(void);
1337*5113495bSYour Name 
1338*5113495bSYour Name #ifdef DP_MEM_PRE_ALLOC
1339*5113495bSYour Name /**
1340*5113495bSYour Name  * ucfg_dp_prealloc_get_consistent_mem_unaligned() - gets pre-alloc unaligned
1341*5113495bSYour Name  *						     consistent memory
1342*5113495bSYour Name  * @size: total memory size
1343*5113495bSYour Name  * @base_addr: pointer to dma address
1344*5113495bSYour Name  * @ring_type: HAL ring type that requires memory
1345*5113495bSYour Name  *
1346*5113495bSYour Name  * Return: memory virtual address pointer on success, NULL on failure
1347*5113495bSYour Name  */
1348*5113495bSYour Name void *ucfg_dp_prealloc_get_consistent_mem_unaligned(qdf_size_t size,
1349*5113495bSYour Name 						    qdf_dma_addr_t *base_addr,
1350*5113495bSYour Name 						    uint32_t ring_type);
1351*5113495bSYour Name 
1352*5113495bSYour Name /**
1353*5113495bSYour Name  * ucfg_dp_prealloc_put_consistent_mem_unaligned() - puts back pre-alloc
1354*5113495bSYour Name  * unaligned consistent memory
1355*5113495bSYour Name  * @va_unaligned: memory virtual address pointer
1356*5113495bSYour Name  *
1357*5113495bSYour Name  * Return: None
1358*5113495bSYour Name  */
1359*5113495bSYour Name void ucfg_dp_prealloc_put_consistent_mem_unaligned(void *va_unaligned);
1360*5113495bSYour Name 
1361*5113495bSYour Name /**
1362*5113495bSYour Name  * ucfg_dp_prealloc_get_multi_pages() - gets pre-alloc DP multi-pages memory
1363*5113495bSYour Name  * @desc_type: descriptor type
1364*5113495bSYour Name  * @elem_size: single element size
1365*5113495bSYour Name  * @elem_num: total number of elements should be allocated
1366*5113495bSYour Name  * @pages: multi page information storage
1367*5113495bSYour Name  * @cacheable: coherent memory or cacheable memory
1368*5113495bSYour Name  *
1369*5113495bSYour Name  * Return: None
1370*5113495bSYour Name  */
1371*5113495bSYour Name void ucfg_dp_prealloc_get_multi_pages(uint32_t desc_type, qdf_size_t elem_size,
1372*5113495bSYour Name 				      uint16_t elem_num,
1373*5113495bSYour Name 				      struct qdf_mem_multi_page_t *pages,
1374*5113495bSYour Name 				      bool cacheable);
1375*5113495bSYour Name 
1376*5113495bSYour Name /**
1377*5113495bSYour Name  * ucfg_dp_prealloc_put_multi_pages() - puts back pre-alloc DP multi-pages
1378*5113495bSYour Name  *  memory
1379*5113495bSYour Name  * @desc_type: descriptor type
1380*5113495bSYour Name  * @pages: multi page information storage
1381*5113495bSYour Name  *
1382*5113495bSYour Name  * Return: None
1383*5113495bSYour Name  */
1384*5113495bSYour Name void ucfg_dp_prealloc_put_multi_pages(uint32_t desc_type,
1385*5113495bSYour Name 				      struct qdf_mem_multi_page_t *pages);
1386*5113495bSYour Name #endif
1387*5113495bSYour Name 
1388*5113495bSYour Name #ifdef FEATURE_DIRECT_LINK
1389*5113495bSYour Name /**
1390*5113495bSYour Name  * ucfg_dp_direct_link_init() - Initializes Direct Link datapath
1391*5113495bSYour Name  * @psoc: psoc handle
1392*5113495bSYour Name  *
1393*5113495bSYour Name  * Return: QDF status
1394*5113495bSYour Name  */
1395*5113495bSYour Name QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc);
1396*5113495bSYour Name 
1397*5113495bSYour Name /**
1398*5113495bSYour Name  * ucfg_dp_direct_link_deinit() - De-initializes Direct Link datapath
1399*5113495bSYour Name  * @psoc: psoc handle
1400*5113495bSYour Name  * @is_ssr: true if SSR is in progress else false
1401*5113495bSYour Name  *
1402*5113495bSYour Name  * Return: None
1403*5113495bSYour Name  */
1404*5113495bSYour Name void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr);
1405*5113495bSYour Name 
1406*5113495bSYour Name /**
1407*5113495bSYour Name  * ucfg_dp_wfds_handle_request_mem_ind() - Process request memory indication
1408*5113495bSYour Name  *  received from QMI server
1409*5113495bSYour Name  * @mem_msg: pointer to memory request indication message
1410*5113495bSYour Name  *
1411*5113495bSYour Name  * Return: None
1412*5113495bSYour Name  */
1413*5113495bSYour Name void
1414*5113495bSYour Name ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg *mem_msg);
1415*5113495bSYour Name 
1416*5113495bSYour Name /**
1417*5113495bSYour Name  * ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind() - Process IPCC map and configure
1418*5113495bSYour Name  *  indication received from QMI server
1419*5113495bSYour Name  * @ipcc_msg: pointer to IPCC map and configure indication message
1420*5113495bSYour Name  *
1421*5113495bSYour Name  * Return: None
1422*5113495bSYour Name  */
1423*5113495bSYour Name void
1424*5113495bSYour Name ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg *ipcc_msg);
1425*5113495bSYour Name 
1426*5113495bSYour Name /**
1427*5113495bSYour Name  * ucfg_dp_wfds_new_server() - New server callback triggered when service is up.
1428*5113495bSYour Name  *  Connect to the service as part of this call.
1429*5113495bSYour Name  *
1430*5113495bSYour Name  * Return: QDF status
1431*5113495bSYour Name  */
1432*5113495bSYour Name QDF_STATUS ucfg_dp_wfds_new_server(void);
1433*5113495bSYour Name 
1434*5113495bSYour Name /**
1435*5113495bSYour Name  * ucfg_dp_wfds_del_server() - Del server callback triggered when service is
1436*5113495bSYour Name  *  down.
1437*5113495bSYour Name  *
1438*5113495bSYour Name  * Return: None
1439*5113495bSYour Name  */
1440*5113495bSYour Name void ucfg_dp_wfds_del_server(void);
1441*5113495bSYour Name 
1442*5113495bSYour Name /**
1443*5113495bSYour Name  * ucfg_dp_config_direct_link() - Set direct link config for vdev
1444*5113495bSYour Name  * @dev: netdev
1445*5113495bSYour Name  * @config_direct_link: Flag to enable direct link path
1446*5113495bSYour Name  * @enable_low_latency: Flag to enable low link latency
1447*5113495bSYour Name  *
1448*5113495bSYour Name  * Return: QDF Status
1449*5113495bSYour Name  */
1450*5113495bSYour Name QDF_STATUS ucfg_dp_config_direct_link(qdf_netdev_t dev,
1451*5113495bSYour Name 				      bool config_direct_link,
1452*5113495bSYour Name 				      bool enable_low_latency);
1453*5113495bSYour Name #else
1454*5113495bSYour Name static inline
ucfg_dp_direct_link_init(struct wlan_objmgr_psoc * psoc)1455*5113495bSYour Name QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc)
1456*5113495bSYour Name {
1457*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1458*5113495bSYour Name }
1459*5113495bSYour Name 
1460*5113495bSYour Name static inline
ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc * psoc,bool is_ssr)1461*5113495bSYour Name void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr)
1462*5113495bSYour Name {
1463*5113495bSYour Name }
1464*5113495bSYour Name 
1465*5113495bSYour Name #ifdef QMI_WFDS
1466*5113495bSYour Name static inline void
ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg * mem_msg)1467*5113495bSYour Name ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg *mem_msg)
1468*5113495bSYour Name {
1469*5113495bSYour Name }
1470*5113495bSYour Name 
1471*5113495bSYour Name static inline void
ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg * ipcc_msg)1472*5113495bSYour Name ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg *ipcc_msg)
1473*5113495bSYour Name {
1474*5113495bSYour Name }
1475*5113495bSYour Name 
ucfg_dp_wfds_new_server(void)1476*5113495bSYour Name static inline QDF_STATUS ucfg_dp_wfds_new_server(void)
1477*5113495bSYour Name {
1478*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1479*5113495bSYour Name }
1480*5113495bSYour Name 
ucfg_dp_wfds_del_server(void)1481*5113495bSYour Name static inline void ucfg_dp_wfds_del_server(void)
1482*5113495bSYour Name {
1483*5113495bSYour Name }
1484*5113495bSYour Name #endif
1485*5113495bSYour Name 
1486*5113495bSYour Name static inline
ucfg_dp_config_direct_link(qdf_netdev_t dev,bool config_direct_link,bool enable_low_latency)1487*5113495bSYour Name QDF_STATUS ucfg_dp_config_direct_link(qdf_netdev_t dev,
1488*5113495bSYour Name 				      bool config_direct_link,
1489*5113495bSYour Name 				      bool enable_low_latency)
1490*5113495bSYour Name {
1491*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
1492*5113495bSYour Name }
1493*5113495bSYour Name #endif
1494*5113495bSYour Name 
1495*5113495bSYour Name /**
1496*5113495bSYour Name  * ucfg_dp_bus_suspend() - BUS suspend DP handler
1497*5113495bSYour Name  * @soc: CDP SoC handle
1498*5113495bSYour Name  * @pdev_id: DP PDEV ID
1499*5113495bSYour Name  *
1500*5113495bSYour Name  * Return: QDF_STATUS
1501*5113495bSYour Name  */
1502*5113495bSYour Name QDF_STATUS ucfg_dp_bus_suspend(ol_txrx_soc_handle soc, uint8_t pdev_id);
1503*5113495bSYour Name 
1504*5113495bSYour Name /**
1505*5113495bSYour Name  * ucfg_dp_bus_resume() - BUS resume DP handler
1506*5113495bSYour Name  * @soc: CDP SoC handle
1507*5113495bSYour Name  * @pdev_id: DP PDEV ID
1508*5113495bSYour Name  *
1509*5113495bSYour Name  * Return: QDF_STATUS
1510*5113495bSYour Name  */
1511*5113495bSYour Name QDF_STATUS ucfg_dp_bus_resume(ol_txrx_soc_handle soc, uint8_t pdev_id);
1512*5113495bSYour Name 
1513*5113495bSYour Name /**
1514*5113495bSYour Name  * ucfg_dp_txrx_soc_attach() - Datapath soc attach
1515*5113495bSYour Name  * @params: SoC attach params
1516*5113495bSYour Name  * @is_wifi3_0_target: [OUT] Pointer to update if the target is wifi3.0
1517*5113495bSYour Name  *
1518*5113495bSYour Name  * Return: SoC handle
1519*5113495bSYour Name  */
1520*5113495bSYour Name void *ucfg_dp_txrx_soc_attach(struct dp_txrx_soc_attach_params *params,
1521*5113495bSYour Name 			      bool *is_wifi3_0_target);
1522*5113495bSYour Name 
1523*5113495bSYour Name /**
1524*5113495bSYour Name  * ucfg_dp_txrx_soc_detach() - Datapath SoC detach
1525*5113495bSYour Name  * @soc: DP SoC handle
1526*5113495bSYour Name  *
1527*5113495bSYour Name  * Return: None
1528*5113495bSYour Name  */
1529*5113495bSYour Name void ucfg_dp_txrx_soc_detach(ol_txrx_soc_handle soc);
1530*5113495bSYour Name 
1531*5113495bSYour Name /**
1532*5113495bSYour Name  * ucfg_dp_txrx_attach_target() - DP target attach
1533*5113495bSYour Name  * @soc: DP SoC handle
1534*5113495bSYour Name  * @pdev_id: DP pdev id
1535*5113495bSYour Name  *
1536*5113495bSYour Name  * Return: QDF_STATUS
1537*5113495bSYour Name  */
1538*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_attach_target(ol_txrx_soc_handle soc, uint8_t pdev_id);
1539*5113495bSYour Name 
1540*5113495bSYour Name /**
1541*5113495bSYour Name  * ucfg_dp_txrx_pdev_attach() - DP pdev attach
1542*5113495bSYour Name  * @soc: DP SoC handle
1543*5113495bSYour Name  *
1544*5113495bSYour Name  * Return: QDF_STATUS
1545*5113495bSYour Name  */
1546*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_pdev_attach(ol_txrx_soc_handle soc);
1547*5113495bSYour Name 
1548*5113495bSYour Name /**
1549*5113495bSYour Name  * ucfg_dp_txrx_pdev_detach() - DP pdev detach
1550*5113495bSYour Name  * @soc: DP SoC handle
1551*5113495bSYour Name  * @pdev_id: DP pdev id
1552*5113495bSYour Name  * @force: indicates if force detach is to be done or not
1553*5113495bSYour Name  *
1554*5113495bSYour Name  * Return: QDF_STATUS
1555*5113495bSYour Name  */
1556*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_pdev_detach(ol_txrx_soc_handle soc, uint8_t pdev_id,
1557*5113495bSYour Name 				    int force);
1558*5113495bSYour Name 
1559*5113495bSYour Name /**
1560*5113495bSYour Name  * ucfg_dp_txrx_init() - initialize DP TXRX module
1561*5113495bSYour Name  * @soc: ol_txrx_soc_handle
1562*5113495bSYour Name  * @pdev_id: id of dp pdev handle
1563*5113495bSYour Name  * @config: configuration for DP TXRX modules
1564*5113495bSYour Name  *
1565*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1566*5113495bSYour Name  */
1567*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_init(ol_txrx_soc_handle soc, uint8_t pdev_id,
1568*5113495bSYour Name 			     struct dp_txrx_config *config);
1569*5113495bSYour Name 
1570*5113495bSYour Name /**
1571*5113495bSYour Name  * ucfg_dp_txrx_deinit() - de-initialize DP TXRX module
1572*5113495bSYour Name  * @soc: ol_txrx_soc_handle
1573*5113495bSYour Name  *
1574*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1575*5113495bSYour Name  */
1576*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_deinit(ol_txrx_soc_handle soc);
1577*5113495bSYour Name 
1578*5113495bSYour Name /**
1579*5113495bSYour Name  * ucfg_dp_txrx_ext_dump_stats() - dump txrx external module stats
1580*5113495bSYour Name  * @soc: ol_txrx_soc_handle object
1581*5113495bSYour Name  * @stats_id: id  for the module whose stats are needed
1582*5113495bSYour Name  *
1583*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1584*5113495bSYour Name  */
1585*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_ext_dump_stats(ol_txrx_soc_handle soc,
1586*5113495bSYour Name 				       uint8_t stats_id);
1587*5113495bSYour Name /**
1588*5113495bSYour Name  * ucfg_dp_txrx_set_cpu_mask() - set CPU mask for RX threads
1589*5113495bSYour Name  * @soc: ol_txrx_soc_handle object
1590*5113495bSYour Name  * @new_mask: New CPU mask pointer
1591*5113495bSYour Name  *
1592*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1593*5113495bSYour Name  */
1594*5113495bSYour Name QDF_STATUS ucfg_dp_txrx_set_cpu_mask(ol_txrx_soc_handle soc,
1595*5113495bSYour Name 				     qdf_cpu_mask *new_mask);
1596*5113495bSYour Name 
1597*5113495bSYour Name /**
1598*5113495bSYour Name  * ucfg_dp_get_per_link_peer_stats() - Call to get per link peer stats
1599*5113495bSYour Name  * @soc: soc handle
1600*5113495bSYour Name  * @vdev_id: vdev_id of vdev object
1601*5113495bSYour Name  * @peer_mac: mac address of the peer
1602*5113495bSYour Name  * @peer_stats: destination buffer
1603*5113495bSYour Name  * @peer_type: Peer type
1604*5113495bSYour Name  * @num_link: Number of ML links
1605*5113495bSYour Name  *
1606*5113495bSYour Name  * NOTE: For peer_type = CDP_MLD_PEER_TYPE peer_stats should point to
1607*5113495bSYour Name  *			 buffer of size = (sizeof(*peer_stats) * num_link)
1608*5113495bSYour Name  *
1609*5113495bSYour Name  * Return: QDF_STATUS
1610*5113495bSYour Name  */
1611*5113495bSYour Name QDF_STATUS
1612*5113495bSYour Name ucfg_dp_get_per_link_peer_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
1613*5113495bSYour Name 				uint8_t *peer_mac,
1614*5113495bSYour Name 				struct cdp_peer_stats *peer_stats,
1615*5113495bSYour Name 				enum cdp_peer_type peer_type,
1616*5113495bSYour Name 				uint8_t num_link);
1617*5113495bSYour Name 
1618*5113495bSYour Name #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
1619*5113495bSYour Name /**
1620*5113495bSYour Name  * ucfg_dp_is_local_pkt_capture_enabled() - Get local packet capture config
1621*5113495bSYour Name  * @psoc: pointer to psoc object
1622*5113495bSYour Name  *
1623*5113495bSYour Name  * Return: true if local packet capture is enabled from ini
1624*5113495bSYour Name  *         false otherwise
1625*5113495bSYour Name  */
1626*5113495bSYour Name bool
1627*5113495bSYour Name ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc *psoc);
1628*5113495bSYour Name #else
1629*5113495bSYour Name static inline bool
ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc * psoc)1630*5113495bSYour Name ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc *psoc)
1631*5113495bSYour Name {
1632*5113495bSYour Name 	return false;
1633*5113495bSYour Name }
1634*5113495bSYour Name #endif /* WLAN_FEATURE_LOCAL_PKT_CAPTURE */
1635*5113495bSYour Name 
1636*5113495bSYour Name /**
1637*5113495bSYour Name  * ucfg_dp_get_vdev_stats () - API to get vdev stats
1638*5113495bSYour Name  * @soc: dp soc object
1639*5113495bSYour Name  * @vdev_id: Vdev ID of vdev for which stats is requested
1640*5113495bSYour Name  * @buf: Pointer to buffer in which stats need to be updated
1641*5113495bSYour Name  *
1642*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success else error code
1643*5113495bSYour Name  */
1644*5113495bSYour Name QDF_STATUS ucfg_dp_get_vdev_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
1645*5113495bSYour Name 				  struct cdp_vdev_stats *buf);
1646*5113495bSYour Name 
1647*5113495bSYour Name /*
1648*5113495bSYour Name  * ucfg_dp_set_mon_conf_flags(): Set monitor configuration flags
1649*5113495bSYour Name  * @psoc: psoc handle
1650*5113495bSYour Name  * @flags: monitor configuration flags
1651*5113495bSYour Name  *
1652*5113495bSYour Name  * Return: None
1653*5113495bSYour Name  */
1654*5113495bSYour Name void ucfg_dp_set_mon_conf_flags(struct wlan_objmgr_psoc *psoc, uint32_t flags);
1655*5113495bSYour Name #endif /* _WLAN_DP_UCFG_API_H_ */
1656