1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* Copyright 2022 NXP |
3 | */ |
4 | |
5 | #undef TRACE_SYSTEM |
6 | #define TRACE_SYSTEM mv88e6xxx |
7 | |
8 | #if !defined(_MV88E6XXX_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) |
9 | #define _MV88E6XXX_TRACE_H |
10 | |
11 | #include <linux/device.h> |
12 | #include <linux/if_ether.h> |
13 | #include <linux/tracepoint.h> |
14 | |
15 | DECLARE_EVENT_CLASS(mv88e6xxx_atu_violation, |
16 | |
17 | TP_PROTO(const struct device *dev, int spid, u16 portvec, |
18 | const unsigned char *addr, u16 fid), |
19 | |
20 | TP_ARGS(dev, spid, portvec, addr, fid), |
21 | |
22 | TP_STRUCT__entry( |
23 | __string(name, dev_name(dev)) |
24 | __field(int, spid) |
25 | __field(u16, portvec) |
26 | __array(unsigned char, addr, ETH_ALEN) |
27 | __field(u16, fid) |
28 | ), |
29 | |
30 | TP_fast_assign( |
31 | __assign_str(name, dev_name(dev)); |
32 | __entry->spid = spid; |
33 | __entry->portvec = portvec; |
34 | memcpy(__entry->addr, addr, ETH_ALEN); |
35 | __entry->fid = fid; |
36 | ), |
37 | |
38 | TP_printk("dev %s spid %d portvec 0x%x addr %pM fid %u" , |
39 | __get_str(name), __entry->spid, __entry->portvec, |
40 | __entry->addr, __entry->fid) |
41 | ); |
42 | |
43 | DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_member_violation, |
44 | TP_PROTO(const struct device *dev, int spid, u16 portvec, |
45 | const unsigned char *addr, u16 fid), |
46 | TP_ARGS(dev, spid, portvec, addr, fid)); |
47 | |
48 | DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_miss_violation, |
49 | TP_PROTO(const struct device *dev, int spid, u16 portvec, |
50 | const unsigned char *addr, u16 fid), |
51 | TP_ARGS(dev, spid, portvec, addr, fid)); |
52 | |
53 | DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_full_violation, |
54 | TP_PROTO(const struct device *dev, int spid, u16 portvec, |
55 | const unsigned char *addr, u16 fid), |
56 | TP_ARGS(dev, spid, portvec, addr, fid)); |
57 | |
58 | DECLARE_EVENT_CLASS(mv88e6xxx_vtu_violation, |
59 | |
60 | TP_PROTO(const struct device *dev, int spid, u16 vid), |
61 | |
62 | TP_ARGS(dev, spid, vid), |
63 | |
64 | TP_STRUCT__entry( |
65 | __string(name, dev_name(dev)) |
66 | __field(int, spid) |
67 | __field(u16, vid) |
68 | ), |
69 | |
70 | TP_fast_assign( |
71 | __assign_str(name, dev_name(dev)); |
72 | __entry->spid = spid; |
73 | __entry->vid = vid; |
74 | ), |
75 | |
76 | TP_printk("dev %s spid %d vid %u" , |
77 | __get_str(name), __entry->spid, __entry->vid) |
78 | ); |
79 | |
80 | DEFINE_EVENT(mv88e6xxx_vtu_violation, mv88e6xxx_vtu_member_violation, |
81 | TP_PROTO(const struct device *dev, int spid, u16 vid), |
82 | TP_ARGS(dev, spid, vid)); |
83 | |
84 | DEFINE_EVENT(mv88e6xxx_vtu_violation, mv88e6xxx_vtu_miss_violation, |
85 | TP_PROTO(const struct device *dev, int spid, u16 vid), |
86 | TP_ARGS(dev, spid, vid)); |
87 | |
88 | #endif /* _MV88E6XXX_TRACE_H */ |
89 | |
90 | /* We don't want to use include/trace/events */ |
91 | #undef TRACE_INCLUDE_PATH |
92 | #define TRACE_INCLUDE_PATH . |
93 | #undef TRACE_INCLUDE_FILE |
94 | #define TRACE_INCLUDE_FILE trace |
95 | /* This part must be outside protection */ |
96 | #include <trace/define_trace.h> |
97 | |