neighbor: Add tracepoint to __neigh_create
Add tracepoint to __neigh_create to enable debugging of new entries. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a92a0a7b8e
commit
fc651001d2
|
@ -20,6 +20,55 @@
|
||||||
{ NUD_NOARP, "noarp" }, \
|
{ NUD_NOARP, "noarp" }, \
|
||||||
{ NUD_PERMANENT, "permanent"})
|
{ NUD_PERMANENT, "permanent"})
|
||||||
|
|
||||||
|
TRACE_EVENT(neigh_create,
|
||||||
|
|
||||||
|
TP_PROTO(struct neigh_table *tbl, struct net_device *dev,
|
||||||
|
const void *pkey, const struct neighbour *n,
|
||||||
|
bool exempt_from_gc),
|
||||||
|
|
||||||
|
TP_ARGS(tbl, dev, pkey, n, exempt_from_gc),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(u32, family)
|
||||||
|
__dynamic_array(char, dev, IFNAMSIZ )
|
||||||
|
__field(int, entries)
|
||||||
|
__field(u8, created)
|
||||||
|
__field(u8, gc_exempt)
|
||||||
|
__array(u8, primary_key4, 4)
|
||||||
|
__array(u8, primary_key6, 16)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
struct in6_addr *pin6;
|
||||||
|
__be32 *p32;
|
||||||
|
|
||||||
|
__entry->family = tbl->family;
|
||||||
|
__assign_str(dev, (dev ? dev->name : "NULL"));
|
||||||
|
__entry->entries = atomic_read(&tbl->gc_entries);
|
||||||
|
__entry->created = n != NULL;
|
||||||
|
__entry->gc_exempt = exempt_from_gc;
|
||||||
|
pin6 = (struct in6_addr *)__entry->primary_key6;
|
||||||
|
p32 = (__be32 *)__entry->primary_key4;
|
||||||
|
|
||||||
|
if (tbl->family == AF_INET)
|
||||||
|
*p32 = *(__be32 *)pkey;
|
||||||
|
else
|
||||||
|
*p32 = 0;
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_IPV6)
|
||||||
|
if (tbl->family == AF_INET6) {
|
||||||
|
pin6 = (struct in6_addr *)__entry->primary_key6;
|
||||||
|
*pin6 = *(struct in6_addr *)pkey;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk("family %d dev %s entries %d primary_key4 %pI4 primary_key6 %pI6c created %d gc_exempt %d",
|
||||||
|
__entry->family, __get_str(dev), __entry->entries,
|
||||||
|
__entry->primary_key4, __entry->primary_key6,
|
||||||
|
__entry->created, __entry->gc_exempt)
|
||||||
|
);
|
||||||
|
|
||||||
TRACE_EVENT(neigh_update,
|
TRACE_EVENT(neigh_update,
|
||||||
|
|
||||||
TP_PROTO(struct neighbour *n, const u8 *lladdr, u8 new,
|
TP_PROTO(struct neighbour *n, const u8 *lladdr, u8 new,
|
||||||
|
|
|
@ -587,6 +587,8 @@ static struct neighbour *___neigh_create(struct neigh_table *tbl,
|
||||||
int error;
|
int error;
|
||||||
struct neigh_hash_table *nht;
|
struct neigh_hash_table *nht;
|
||||||
|
|
||||||
|
trace_neigh_create(tbl, dev, pkey, n, exempt_from_gc);
|
||||||
|
|
||||||
if (!n) {
|
if (!n) {
|
||||||
rc = ERR_PTR(-ENOBUFS);
|
rc = ERR_PTR(-ENOBUFS);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in New Issue