Index: sys/net/if_ethersubr.c =================================================================== --- sys/net/if_ethersubr.c +++ sys/net/if_ethersubr.c @@ -323,6 +323,7 @@ phdr = lle->r_linkdata; hlen = lle->r_hdrlen; pflags = lle->r_flags; + atomic_add_long(&lle->lle_cache_hits, 1); } } } Index: sys/net/if_llatbl.h =================================================================== --- sys/net/if_llatbl.h +++ sys/net/if_llatbl.h @@ -88,6 +88,8 @@ struct rwlock lle_lock; struct mtx req_mtx; struct epoch_context lle_epoch_ctx; + uint64_t lle_lookup_count; + uint64_t lle_cache_hits; }; #define LLE_WLOCK(lle) rw_wlock(&(lle)->lle_lock) Index: sys/netinet/in.c =================================================================== --- sys/netinet/in.c +++ sys/netinet/in.c @@ -1578,6 +1578,7 @@ lle = in_lltable_find_dst(llt, sin->sin_addr); if (lle == NULL) return (NULL); + atomic_add_long(&lle->lle_lookup_count, 1); if (flags & LLE_UNLOCKED) return (lle); Index: sys/netinet6/in6.c =================================================================== --- sys/netinet6/in6.c +++ sys/netinet6/in6.c @@ -2341,6 +2341,7 @@ if (lle == NULL) return (NULL); + atomic_add_long(&lle->lle_lookup_count, 1); if (flags & LLE_UNLOCKED) return (lle);