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