^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #define TRACE_SYSTEM bridge
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #if !defined(_TRACE_BRIDGE_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define _TRACE_BRIDGE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/netdevice.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include "../../../net/bridge/br_private.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) TRACE_EVENT(br_fdb_add,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) TP_PROTO(struct ndmsg *ndm, struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) const unsigned char *addr, u16 vid, u16 nlh_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TP_ARGS(ndm, dev, addr, vid, nlh_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) __field(u8, ndm_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) __string(dev, dev->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) __array(unsigned char, addr, ETH_ALEN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) __field(u16, vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) __field(u16, nlh_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) __assign_str(dev, dev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) memcpy(__entry->addr, addr, ETH_ALEN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) __entry->vid = vid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) __entry->nlh_flags = nlh_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) __entry->ndm_flags = ndm->ndm_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) TP_printk("dev %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u nlh_flags %04x ndm_flags %02x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) __get_str(dev), __entry->addr[0], __entry->addr[1],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) __entry->addr[2], __entry->addr[3], __entry->addr[4],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) __entry->addr[5], __entry->vid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) __entry->nlh_flags, __entry->ndm_flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) TRACE_EVENT(br_fdb_external_learn_add,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) TP_PROTO(struct net_bridge *br, struct net_bridge_port *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) const unsigned char *addr, u16 vid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) TP_ARGS(br, p, addr, vid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) __string(br_dev, br->dev->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) __string(dev, p ? p->dev->name : "null")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) __array(unsigned char, addr, ETH_ALEN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) __field(u16, vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) __assign_str(br_dev, br->dev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) __assign_str(dev, p ? p->dev->name : "null");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) memcpy(__entry->addr, addr, ETH_ALEN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) __entry->vid = vid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) TP_printk("br_dev %s port %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) __get_str(br_dev), __get_str(dev), __entry->addr[0],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) __entry->addr[1], __entry->addr[2], __entry->addr[3],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) __entry->addr[4], __entry->addr[5], __entry->vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) TRACE_EVENT(fdb_delete,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) TP_PROTO(struct net_bridge *br, struct net_bridge_fdb_entry *f),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) TP_ARGS(br, f),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) __string(br_dev, br->dev->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) __string(dev, f->dst ? f->dst->dev->name : "null")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) __array(unsigned char, addr, ETH_ALEN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) __field(u16, vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) __assign_str(br_dev, br->dev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) __assign_str(dev, f->dst ? f->dst->dev->name : "null");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) memcpy(__entry->addr, f->key.addr.addr, ETH_ALEN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) __entry->vid = f->key.vlan_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) TP_printk("br_dev %s dev %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) __get_str(br_dev), __get_str(dev), __entry->addr[0],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) __entry->addr[1], __entry->addr[2], __entry->addr[3],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) __entry->addr[4], __entry->addr[5], __entry->vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) TRACE_EVENT(br_fdb_update,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) TP_PROTO(struct net_bridge *br, struct net_bridge_port *source,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) const unsigned char *addr, u16 vid, unsigned long flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) TP_ARGS(br, source, addr, vid, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) __string(br_dev, br->dev->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) __string(dev, source->dev->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) __array(unsigned char, addr, ETH_ALEN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) __field(u16, vid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __field(unsigned long, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) __assign_str(br_dev, br->dev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) __assign_str(dev, source->dev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) memcpy(__entry->addr, addr, ETH_ALEN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) __entry->vid = vid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) __entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) TP_printk("br_dev %s source %s addr %02x:%02x:%02x:%02x:%02x:%02x vid %u flags 0x%lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) __get_str(br_dev), __get_str(dev), __entry->addr[0],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) __entry->addr[1], __entry->addr[2], __entry->addr[3],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) __entry->addr[4], __entry->addr[5], __entry->vid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) __entry->flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #endif /* _TRACE_BRIDGE_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #include <trace/define_trace.h>