xref: /linux/drivers/net/dsa/mv88e6xxx/trace.h (revision 8646384d80f3d3b4a66b3284dbbd8232d1b8799e)
1*8646384dSVladimir Oltean /* SPDX-License-Identifier: GPL-2.0-or-later */
2*8646384dSVladimir Oltean /* Copyright 2022 NXP
3*8646384dSVladimir Oltean  */
4*8646384dSVladimir Oltean 
5*8646384dSVladimir Oltean #undef TRACE_SYSTEM
6*8646384dSVladimir Oltean #define TRACE_SYSTEM	mv88e6xxx
7*8646384dSVladimir Oltean 
8*8646384dSVladimir Oltean #if !defined(_MV88E6XXX_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
9*8646384dSVladimir Oltean #define _MV88E6XXX_TRACE_H
10*8646384dSVladimir Oltean 
11*8646384dSVladimir Oltean #include <linux/device.h>
12*8646384dSVladimir Oltean #include <linux/if_ether.h>
13*8646384dSVladimir Oltean #include <linux/tracepoint.h>
14*8646384dSVladimir Oltean 
15*8646384dSVladimir Oltean DECLARE_EVENT_CLASS(mv88e6xxx_atu_violation,
16*8646384dSVladimir Oltean 
17*8646384dSVladimir Oltean 	TP_PROTO(const struct device *dev, int spid, u16 portvec,
18*8646384dSVladimir Oltean 		 const unsigned char *addr, u16 fid),
19*8646384dSVladimir Oltean 
20*8646384dSVladimir Oltean 	TP_ARGS(dev, spid, portvec, addr, fid),
21*8646384dSVladimir Oltean 
22*8646384dSVladimir Oltean 	TP_STRUCT__entry(
23*8646384dSVladimir Oltean 		__string(name, dev_name(dev))
24*8646384dSVladimir Oltean 		__field(int, spid)
25*8646384dSVladimir Oltean 		__field(u16, portvec)
26*8646384dSVladimir Oltean 		__array(unsigned char, addr, ETH_ALEN)
27*8646384dSVladimir Oltean 		__field(u16, fid)
28*8646384dSVladimir Oltean 	),
29*8646384dSVladimir Oltean 
30*8646384dSVladimir Oltean 	TP_fast_assign(
31*8646384dSVladimir Oltean 		__assign_str(name, dev_name(dev));
32*8646384dSVladimir Oltean 		__entry->spid = spid;
33*8646384dSVladimir Oltean 		__entry->portvec = portvec;
34*8646384dSVladimir Oltean 		memcpy(__entry->addr, addr, ETH_ALEN);
35*8646384dSVladimir Oltean 		__entry->fid = fid;
36*8646384dSVladimir Oltean 	),
37*8646384dSVladimir Oltean 
38*8646384dSVladimir Oltean 	TP_printk("dev %s spid %d portvec 0x%x addr %pM fid %u",
39*8646384dSVladimir Oltean 		  __get_str(name), __entry->spid, __entry->portvec,
40*8646384dSVladimir Oltean 		  __entry->addr, __entry->fid)
41*8646384dSVladimir Oltean );
42*8646384dSVladimir Oltean 
43*8646384dSVladimir Oltean DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_member_violation,
44*8646384dSVladimir Oltean 	     TP_PROTO(const struct device *dev, int spid, u16 portvec,
45*8646384dSVladimir Oltean 		      const unsigned char *addr, u16 fid),
46*8646384dSVladimir Oltean 	     TP_ARGS(dev, spid, portvec, addr, fid));
47*8646384dSVladimir Oltean 
48*8646384dSVladimir Oltean DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_miss_violation,
49*8646384dSVladimir Oltean 	     TP_PROTO(const struct device *dev, int spid, u16 portvec,
50*8646384dSVladimir Oltean 		      const unsigned char *addr, u16 fid),
51*8646384dSVladimir Oltean 	     TP_ARGS(dev, spid, portvec, addr, fid));
52*8646384dSVladimir Oltean 
53*8646384dSVladimir Oltean DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_full_violation,
54*8646384dSVladimir Oltean 	     TP_PROTO(const struct device *dev, int spid, u16 portvec,
55*8646384dSVladimir Oltean 		      const unsigned char *addr, u16 fid),
56*8646384dSVladimir Oltean 	     TP_ARGS(dev, spid, portvec, addr, fid));
57*8646384dSVladimir Oltean 
58*8646384dSVladimir Oltean #endif /* _MV88E6XXX_TRACE_H */
59*8646384dSVladimir Oltean 
60*8646384dSVladimir Oltean /* We don't want to use include/trace/events */
61*8646384dSVladimir Oltean #undef TRACE_INCLUDE_PATH
62*8646384dSVladimir Oltean #define TRACE_INCLUDE_PATH .
63*8646384dSVladimir Oltean #undef TRACE_INCLUDE_FILE
64*8646384dSVladimir Oltean #define TRACE_INCLUDE_FILE	trace
65*8646384dSVladimir Oltean /* This part must be outside protection */
66*8646384dSVladimir Oltean #include <trace/define_trace.h>
67