xref: /wlan-driver/qca-wifi-host-cmn/dp/wifi3.0/monitor/1.0/dp_mon_1.0.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name #ifndef _DP_MON_1_0_H_
19*5113495bSYour Name #define _DP_MON_1_0_H_
20*5113495bSYour Name 
21*5113495bSYour Name #ifdef WLAN_RX_PKT_CAPTURE_ENH
22*5113495bSYour Name #include <dp_rx_mon_feature.h>
23*5113495bSYour Name #endif
24*5113495bSYour Name 
25*5113495bSYour Name #include <dp_rx_mon.h>
26*5113495bSYour Name 
27*5113495bSYour Name void dp_flush_monitor_rings(struct dp_soc *soc);
28*5113495bSYour Name 
29*5113495bSYour Name #if !defined(DISABLE_MON_CONFIG)
30*5113495bSYour Name /**
31*5113495bSYour Name  * dp_mon_htt_srng_setup_1_0() - Prepare HTT messages for Monitor rings
32*5113495bSYour Name  * @soc: soc handle
33*5113495bSYour Name  * @pdev: physical device handle
34*5113495bSYour Name  * @mac_id: ring number
35*5113495bSYour Name  * @mac_for_pdev: mac_id
36*5113495bSYour Name  *
37*5113495bSYour Name  * Return: non-zero for failure, zero for success
38*5113495bSYour Name  */
39*5113495bSYour Name QDF_STATUS dp_mon_htt_srng_setup_1_0(struct dp_soc *soc,
40*5113495bSYour Name 				     struct dp_pdev *pdev,
41*5113495bSYour Name 				     int mac_id,
42*5113495bSYour Name 				     int mac_for_pdev);
43*5113495bSYour Name 
44*5113495bSYour Name /**
45*5113495bSYour Name  * dp_mon_rings_alloc_1_0() - DP monitor rings allocation
46*5113495bSYour Name  * @pdev: physical device handle
47*5113495bSYour Name  *
48*5113495bSYour Name  * Return: non-zero for failure, zero for success
49*5113495bSYour Name  */
50*5113495bSYour Name QDF_STATUS dp_mon_rings_alloc_1_0(struct dp_pdev *pdev);
51*5113495bSYour Name 
52*5113495bSYour Name /**
53*5113495bSYour Name  * dp_mon_rings_free_1_0() - DP monitor rings deallocation
54*5113495bSYour Name  * @pdev: physical device handle
55*5113495bSYour Name  *
56*5113495bSYour Name  * Return: non-zero for failure, zero for success
57*5113495bSYour Name  */
58*5113495bSYour Name void dp_mon_rings_free_1_0(struct dp_pdev *pdev);
59*5113495bSYour Name 
60*5113495bSYour Name /**
61*5113495bSYour Name  * dp_mon_rings_init_1_0() - DP monitor rings initialization
62*5113495bSYour Name  * @pdev: physical device handle
63*5113495bSYour Name  *
64*5113495bSYour Name  * Return: non-zero for failure, zero for success
65*5113495bSYour Name  */
66*5113495bSYour Name QDF_STATUS dp_mon_rings_init_1_0(struct dp_pdev *pdev);
67*5113495bSYour Name 
68*5113495bSYour Name /**
69*5113495bSYour Name  * dp_mon_rings_deinit_1_0() - DP monitor rings deinitialization
70*5113495bSYour Name  * @pdev: physical device handle
71*5113495bSYour Name  *
72*5113495bSYour Name  * Return: non-zero for failure, zero for success
73*5113495bSYour Name  */
74*5113495bSYour Name void dp_mon_rings_deinit_1_0(struct dp_pdev *pdev);
75*5113495bSYour Name #else
76*5113495bSYour Name static inline
dp_mon_rings_deinit_1_0(struct dp_pdev * pdev)77*5113495bSYour Name void dp_mon_rings_deinit_1_0(struct dp_pdev *pdev)
78*5113495bSYour Name {
79*5113495bSYour Name }
80*5113495bSYour Name 
81*5113495bSYour Name static inline
dp_mon_rings_free_1_0(struct dp_pdev * pdev)82*5113495bSYour Name void dp_mon_rings_free_1_0(struct dp_pdev *pdev)
83*5113495bSYour Name {
84*5113495bSYour Name }
85*5113495bSYour Name 
86*5113495bSYour Name static inline
dp_mon_rings_init_1_0(struct dp_pdev * pdev)87*5113495bSYour Name QDF_STATUS dp_mon_rings_init_1_0(struct dp_pdev *pdev)
88*5113495bSYour Name {
89*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
90*5113495bSYour Name }
91*5113495bSYour Name 
92*5113495bSYour Name static inline
dp_mon_rings_alloc_1_0(struct dp_pdev * pdev)93*5113495bSYour Name QDF_STATUS dp_mon_rings_alloc_1_0(struct dp_pdev *pdev)
94*5113495bSYour Name {
95*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
96*5113495bSYour Name }
97*5113495bSYour Name 
98*5113495bSYour Name #endif
99*5113495bSYour Name 
100*5113495bSYour Name /* MCL specific functions */
101*5113495bSYour Name #if defined(DP_CON_MON)
102*5113495bSYour Name 
103*5113495bSYour Name /*
104*5113495bSYour Name  * dp_service_mon_rings()- service monitor rings
105*5113495bSYour Name  * @soc: soc dp handle
106*5113495bSYour Name  * @quota: number of ring entry that can be serviced
107*5113495bSYour Name  *
108*5113495bSYour Name  * Return: None
109*5113495bSYour Name  *
110*5113495bSYour Name  */
111*5113495bSYour Name void dp_service_mon_rings(struct  dp_soc *soc, uint32_t quota);
112*5113495bSYour Name #endif
113*5113495bSYour Name 
114*5113495bSYour Name /**
115*5113495bSYour Name  * dp_mon_drop_packets_for_mac() - Drop the mon status ring and
116*5113495bSYour Name  *  dest ring packets for a given mac. Packets in status ring and
117*5113495bSYour Name  *  dest ring are dropped independently.
118*5113495bSYour Name  * @pdev: DP pdev
119*5113495bSYour Name  * @mac_id: mac id
120*5113495bSYour Name  * @quota: max number of status ring entries that can be processed
121*5113495bSYour Name  * @force_flush: Force flush ring
122*5113495bSYour Name  *
123*5113495bSYour Name  * Return: work done
124*5113495bSYour Name  */
125*5113495bSYour Name uint32_t dp_mon_drop_packets_for_mac(struct dp_pdev *pdev, uint32_t mac_id,
126*5113495bSYour Name 				     uint32_t quota, bool force_flush);
127*5113495bSYour Name 
128*5113495bSYour Name /**
129*5113495bSYour Name  * struct dp_mon_soc_li - Extended DP mon soc for LI targets
130*5113495bSYour Name  * @mon_soc: dp_mon_soc structure
131*5113495bSYour Name  */
132*5113495bSYour Name struct dp_mon_soc_li {
133*5113495bSYour Name 	struct dp_mon_soc mon_soc;
134*5113495bSYour Name };
135*5113495bSYour Name 
136*5113495bSYour Name /**
137*5113495bSYour Name  * struct dp_mon_pdev_li - Extended DP mon pdev for LI targets
138*5113495bSYour Name  * @mon_pdev: dp_mon_pdev structure
139*5113495bSYour Name  */
140*5113495bSYour Name struct dp_mon_pdev_li {
141*5113495bSYour Name 	struct dp_mon_pdev mon_pdev;
142*5113495bSYour Name };
143*5113495bSYour Name 
144*5113495bSYour Name /**
145*5113495bSYour Name  * dp_mon_get_context_size_li() - get LI specific size for mon pdev/soc
146*5113495bSYour Name  * @context_type: context type for which the size is needed
147*5113495bSYour Name  *
148*5113495bSYour Name  * Return: size in bytes for the context_type
149*5113495bSYour Name  */
150*5113495bSYour Name static inline
dp_mon_get_context_size_li(enum dp_context_type context_type)151*5113495bSYour Name qdf_size_t dp_mon_get_context_size_li(enum dp_context_type context_type)
152*5113495bSYour Name {
153*5113495bSYour Name 	switch (context_type) {
154*5113495bSYour Name 	case DP_CONTEXT_TYPE_MON_PDEV:
155*5113495bSYour Name 		return sizeof(struct dp_mon_pdev_li);
156*5113495bSYour Name 	case DP_CONTEXT_TYPE_MON_SOC:
157*5113495bSYour Name 		return sizeof(struct dp_mon_soc_li);
158*5113495bSYour Name 	default:
159*5113495bSYour Name 		return 0;
160*5113495bSYour Name 	}
161*5113495bSYour Name }
162*5113495bSYour Name #endif /* _DP_MON_1_0_H_ */
163