xref: /wlan-driver/qcacld-3.0/components/dp/dispatcher/inc/wlan_dp_public_struct.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2022-2023 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  * DOC: Contains DP public data structure definitions.
20*5113495bSYour Name  *
21*5113495bSYour Name  */
22*5113495bSYour Name 
23*5113495bSYour Name #ifndef _WLAN_DP_PUBLIC_STRUCT_H_
24*5113495bSYour Name #define _WLAN_DP_PUBLIC_STRUCT_H_
25*5113495bSYour Name 
26*5113495bSYour Name #include "wlan_cmn.h"
27*5113495bSYour Name #include "wlan_objmgr_cmn.h"
28*5113495bSYour Name #include "wlan_objmgr_global_obj.h"
29*5113495bSYour Name #include "qdf_status.h"
30*5113495bSYour Name #include <wlan_nlink_common.h>
31*5113495bSYour Name #include <qca_vendor.h>
32*5113495bSYour Name #include <ani_system_defs.h>
33*5113495bSYour Name #include "cdp_txrx_ops.h"
34*5113495bSYour Name #include <qdf_defer.h>
35*5113495bSYour Name #include <qdf_types.h>
36*5113495bSYour Name #include "wlan_dp_rx_thread.h"
37*5113495bSYour Name 
38*5113495bSYour Name #define DP_MAX_SUBTYPES_TRACKED	4
39*5113495bSYour Name 
40*5113495bSYour Name enum dp_rx_offld_flush_cb {
41*5113495bSYour Name 	DP_RX_FLUSH_LRO,
42*5113495bSYour Name 	DP_RX_FLUSH_THREAD,
43*5113495bSYour Name 	DP_RX_FLUSH_NAPI,
44*5113495bSYour Name };
45*5113495bSYour Name 
46*5113495bSYour Name enum dp_nbuf_push_type {
47*5113495bSYour Name 	DP_NBUF_PUSH_NI,
48*5113495bSYour Name 	DP_NBUF_PUSH_NAPI,
49*5113495bSYour Name 	DP_NBUF_PUSH_BH_DISABLE,
50*5113495bSYour Name 	DP_NBUF_PUSH_SIMPLE,
51*5113495bSYour Name };
52*5113495bSYour Name 
53*5113495bSYour Name /**
54*5113495bSYour Name  * struct dp_eapol_stats - eapol debug stats count
55*5113495bSYour Name  * @eapol_m1_count: eapol m1 count
56*5113495bSYour Name  * @eapol_m2_count: eapol m2 count
57*5113495bSYour Name  * @eapol_m3_count: eapol m3 count
58*5113495bSYour Name  * @eapol_m4_count: eapol m4 count
59*5113495bSYour Name  * @tx_dropped: no of tx frames dropped by host
60*5113495bSYour Name  * @tx_noack_cnt: no of frames for which there is no ack
61*5113495bSYour Name  * @rx_delivered: no. of frames delivered to network stack
62*5113495bSYour Name  * @rx_refused: no of frames not delivered to network stack
63*5113495bSYour Name  */
64*5113495bSYour Name struct dp_eapol_stats {
65*5113495bSYour Name 	uint16_t eapol_m1_count;
66*5113495bSYour Name 	uint16_t eapol_m2_count;
67*5113495bSYour Name 	uint16_t eapol_m3_count;
68*5113495bSYour Name 	uint16_t eapol_m4_count;
69*5113495bSYour Name 	uint16_t tx_dropped[DP_MAX_SUBTYPES_TRACKED];
70*5113495bSYour Name 	uint16_t tx_noack_cnt[DP_MAX_SUBTYPES_TRACKED];
71*5113495bSYour Name 	uint16_t rx_delivered[DP_MAX_SUBTYPES_TRACKED];
72*5113495bSYour Name 	uint16_t rx_refused[DP_MAX_SUBTYPES_TRACKED];
73*5113495bSYour Name };
74*5113495bSYour Name 
75*5113495bSYour Name /**
76*5113495bSYour Name  * struct dp_dhcp_stats - dhcp debug stats count
77*5113495bSYour Name  * @dhcp_dis_count: dhcp discovery count
78*5113495bSYour Name  * @dhcp_off_count: dhcp offer count
79*5113495bSYour Name  * @dhcp_req_count: dhcp request count
80*5113495bSYour Name  * @dhcp_ack_count: dhcp ack count
81*5113495bSYour Name  * @tx_dropped: no of tx frames dropped by host
82*5113495bSYour Name  * @tx_noack_cnt: no of frames for which there is no ack
83*5113495bSYour Name  * @rx_delivered: no. of frames delivered to network stack
84*5113495bSYour Name  * @rx_refused: no of frames not delivered to network stack
85*5113495bSYour Name  */
86*5113495bSYour Name struct dp_dhcp_stats {
87*5113495bSYour Name 	uint16_t dhcp_dis_count;
88*5113495bSYour Name 	uint16_t dhcp_off_count;
89*5113495bSYour Name 	uint16_t dhcp_req_count;
90*5113495bSYour Name 	uint16_t dhcp_ack_count;
91*5113495bSYour Name 	uint16_t tx_dropped[DP_MAX_SUBTYPES_TRACKED];
92*5113495bSYour Name 	uint16_t tx_noack_cnt[DP_MAX_SUBTYPES_TRACKED];
93*5113495bSYour Name 	uint16_t rx_delivered[DP_MAX_SUBTYPES_TRACKED];
94*5113495bSYour Name 	uint16_t rx_refused[DP_MAX_SUBTYPES_TRACKED];
95*5113495bSYour Name };
96*5113495bSYour Name 
97*5113495bSYour Name #ifdef TX_MULTIQ_PER_AC
98*5113495bSYour Name #define TX_GET_QUEUE_IDX(ac, off) (((ac) * TX_QUEUES_PER_AC) + (off))
99*5113495bSYour Name #define TX_QUEUES_PER_AC 4
100*5113495bSYour Name #else
101*5113495bSYour Name #define TX_GET_QUEUE_IDX(ac, off) (ac)
102*5113495bSYour Name #define TX_QUEUES_PER_AC 1
103*5113495bSYour Name #endif
104*5113495bSYour Name 
105*5113495bSYour Name /** Number of Tx Queues */
106*5113495bSYour Name #if defined(QCA_LL_TX_FLOW_CONTROL_V2) || \
107*5113495bSYour Name 	defined(QCA_HL_NETDEV_FLOW_CONTROL) || \
108*5113495bSYour Name 	defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
109*5113495bSYour Name /* Only one HI_PRIO queue */
110*5113495bSYour Name #define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC + 1)
111*5113495bSYour Name #else
112*5113495bSYour Name #define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC)
113*5113495bSYour Name #endif
114*5113495bSYour Name 
115*5113495bSYour Name #ifndef NUM_CPUS
116*5113495bSYour Name #ifdef QCA_CONFIG_SMP
117*5113495bSYour Name #define NUM_CPUS NR_CPUS
118*5113495bSYour Name #else
119*5113495bSYour Name #define NUM_CPUS 1
120*5113495bSYour Name #endif
121*5113495bSYour Name #endif
122*5113495bSYour Name 
123*5113495bSYour Name /**
124*5113495bSYour Name  * struct dp_arp_stats - arp debug stats count
125*5113495bSYour Name  * @tx_arp_req_count: no. of arp req received from network stack
126*5113495bSYour Name  * @rx_arp_rsp_count: no. of arp res received from FW
127*5113495bSYour Name  * @tx_dropped: no. of arp req dropped at hdd layer
128*5113495bSYour Name  * @rx_dropped: no. of arp res dropped
129*5113495bSYour Name  * @rx_delivered: no. of arp res delivered to network stack
130*5113495bSYour Name  * @rx_refused: no of arp rsp refused (not delivered) to network stack
131*5113495bSYour Name  * @tx_host_fw_sent: no of arp req sent by FW OTA
132*5113495bSYour Name  * @rx_host_drop_reorder: no of arp res dropped by host
133*5113495bSYour Name  * @rx_fw_cnt: no of arp res received by FW
134*5113495bSYour Name  * @tx_ack_cnt: no of arp req acked by FW
135*5113495bSYour Name  */
136*5113495bSYour Name struct dp_arp_stats {
137*5113495bSYour Name 	uint16_t tx_arp_req_count;
138*5113495bSYour Name 	uint16_t rx_arp_rsp_count;
139*5113495bSYour Name 	uint16_t tx_dropped;
140*5113495bSYour Name 	uint16_t rx_dropped;
141*5113495bSYour Name 	uint16_t rx_delivered;
142*5113495bSYour Name 	uint16_t rx_refused;
143*5113495bSYour Name 	uint16_t tx_host_fw_sent;
144*5113495bSYour Name 	uint16_t rx_host_drop_reorder;
145*5113495bSYour Name 	uint16_t rx_fw_cnt;
146*5113495bSYour Name 	uint16_t tx_ack_cnt;
147*5113495bSYour Name };
148*5113495bSYour Name 
149*5113495bSYour Name /**
150*5113495bSYour Name  * struct dp_set_arp_stats_params - set/reset arp stats
151*5113495bSYour Name  * @vdev_id: session id
152*5113495bSYour Name  * @flag: enable/disable stats
153*5113495bSYour Name  * @pkt_type: type of packet(1 - arp)
154*5113495bSYour Name  * @ip_addr: subnet ipv4 address in case of encrypted packets
155*5113495bSYour Name  * @pkt_type_bitmap: pkt bitmap
156*5113495bSYour Name  * @tcp_src_port: tcp src port for pkt tracking
157*5113495bSYour Name  * @tcp_dst_port: tcp dst port for pkt tracking
158*5113495bSYour Name  * @icmp_ipv4: target ipv4 address to track ping packets
159*5113495bSYour Name  * @reserved: reserved
160*5113495bSYour Name  */
161*5113495bSYour Name struct dp_set_arp_stats_params {
162*5113495bSYour Name 	uint32_t vdev_id;
163*5113495bSYour Name 	uint8_t flag;
164*5113495bSYour Name 	uint8_t pkt_type;
165*5113495bSYour Name 	uint32_t ip_addr;
166*5113495bSYour Name 	uint32_t pkt_type_bitmap;
167*5113495bSYour Name 	uint32_t tcp_src_port;
168*5113495bSYour Name 	uint32_t tcp_dst_port;
169*5113495bSYour Name 	uint32_t icmp_ipv4;
170*5113495bSYour Name 	uint32_t reserved;
171*5113495bSYour Name };
172*5113495bSYour Name 
173*5113495bSYour Name /**
174*5113495bSYour Name  * struct dp_get_arp_stats_params - get arp stats from firmware
175*5113495bSYour Name  * @pkt_type: packet type(1 - ARP)
176*5113495bSYour Name  * @vdev_id: session id
177*5113495bSYour Name  */
178*5113495bSYour Name struct dp_get_arp_stats_params {
179*5113495bSYour Name 	uint8_t pkt_type;
180*5113495bSYour Name 	uint32_t vdev_id;
181*5113495bSYour Name };
182*5113495bSYour Name 
183*5113495bSYour Name /**
184*5113495bSYour Name  * struct dp_dns_stats - dns debug stats count
185*5113495bSYour Name  * @tx_dns_req_count: no. of dns query received from network stack
186*5113495bSYour Name  * @rx_dns_rsp_count: no. of dns res received from FW
187*5113495bSYour Name  * @tx_dropped: no. of dns query dropped at hdd layer
188*5113495bSYour Name  * @rx_delivered: no. of dns res delivered to network stack
189*5113495bSYour Name  * @rx_refused: no of dns res refused (not delivered) to network stack
190*5113495bSYour Name  * @tx_host_fw_sent: no of dns query sent by FW OTA
191*5113495bSYour Name  * @rx_host_drop: no of dns res dropped by host
192*5113495bSYour Name  * @tx_ack_cnt: no of dns req acked by FW
193*5113495bSYour Name  */
194*5113495bSYour Name struct dp_dns_stats {
195*5113495bSYour Name 	uint16_t tx_dns_req_count;
196*5113495bSYour Name 	uint16_t rx_dns_rsp_count;
197*5113495bSYour Name 	uint16_t tx_dropped;
198*5113495bSYour Name 	uint16_t rx_delivered;
199*5113495bSYour Name 	uint16_t rx_refused;
200*5113495bSYour Name 	uint16_t tx_host_fw_sent;
201*5113495bSYour Name 	uint16_t rx_host_drop;
202*5113495bSYour Name 	uint16_t tx_ack_cnt;
203*5113495bSYour Name };
204*5113495bSYour Name 
205*5113495bSYour Name /**
206*5113495bSYour Name  * struct dp_tcp_stats - tcp debug stats count
207*5113495bSYour Name  * @tx_tcp_syn_count: no. of tcp syn received from network stack
208*5113495bSYour Name  * @tx_tcp_ack_count: no. of tcp ack received from network stack
209*5113495bSYour Name  * @rx_tcp_syn_ack_count: no. of tcp syn ack received from FW
210*5113495bSYour Name  * @tx_tcp_syn_dropped: no. of tcp syn dropped at hdd layer
211*5113495bSYour Name  * @tx_tcp_ack_dropped: no. of tcp ack dropped at hdd layer
212*5113495bSYour Name  * @rx_delivered: no. of tcp syn ack delivered to network stack
213*5113495bSYour Name  * @rx_refused: no of tcp syn ack refused (not delivered) to network stack
214*5113495bSYour Name  * @tx_tcp_syn_host_fw_sent: no of tcp syn sent by FW OTA
215*5113495bSYour Name  * @tx_tcp_ack_host_fw_sent: no of tcp ack sent by FW OTA
216*5113495bSYour Name  * @rx_host_drop: no of tcp syn ack dropped by host
217*5113495bSYour Name  * @rx_fw_cnt: no of tcp res received by FW
218*5113495bSYour Name  * @tx_tcp_syn_ack_cnt: no of tcp syn acked by FW
219*5113495bSYour Name  * @tx_tcp_ack_ack_cnt: no of tcp ack acked by FW
220*5113495bSYour Name  * @is_tcp_syn_ack_rcv: flag to check tcp syn ack received or not
221*5113495bSYour Name  * @is_tcp_ack_sent: flag to check tcp ack sent or not
222*5113495bSYour Name  */
223*5113495bSYour Name struct dp_tcp_stats {
224*5113495bSYour Name 	uint16_t tx_tcp_syn_count;
225*5113495bSYour Name 	uint16_t tx_tcp_ack_count;
226*5113495bSYour Name 	uint16_t rx_tcp_syn_ack_count;
227*5113495bSYour Name 	uint16_t tx_tcp_syn_dropped;
228*5113495bSYour Name 	uint16_t tx_tcp_ack_dropped;
229*5113495bSYour Name 	uint16_t rx_delivered;
230*5113495bSYour Name 	uint16_t rx_refused;
231*5113495bSYour Name 	uint16_t tx_tcp_syn_host_fw_sent;
232*5113495bSYour Name 	uint16_t tx_tcp_ack_host_fw_sent;
233*5113495bSYour Name 	uint16_t rx_host_drop;
234*5113495bSYour Name 	uint16_t rx_fw_cnt;
235*5113495bSYour Name 	uint16_t tx_tcp_syn_ack_cnt;
236*5113495bSYour Name 	uint16_t tx_tcp_ack_ack_cnt;
237*5113495bSYour Name 	bool is_tcp_syn_ack_rcv;
238*5113495bSYour Name 	bool is_tcp_ack_sent;
239*5113495bSYour Name 
240*5113495bSYour Name };
241*5113495bSYour Name 
242*5113495bSYour Name /**
243*5113495bSYour Name  * struct dp_icmpv4_stats - icmpv4 debug stats count
244*5113495bSYour Name  * @tx_icmpv4_req_count: no. of icmpv4 req received from network stack
245*5113495bSYour Name  * @rx_icmpv4_rsp_count: no. of icmpv4 res received from FW
246*5113495bSYour Name  * @tx_dropped: no. of icmpv4 req dropped at hdd layer
247*5113495bSYour Name  * @rx_delivered: no. of icmpv4 res delivered to network stack
248*5113495bSYour Name  * @rx_refused: no of icmpv4 res refused (not delivered) to network stack
249*5113495bSYour Name  * @tx_host_fw_sent: no of icmpv4 req sent by FW OTA
250*5113495bSYour Name  * @rx_host_drop: no of icmpv4 res dropped by host
251*5113495bSYour Name  * @rx_fw_cnt: no of icmpv4 res received by FW
252*5113495bSYour Name  * @tx_ack_cnt: no of icmpv4 req acked by FW
253*5113495bSYour Name  */
254*5113495bSYour Name struct dp_icmpv4_stats {
255*5113495bSYour Name 	uint16_t tx_icmpv4_req_count;
256*5113495bSYour Name 	uint16_t rx_icmpv4_rsp_count;
257*5113495bSYour Name 	uint16_t tx_dropped;
258*5113495bSYour Name 	uint16_t rx_delivered;
259*5113495bSYour Name 	uint16_t rx_refused;
260*5113495bSYour Name 	uint16_t tx_host_fw_sent;
261*5113495bSYour Name 	uint16_t rx_host_drop;
262*5113495bSYour Name 	uint16_t rx_fw_cnt;
263*5113495bSYour Name 	uint16_t tx_ack_cnt;
264*5113495bSYour Name };
265*5113495bSYour Name 
266*5113495bSYour Name /**
267*5113495bSYour Name  * struct dp_rsp_stats - arp packet stats
268*5113495bSYour Name  * @vdev_id: session id
269*5113495bSYour Name  * @arp_req_enqueue: fw tx count
270*5113495bSYour Name  * @arp_req_tx_success: tx ack count
271*5113495bSYour Name  * @arp_req_tx_failure: tx ack fail count
272*5113495bSYour Name  * @arp_rsp_recvd: rx fw count
273*5113495bSYour Name  * @out_of_order_arp_rsp_drop_cnt: out of order count
274*5113495bSYour Name  * @dad_detected: dad detected
275*5113495bSYour Name  * @connect_status: connection status
276*5113495bSYour Name  * @ba_session_establishment_status: BA session status
277*5113495bSYour Name  * @connect_stats_present: connectivity stats present or not
278*5113495bSYour Name  * @tcp_ack_recvd: tcp syn ack's count
279*5113495bSYour Name  * @icmpv4_rsp_recvd: icmpv4 responses count
280*5113495bSYour Name  */
281*5113495bSYour Name struct dp_rsp_stats {
282*5113495bSYour Name 	uint32_t vdev_id;
283*5113495bSYour Name 	uint32_t arp_req_enqueue;
284*5113495bSYour Name 	uint32_t arp_req_tx_success;
285*5113495bSYour Name 	uint32_t arp_req_tx_failure;
286*5113495bSYour Name 	uint32_t arp_rsp_recvd;
287*5113495bSYour Name 	uint32_t out_of_order_arp_rsp_drop_cnt;
288*5113495bSYour Name 	uint32_t dad_detected;
289*5113495bSYour Name 	uint32_t connect_status;
290*5113495bSYour Name 	uint32_t ba_session_establishment_status;
291*5113495bSYour Name 	bool connect_stats_present;
292*5113495bSYour Name 	uint32_t tcp_ack_recvd;
293*5113495bSYour Name 	uint32_t icmpv4_rsp_recvd;
294*5113495bSYour Name };
295*5113495bSYour Name 
296*5113495bSYour Name /**
297*5113495bSYour Name  * struct dp_txrx_soc_attach_params - SoC attach params
298*5113495bSYour Name  * @dp_ol_if_ops: DP ol_if ops
299*5113495bSYour Name  * @target_psoc: target psoc
300*5113495bSYour Name  * @target_type: Target type
301*5113495bSYour Name  */
302*5113495bSYour Name struct dp_txrx_soc_attach_params {
303*5113495bSYour Name 	struct ol_if_ops *dp_ol_if_ops;
304*5113495bSYour Name 	void *target_psoc;
305*5113495bSYour Name 	uint32_t target_type;
306*5113495bSYour Name };
307*5113495bSYour Name 
308*5113495bSYour Name struct dp_tx_rx_stats {
309*5113495bSYour Name 	struct {
310*5113495bSYour Name 		/* start_xmit stats */
311*5113495bSYour Name 		__u32    tx_called;
312*5113495bSYour Name 		__u32    tx_dropped;
313*5113495bSYour Name 		__u32    tx_orphaned;
314*5113495bSYour Name 		__u32    tx_classified_ac[WLAN_MAX_AC];
315*5113495bSYour Name 		__u32    tx_dropped_ac[WLAN_MAX_AC];
316*5113495bSYour Name #ifdef TX_MULTIQ_PER_AC
317*5113495bSYour Name 		/* Neither valid socket nor skb->hash */
318*5113495bSYour Name 		uint32_t inv_sk_and_skb_hash;
319*5113495bSYour Name 		/* skb->hash already calculated */
320*5113495bSYour Name 		uint32_t qselect_existing_skb_hash;
321*5113495bSYour Name 		/* valid tx queue id in socket */
322*5113495bSYour Name 		uint32_t qselect_sk_tx_map;
323*5113495bSYour Name 		/* skb->hash calculated in select queue */
324*5113495bSYour Name 		uint32_t qselect_skb_hash_calc;
325*5113495bSYour Name #endif
326*5113495bSYour Name 		/* rx stats */
327*5113495bSYour Name 		__u32 rx_packets;
328*5113495bSYour Name 		__u32 rx_dropped;
329*5113495bSYour Name 		__u32 rx_delivered;
330*5113495bSYour Name 		__u32 rx_refused;
331*5113495bSYour Name 	} per_cpu[NUM_CPUS];
332*5113495bSYour Name 
333*5113495bSYour Name 	qdf_atomic_t rx_usolict_arp_n_mcast_drp;
334*5113495bSYour Name 
335*5113495bSYour Name 	/* rx gro */
336*5113495bSYour Name 	__u32 rx_aggregated;
337*5113495bSYour Name 	__u32 rx_gro_dropped;
338*5113495bSYour Name 	__u32 rx_non_aggregated;
339*5113495bSYour Name 	__u32 rx_gro_flush_skip;
340*5113495bSYour Name 	__u32 rx_gro_low_tput_flush;
341*5113495bSYour Name 
342*5113495bSYour Name 	/* txflow stats */
343*5113495bSYour Name 	bool     is_txflow_paused;
344*5113495bSYour Name 	__u32    txflow_pause_cnt;
345*5113495bSYour Name 	__u32    txflow_unpause_cnt;
346*5113495bSYour Name 	__u32    txflow_timer_cnt;
347*5113495bSYour Name 
348*5113495bSYour Name 	/*tx timeout stats*/
349*5113495bSYour Name 	__u32 tx_timeout_cnt;
350*5113495bSYour Name 	__u32 cont_txtimeout_cnt;
351*5113495bSYour Name 	u64 last_txtimeout;
352*5113495bSYour Name };
353*5113495bSYour Name 
354*5113495bSYour Name /**
355*5113495bSYour Name  * struct dp_dhcp_ind - DHCP Start/Stop indication message
356*5113495bSYour Name  * @dhcp_start: Is DHCP start idication
357*5113495bSYour Name  * @device_mode: Mode of the device(ex:STA, AP)
358*5113495bSYour Name  * @intf_mac_addr: MAC address of the interface
359*5113495bSYour Name  * @peer_mac_addr: MAC address of the connected peer
360*5113495bSYour Name  */
361*5113495bSYour Name struct dp_dhcp_ind {
362*5113495bSYour Name 	bool dhcp_start;
363*5113495bSYour Name 	uint8_t device_mode;
364*5113495bSYour Name 	struct qdf_mac_addr intf_mac_addr;
365*5113495bSYour Name 	struct qdf_mac_addr peer_mac_addr;
366*5113495bSYour Name };
367*5113495bSYour Name 
368*5113495bSYour Name /**
369*5113495bSYour Name  * struct dp_mic_error_info - mic error info in dp
370*5113495bSYour Name  * @ta_mac_addr: transmitter mac address
371*5113495bSYour Name  * @multicast: Flag for multicast
372*5113495bSYour Name  * @key_id: Key ID
373*5113495bSYour Name  * @tsc: Sequence number
374*5113495bSYour Name  * @vdev_id: vdev id
375*5113495bSYour Name  *
376*5113495bSYour Name  */
377*5113495bSYour Name struct dp_mic_error_info {
378*5113495bSYour Name 	struct qdf_mac_addr ta_mac_addr;
379*5113495bSYour Name 	bool multicast;
380*5113495bSYour Name 	uint8_t key_id;
381*5113495bSYour Name 	uint8_t tsc[SIR_CIPHER_SEQ_CTR_SIZE];
382*5113495bSYour Name 	uint16_t vdev_id;
383*5113495bSYour Name };
384*5113495bSYour Name 
385*5113495bSYour Name enum dp_mic_work_status {
386*5113495bSYour Name 	DP_MIC_UNINITIALIZED,
387*5113495bSYour Name 	DP_MIC_INITIALIZED,
388*5113495bSYour Name 	DP_MIC_SCHEDULED,
389*5113495bSYour Name 	DP_MIC_DISABLED
390*5113495bSYour Name };
391*5113495bSYour Name 
392*5113495bSYour Name /**
393*5113495bSYour Name  * struct dp_mic_work - mic work info in dp
394*5113495bSYour Name  * @work: mic error work
395*5113495bSYour Name  * @status: sattus of mic error work
396*5113495bSYour Name  * @info: Pointer to mic error information
397*5113495bSYour Name  * @lock: lock to synchronixe mic error work
398*5113495bSYour Name  *
399*5113495bSYour Name  */
400*5113495bSYour Name struct dp_mic_work {
401*5113495bSYour Name 	qdf_work_t work;
402*5113495bSYour Name 	enum dp_mic_work_status status;
403*5113495bSYour Name 	struct dp_mic_error_info *info;
404*5113495bSYour Name 	qdf_spinlock_t lock;
405*5113495bSYour Name };
406*5113495bSYour Name 
407*5113495bSYour Name enum dp_nud_state {
408*5113495bSYour Name 	DP_NUD_NONE,
409*5113495bSYour Name 	DP_NUD_INCOMPLETE,
410*5113495bSYour Name 	DP_NUD_REACHABLE,
411*5113495bSYour Name 	DP_NUD_STALE,
412*5113495bSYour Name 	DP_NUD_DELAY,
413*5113495bSYour Name 	DP_NUD_PROBE,
414*5113495bSYour Name 	DP_NUD_FAILED,
415*5113495bSYour Name 	DP_NUD_NOARP,
416*5113495bSYour Name 	DP_NUD_PERMANENT,
417*5113495bSYour Name 	DP_NUD_STATE_INVALID
418*5113495bSYour Name };
419*5113495bSYour Name 
420*5113495bSYour Name struct opaque_hdd_callback_handle;
421*5113495bSYour Name /*
422*5113495bSYour Name  * typedef hdd_cb_handle - HDD Handle
423*5113495bSYour Name  *
424*5113495bSYour Name  * Handle to the HDD.  The HDD handle is given to the DP component from the
425*5113495bSYour Name  * HDD during start modules.  The HDD handle is an input to all HDD function
426*5113495bSYour Name  * calls and represents an opaque handle to the HDD instance that is
427*5113495bSYour Name  * tied to the DP context
428*5113495bSYour Name  *
429*5113495bSYour Name  * The HDD must be able to derive it's internal instance structure
430*5113495bSYour Name  * pointer through this handle.
431*5113495bSYour Name  *
432*5113495bSYour Name  * NOTE WELL: struct opaque_hdd_callback_handle is not defined anywhere. This
433*5113495bSYour Name  * reference is used to help ensure that a hdd_cb_handle is never used
434*5113495bSYour Name  * where a different handle type is expected
435*5113495bSYour Name  */
436*5113495bSYour Name typedef struct opaque_hdd_callback_handle *hdd_cb_handle;
437*5113495bSYour Name 
438*5113495bSYour Name /**
439*5113495bSYour Name  * enum bus_bw_level - bus bandwidth vote levels
440*5113495bSYour Name  *
441*5113495bSYour Name  * @BUS_BW_LEVEL_NONE: No vote for bus bandwidth
442*5113495bSYour Name  * @BUS_BW_LEVEL_1: vote for level-1 bus bandwidth
443*5113495bSYour Name  * @BUS_BW_LEVEL_2: vote for level-2 bus bandwidth
444*5113495bSYour Name  * @BUS_BW_LEVEL_3: vote for level-3 bus bandwidth
445*5113495bSYour Name  * @BUS_BW_LEVEL_4: vote for level-4 bus bandwidth
446*5113495bSYour Name  * @BUS_BW_LEVEL_5: vote for level-5 bus bandwidth
447*5113495bSYour Name  * @BUS_BW_LEVEL_6: vote for level-6 bus bandwidth
448*5113495bSYour Name  * @BUS_BW_LEVEL_7: vote for level-7 bus bandwidth
449*5113495bSYour Name  * @BUS_BW_LEVEL_8: vote for level-8 bus bandwidth
450*5113495bSYour Name  * @BUS_BW_LEVEL_9: vote for level-9 bus bandwidth
451*5113495bSYour Name  * @BUS_BW_LEVEL_MAX: vote for max level bus bandwidth
452*5113495bSYour Name  */
453*5113495bSYour Name enum bus_bw_level {
454*5113495bSYour Name 	BUS_BW_LEVEL_NONE,
455*5113495bSYour Name 	BUS_BW_LEVEL_1,
456*5113495bSYour Name 	BUS_BW_LEVEL_2,
457*5113495bSYour Name 	BUS_BW_LEVEL_3,
458*5113495bSYour Name 	BUS_BW_LEVEL_4,
459*5113495bSYour Name 	BUS_BW_LEVEL_5,
460*5113495bSYour Name 	BUS_BW_LEVEL_6,
461*5113495bSYour Name 	BUS_BW_LEVEL_7,
462*5113495bSYour Name 	BUS_BW_LEVEL_8,
463*5113495bSYour Name 	BUS_BW_LEVEL_9,
464*5113495bSYour Name 	BUS_BW_LEVEL_MAX,
465*5113495bSYour Name };
466*5113495bSYour Name 
467*5113495bSYour Name #define BUS_BW_LEVEL_RESUME BUS_BW_LEVEL_3
468*5113495bSYour Name 
469*5113495bSYour Name /**
470*5113495bSYour Name  * enum tput_level - throughput levels
471*5113495bSYour Name  *
472*5113495bSYour Name  * @TPUT_LEVEL_NONE: No throughput
473*5113495bSYour Name  * @TPUT_LEVEL_IDLE: idle throughtput level
474*5113495bSYour Name  * @TPUT_LEVEL_LOW: low throughput level
475*5113495bSYour Name  * @TPUT_LEVEL_MEDIUM: medium throughtput level
476*5113495bSYour Name  * @TPUT_LEVEL_HIGH: high throughput level
477*5113495bSYour Name  * @TPUT_LEVEL_MID_HIGH: mid high throughput level
478*5113495bSYour Name  * @TPUT_LEVEL_VERY_HIGH: very high throughput level
479*5113495bSYour Name  * @TPUT_LEVEL_ULTRA_HIGH: ultra high throughput level
480*5113495bSYour Name  * @TPUT_LEVEL_SUPER_HIGH: super high throughput level
481*5113495bSYour Name  * @TPUT_LEVEL_MAX: maximum throughput level
482*5113495bSYour Name  */
483*5113495bSYour Name enum tput_level {
484*5113495bSYour Name 	TPUT_LEVEL_NONE,
485*5113495bSYour Name 	TPUT_LEVEL_IDLE,
486*5113495bSYour Name 	TPUT_LEVEL_LOW,
487*5113495bSYour Name 	TPUT_LEVEL_MEDIUM,
488*5113495bSYour Name 	TPUT_LEVEL_HIGH,
489*5113495bSYour Name 	TPUT_LEVEL_MID_HIGH,
490*5113495bSYour Name 	TPUT_LEVEL_VERY_HIGH,
491*5113495bSYour Name 	TPUT_LEVEL_ULTRA_HIGH,
492*5113495bSYour Name 	TPUT_LEVEL_SUPER_HIGH,
493*5113495bSYour Name 	TPUT_LEVEL_MAX,
494*5113495bSYour Name };
495*5113495bSYour Name 
496*5113495bSYour Name /**
497*5113495bSYour Name  * enum bbm_non_per_flag - Non persistent policy related flag
498*5113495bSYour Name  *
499*5113495bSYour Name  * @BBM_APPS_RESUME: system resume flag
500*5113495bSYour Name  * @BBM_APPS_SUSPEND: system suspend flag
501*5113495bSYour Name  * @BBM_FLAG_MAX: maximum flag
502*5113495bSYour Name  */
503*5113495bSYour Name enum bbm_non_per_flag {
504*5113495bSYour Name 	BBM_APPS_RESUME,
505*5113495bSYour Name 	BBM_APPS_SUSPEND,
506*5113495bSYour Name 	BBM_FLAG_MAX,
507*5113495bSYour Name };
508*5113495bSYour Name 
509*5113495bSYour Name /**
510*5113495bSYour Name  * enum bbm_policy - BBM policy
511*5113495bSYour Name  *
512*5113495bSYour Name  * @BBM_DRIVER_MODE_POLICY: driver mode policy
513*5113495bSYour Name  * @BBM_TPUT_POLICY: throughput policy
514*5113495bSYour Name  * @BBM_USER_POLICY: user policy
515*5113495bSYour Name  * @BBM_NON_PERSISTENT_POLICY: non persistent policy. For example, bus resume
516*5113495bSYour Name  *  sets the bus bw level to LEVEL_3 if any adapter is connected but
517*5113495bSYour Name  *  this is only a one time setting and is not persistent. This bus bw level
518*5113495bSYour Name  *  is set without taking other policy vote levels into consideration.
519*5113495bSYour Name  * @BBM_SELECT_TABLE_POLICY: policy where bus bw table is selected based on
520*5113495bSYour Name  *  the latency level.
521*5113495bSYour Name  * @BBM_MAX_POLICY: max policy
522*5113495bSYour Name  */
523*5113495bSYour Name enum bbm_policy {
524*5113495bSYour Name 	BBM_DRIVER_MODE_POLICY,
525*5113495bSYour Name 	BBM_TPUT_POLICY,
526*5113495bSYour Name 	BBM_USER_POLICY,
527*5113495bSYour Name 	BBM_NON_PERSISTENT_POLICY,
528*5113495bSYour Name 	BBM_SELECT_TABLE_POLICY,
529*5113495bSYour Name 	BBM_MAX_POLICY,
530*5113495bSYour Name };
531*5113495bSYour Name 
532*5113495bSYour Name /**
533*5113495bSYour Name  * enum wlm_ll_level - WLM latency levels
534*5113495bSYour Name  *
535*5113495bSYour Name  * @WLM_LL_NORMAL: normal latency level
536*5113495bSYour Name  * @WLM_LL_LOW: low latency level
537*5113495bSYour Name  * @WLM_LL_MAX: max latency level
538*5113495bSYour Name  */
539*5113495bSYour Name enum wlm_ll_level {
540*5113495bSYour Name 	WLM_LL_NORMAL,
541*5113495bSYour Name 	WLM_LL_LOW,
542*5113495bSYour Name 	WLM_LL_MAX,
543*5113495bSYour Name };
544*5113495bSYour Name 
545*5113495bSYour Name /**
546*5113495bSYour Name  * union bbm_policy_info - BBM policy specific info. Only one of the value
547*5113495bSYour Name  *  would be valid based on the BBM policy.
548*5113495bSYour Name  *
549*5113495bSYour Name  * @driver_mode: global driver mode. valid for BBM_DRIVER_MODE_POLICY.
550*5113495bSYour Name  * @flag: BBM non persistent flag. valid for BBM_NON_PERSISTENT_POLICY.
551*5113495bSYour Name  * @tput_level: throughput level. valid for BBM_TPUT_POLICY.
552*5113495bSYour Name  * @wlm_level: latency level. valid for BBM_WLM_POLICY.
553*5113495bSYour Name  * @user_level: user bus bandwidth vote. valid for BBM_USER_POLICY.
554*5113495bSYour Name  * @set: set or reset user level. valid for BBM_USER_POLICY.
555*5113495bSYour Name  * @usr: user specific info
556*5113495bSYour Name  */
557*5113495bSYour Name union bbm_policy_info {
558*5113495bSYour Name 	enum QDF_GLOBAL_MODE driver_mode;
559*5113495bSYour Name 	enum bbm_non_per_flag flag;
560*5113495bSYour Name 	enum tput_level tput_level;
561*5113495bSYour Name 	enum wlm_ll_level wlm_level;
562*5113495bSYour Name 	struct {
563*5113495bSYour Name 		enum bus_bw_level user_level;
564*5113495bSYour Name 		bool set;
565*5113495bSYour Name 	} usr;
566*5113495bSYour Name };
567*5113495bSYour Name 
568*5113495bSYour Name /**
569*5113495bSYour Name  * struct bbm_params: BBM params
570*5113495bSYour Name  *
571*5113495bSYour Name  * @policy: BBM policy
572*5113495bSYour Name  * @policy_info: policy related info
573*5113495bSYour Name  */
574*5113495bSYour Name struct bbm_params {
575*5113495bSYour Name 	enum bbm_policy policy;
576*5113495bSYour Name 	union bbm_policy_info policy_info;
577*5113495bSYour Name };
578*5113495bSYour Name 
579*5113495bSYour Name /**
580*5113495bSYour Name  * union wlan_tp_data: union of TCP msg for Tx and Rx Dir
581*5113495bSYour Name  * @tx_tp_data: msg to TCP for Tx Dir
582*5113495bSYour Name  * @rx_tp_data: msg to TCP for Rx Dir
583*5113495bSYour Name  */
584*5113495bSYour Name union wlan_tp_data {
585*5113495bSYour Name 	struct wlan_tx_tp_data tx_tp_data;
586*5113495bSYour Name 	struct wlan_rx_tp_data rx_tp_data;
587*5113495bSYour Name };
588*5113495bSYour Name 
589*5113495bSYour Name /**
590*5113495bSYour Name  * struct wlan_dp_psoc_callbacks - struct containing callback
591*5113495bSYour Name  * to non-converged driver
592*5113495bSYour Name  * @callback_ctx : Opaque callback context
593*5113495bSYour Name  * @dp_get_netdev_by_vdev_mac: Callback to get netdev from vdev mac address
594*5113495bSYour Name  * @dp_get_tx_flow_low_watermark: Callback to get TX flow low watermark info
595*5113495bSYour Name  * @dp_get_tx_resource: Callback to check tx resources and take action
596*5113495bSYour Name  * @dp_get_tsf_time: Callback to get TSF time
597*5113495bSYour Name  * @dp_tsf_timestamp_rx: Callback to set rx packet timestamp
598*5113495bSYour Name  * @dp_nbuf_push_pkt: Callback to push rx pkt to network
599*5113495bSYour Name  * @dp_rx_napi_gro_flush: OS IF Callback to GRO RX/flush function.
600*5113495bSYour Name  * @dp_rx_thread_napi_gro_flush: OS IF Callback to do gro flush
601*5113495bSYour Name  * @dp_rx_napi_gro_receive: OS IF Callback for GRO RX receive function.
602*5113495bSYour Name  * @dp_lro_rx_cb: OS IF Callback for LRO receive function
603*5113495bSYour Name  * @dp_gro_rx_legacy_get_napi: Callback to get napi in legacy gro case
604*5113495bSYour Name  * @dp_register_rx_offld_flush_cb: OS IF Callback to get rx offld flush cb
605*5113495bSYour Name  * @dp_rx_check_qdisc_configured: OS IF Callback to check if any ingress qdisc
606*5113495bSYour Name  * configured
607*5113495bSYour Name  * @dp_is_gratuitous_arp_unsolicited_na: OS IF Callback to check gratuitous arp
608*5113495bSYour Name  * unsolicited na
609*5113495bSYour Name  * @dp_send_rx_pkt_over_nl: OS IF Callback to send rx pkt over nl
610*5113495bSYour Name  * @dp_disable_rx_ol_for_low_tput: Callback to disable Rx offload in low TPUT
611*5113495bSYour Name  * scenario
612*5113495bSYour Name  * @wlan_dp_sta_get_dot11mode: Callback to get dot11 mode
613*5113495bSYour Name  * @wlan_dp_get_ap_client_count: Callback to get client count connected to AP
614*5113495bSYour Name  * @wlan_dp_sta_ndi_connected: Callback to get NDI connected status
615*5113495bSYour Name  * @dp_any_adapter_connected: Callback to check if any adapter is connected
616*5113495bSYour Name  * @dp_send_svc_nlink_msg: Callback API to send svc nlink message
617*5113495bSYour Name  * @osif_dp_send_tcp_param_update_event: OS IF callback to send TCP param
618*5113495bSYour Name  * @dp_send_mscs_action_frame: Callback to send MSCS action frame
619*5113495bSYour Name  * @dp_pm_qos_add_request: Callback to send add pm qos request
620*5113495bSYour Name  * @dp_pm_qos_remove_request: Callback to send remove pm qos request
621*5113495bSYour Name  * @dp_pm_qos_update_request: Callback to send update pm qos request
622*5113495bSYour Name  * @dp_pld_remove_pm_qos: Callback to send remove pld pm qos request
623*5113495bSYour Name  * @dp_pld_request_pm_qos: Callback to send pld pm qos request
624*5113495bSYour Name  * @dp_pktlog_enable_disable:Callback to set packet log
625*5113495bSYour Name  * @dp_is_roaming_in_progress:Callback to check if roaming is in progress
626*5113495bSYour Name  * @dp_is_ap_active:Callback to check if AP is active
627*5113495bSYour Name  * @dp_napi_apply_throughput_policy:Callback to apply NAPI throughput policy
628*5113495bSYour Name  * @wlan_dp_display_tx_multiq_stats: Callback to display Tx Mulit queue stats
629*5113495bSYour Name  * @wlan_dp_display_netif_queue_history: Callback to display Netif queue
630*5113495bSYour Name  * history
631*5113495bSYour Name  * @osif_dp_process_mic_error: osif callback to process MIC error
632*5113495bSYour Name  * @dp_is_link_adapter: Callback API to check if adapter is link adapter
633*5113495bSYour Name  * @os_if_dp_nud_stats_info: osif callback to print nud stats info
634*5113495bSYour Name  * @dp_get_pause_map: Callback API to get pause map count
635*5113495bSYour Name  * @dp_nud_failure_work: Callback API to handle NUD failuire work
636*5113495bSYour Name  * @link_monitoring_cb: Callback API to handle link speed change
637*5113495bSYour Name  */
638*5113495bSYour Name struct wlan_dp_psoc_callbacks {
639*5113495bSYour Name 	hdd_cb_handle callback_ctx;
640*5113495bSYour Name 
641*5113495bSYour Name 	qdf_netdev_t (*dp_get_netdev_by_vdev_mac)(struct qdf_mac_addr *mac_addr);
642*5113495bSYour Name 	unsigned int (*dp_get_tx_flow_low_watermark)(hdd_cb_handle cb_ctx,
643*5113495bSYour Name 						     qdf_netdev_t netdev);
644*5113495bSYour Name 	void (*dp_get_tx_resource)(uint8_t link_id_id,
645*5113495bSYour Name 				   struct qdf_mac_addr *mac_addr);
646*5113495bSYour Name 	void (*dp_get_tsf_time)(qdf_netdev_t netdev, uint64_t input_time,
647*5113495bSYour Name 				uint64_t *tsf_time);
648*5113495bSYour Name 	void (*dp_tsf_timestamp_rx)(hdd_cb_handle ctx, qdf_nbuf_t nbuf);
649*5113495bSYour Name 
650*5113495bSYour Name 	QDF_STATUS (*dp_nbuf_push_pkt)(qdf_nbuf_t nbuf,
651*5113495bSYour Name 				       enum dp_nbuf_push_type type);
652*5113495bSYour Name 
653*5113495bSYour Name 	QDF_STATUS (*dp_rx_napi_gro_flush)(qdf_napi_struct *napi_to_use,
654*5113495bSYour Name 					   qdf_nbuf_t nbuf,
655*5113495bSYour Name 					   uint8_t *force_flush);
656*5113495bSYour Name 	void
657*5113495bSYour Name 	(*dp_rx_thread_napi_gro_flush)(qdf_napi_struct *napi,
658*5113495bSYour Name 				       enum dp_rx_gro_flush_code flush_code);
659*5113495bSYour Name 	QDF_STATUS (*dp_rx_napi_gro_receive)(qdf_napi_struct *napi_to_use,
660*5113495bSYour Name 					     qdf_nbuf_t nbuf);
661*5113495bSYour Name 
662*5113495bSYour Name 	QDF_STATUS (*dp_lro_rx_cb)(qdf_netdev_t netdev, qdf_nbuf_t nbuf);
663*5113495bSYour Name 
664*5113495bSYour Name 	qdf_napi_struct *(*dp_gro_rx_legacy_get_napi)(qdf_nbuf_t nbuf,
665*5113495bSYour Name 						      bool enable_rx_thread);
666*5113495bSYour Name 
667*5113495bSYour Name 	void (*dp_register_rx_offld_flush_cb)(enum dp_rx_offld_flush_cb type);
668*5113495bSYour Name 
669*5113495bSYour Name 	QDF_STATUS (*dp_rx_check_qdisc_configured)(qdf_netdev_t dev,
670*5113495bSYour Name 						   uint32_t prio);
671*5113495bSYour Name 
672*5113495bSYour Name 	bool (*dp_is_gratuitous_arp_unsolicited_na)(qdf_nbuf_t nbuf);
673*5113495bSYour Name 
674*5113495bSYour Name 	bool (*dp_send_rx_pkt_over_nl)(qdf_netdev_t dev, uint8_t *addr,
675*5113495bSYour Name 				       qdf_nbuf_t nbuf, bool unecrypted);
676*5113495bSYour Name 	bool
677*5113495bSYour Name 	(*wlan_dp_sta_get_dot11mode)(hdd_cb_handle context, qdf_netdev_t netdev,
678*5113495bSYour Name 				     enum qca_wlan_802_11_mode *dot11_mode);
679*5113495bSYour Name 	bool (*wlan_dp_get_ap_client_count)(hdd_cb_handle context,
680*5113495bSYour Name 					    qdf_netdev_t netdev,
681*5113495bSYour Name 					    uint16_t *client_count);
682*5113495bSYour Name 	bool (*wlan_dp_sta_ndi_connected)(hdd_cb_handle context,
683*5113495bSYour Name 					  qdf_netdev_t netdev);
684*5113495bSYour Name 	bool (*dp_any_adapter_connected)(hdd_cb_handle context);
685*5113495bSYour Name 	void (*dp_send_svc_nlink_msg)(int radio, int type, void *data, int len);
686*5113495bSYour Name 
687*5113495bSYour Name 	void
688*5113495bSYour Name 	(*osif_dp_send_tcp_param_update_event)(struct wlan_objmgr_psoc *psoc,
689*5113495bSYour Name 					       union wlan_tp_data *data,
690*5113495bSYour Name 					       uint8_t dir);
691*5113495bSYour Name 	void (*dp_send_mscs_action_frame)(hdd_cb_handle context,
692*5113495bSYour Name 					  qdf_netdev_t netdev);
693*5113495bSYour Name 	void (*dp_pm_qos_add_request)(hdd_cb_handle context);
694*5113495bSYour Name 	void (*dp_pm_qos_remove_request)(hdd_cb_handle context);
695*5113495bSYour Name 	void (*dp_pm_qos_update_request)(hdd_cb_handle context,
696*5113495bSYour Name 					 cpumask_t *mask);
697*5113495bSYour Name 	void (*dp_pld_remove_pm_qos)(hdd_cb_handle context);
698*5113495bSYour Name 	void (*dp_pld_request_pm_qos)(hdd_cb_handle context);
699*5113495bSYour Name 	int (*dp_pktlog_enable_disable)(hdd_cb_handle context,
700*5113495bSYour Name 					bool enable_disable_flag,
701*5113495bSYour Name 					uint8_t user_triggered, int size);
702*5113495bSYour Name 	bool (*dp_is_roaming_in_progress)(hdd_cb_handle context);
703*5113495bSYour Name 	bool (*dp_is_ap_active)(hdd_cb_handle context, qdf_netdev_t netdev);
704*5113495bSYour Name 	void (*dp_disable_rx_ol_for_low_tput)(hdd_cb_handle context,
705*5113495bSYour Name 					      bool disable);
706*5113495bSYour Name 	int (*dp_napi_apply_throughput_policy)(hdd_cb_handle context,
707*5113495bSYour Name 					       uint64_t tx_packets,
708*5113495bSYour Name 					       uint64_t rx_packets);
709*5113495bSYour Name 	void (*wlan_dp_display_tx_multiq_stats)(hdd_cb_handle context,
710*5113495bSYour Name 						qdf_netdev_t netdev);
711*5113495bSYour Name 	void (*wlan_dp_display_netif_queue_history)(hdd_cb_handle context,
712*5113495bSYour Name 				enum qdf_stats_verbosity_level verb_lvl);
713*5113495bSYour Name 	void (*osif_dp_process_mic_error)(struct dp_mic_error_info *info,
714*5113495bSYour Name 					  struct wlan_objmgr_vdev *vdev);
715*5113495bSYour Name 	bool (*dp_is_link_adapter)(hdd_cb_handle context, uint8_t vdev_id);
716*5113495bSYour Name 	void (*os_if_dp_nud_stats_info)(struct wlan_objmgr_vdev *vdev);
717*5113495bSYour Name 	uint32_t (*dp_get_pause_map)(hdd_cb_handle context, qdf_netdev_t dev);
718*5113495bSYour Name 	void (*dp_nud_failure_work)(hdd_cb_handle context, qdf_netdev_t dev);
719*5113495bSYour Name 	void (*link_monitoring_cb)(struct wlan_objmgr_psoc *psoc,
720*5113495bSYour Name 				   uint8_t vdev_id,
721*5113495bSYour Name 				   bool is_link_speed_good);
722*5113495bSYour Name };
723*5113495bSYour Name 
724*5113495bSYour Name /**
725*5113495bSYour Name  * struct wlan_dp_psoc_sb_ops - struct containing callback
726*5113495bSYour Name  * to south bound APIs. callbacks to call traget_if APIs
727*5113495bSYour Name  * @dp_arp_stats_register_event_handler: Callback to register
728*5113495bSYour Name  * arp stas WMI handle
729*5113495bSYour Name  * @dp_arp_stats_unregister_event_handler: Callback to unregister
730*5113495bSYour Name  * arp stas WMI handle
731*5113495bSYour Name  * @dp_get_arp_req_stats: Callback to get arp stats
732*5113495bSYour Name  * @dp_set_arp_req_stats: Callback to  set arp stats
733*5113495bSYour Name  * @arp_request_ctx: ARP request context
734*5113495bSYour Name  * @dp_lro_config_cmd: Callback to  send LRO config command
735*5113495bSYour Name  * @dp_send_dhcp_ind: Callback to send DHCP indication
736*5113495bSYour Name  */
737*5113495bSYour Name struct wlan_dp_psoc_sb_ops {
738*5113495bSYour Name 	/*TODO to add target if TX ops*/
739*5113495bSYour Name 	QDF_STATUS (*dp_arp_stats_register_event_handler)(struct wlan_objmgr_psoc *psoc);
740*5113495bSYour Name 	QDF_STATUS (*dp_arp_stats_unregister_event_handler)(struct wlan_objmgr_psoc *psoc);
741*5113495bSYour Name 	QDF_STATUS (*dp_get_arp_req_stats)(struct wlan_objmgr_psoc *psoc,
742*5113495bSYour Name 					   struct dp_get_arp_stats_params *req_buf);
743*5113495bSYour Name 	QDF_STATUS (*dp_set_arp_req_stats)(struct wlan_objmgr_psoc *psoc,
744*5113495bSYour Name 					   struct dp_set_arp_stats_params *req_buf);
745*5113495bSYour Name 	void *arp_request_ctx;
746*5113495bSYour Name 	QDF_STATUS (*dp_lro_config_cmd)(struct wlan_objmgr_psoc *psoc,
747*5113495bSYour Name 					struct cdp_lro_hash_config *dp_lro_cmd);
748*5113495bSYour Name 	QDF_STATUS (*dp_send_dhcp_ind)(uint16_t vdev_id,
749*5113495bSYour Name 				       struct dp_dhcp_ind *dhcp_ind);
750*5113495bSYour Name };
751*5113495bSYour Name 
752*5113495bSYour Name /**
753*5113495bSYour Name  * struct wlan_dp_psoc_nb_ops - struct containing callback
754*5113495bSYour Name  * to north bound APIs. callbacks APIs to be called by target_if APIs
755*5113495bSYour Name  * @osif_dp_get_arp_stats_evt: Callback called on receiving arp stats event
756*5113495bSYour Name  */
757*5113495bSYour Name struct wlan_dp_psoc_nb_ops {
758*5113495bSYour Name 	/*TODO to add target if RX ops*/
759*5113495bSYour Name 	void (*osif_dp_get_arp_stats_evt)(struct wlan_objmgr_psoc *psoc,
760*5113495bSYour Name 					  struct dp_rsp_stats *rsp);
761*5113495bSYour Name };
762*5113495bSYour Name 
763*5113495bSYour Name /**
764*5113495bSYour Name  * struct wlan_dp_user_config - DP component user config
765*5113495bSYour Name  * @ipa_enable: IPA enabled/disabled config
766*5113495bSYour Name  * @arp_connectivity_map: ARP connectiviy map
767*5113495bSYour Name  */
768*5113495bSYour Name struct wlan_dp_user_config {
769*5113495bSYour Name 	bool ipa_enable;
770*5113495bSYour Name 	uint32_t arp_connectivity_map;
771*5113495bSYour Name };
772*5113495bSYour Name 
773*5113495bSYour Name /**
774*5113495bSYour Name  * struct dp_traffic_end_indication - Traffic end indication
775*5113495bSYour Name  * @enabled: Feature enabled/disabled config
776*5113495bSYour Name  * @def_dscp: Default DSCP value in regular packets in traffic
777*5113495bSYour Name  * @spl_dscp: Special DSCP value to be used by packet to mark
778*5113495bSYour Name  *            end of data stream
779*5113495bSYour Name  */
780*5113495bSYour Name struct dp_traffic_end_indication {
781*5113495bSYour Name 	bool enabled;
782*5113495bSYour Name 	uint8_t def_dscp;
783*5113495bSYour Name 	uint8_t spl_dscp;
784*5113495bSYour Name };
785*5113495bSYour Name #endif /* end  of _WLAN_DP_PUBLIC_STRUCT_H_ */
786