summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2014-02-14 00:05:09 +0000
committeradrian <adrian@FreeBSD.org>2014-02-14 00:05:09 +0000
commit98cb90e3355d231cd6080c3df5d2d9fa3e3be4d7 (patch)
tree3f955eeb026ffbd231de1b2ff8c42933eec5e8b3 /usr.bin/netstat
parent26f5cbe9dc787bbdd5932d810e3db454f41ebb44 (diff)
downloadFreeBSD-src-98cb90e3355d231cd6080c3df5d2d9fa3e3be4d7.zip
FreeBSD-src-98cb90e3355d231cd6080c3df5d2d9fa3e3be4d7.tar.gz
Don't insert a flowtable entry if the lle isn't yet valid.
Some of the collisions that are occuring are due to flowtable lookups that succeed but have an invalid lle - typically because the L2 adjacency lookup hasn't completed. This would lead to a follow-up insert which would then fail (ie, collision) and the code would fall through to doing a slow-path L2/L3 lookup in the netinet/netinet6 code. This patch simply aborts storing a new flowtable entry if the lle isn't yet valid. Whilst I'm here, add a new pcpu counter for the item so the number of failures can be tracked separately from generic "collisions." Reviewed by: glebius MFC after: 10 days Sponsored by: Netflix, Inc.
Diffstat (limited to 'usr.bin/netstat')
-rw-r--r--usr.bin/netstat/flowtable.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/usr.bin/netstat/flowtable.c b/usr.bin/netstat/flowtable.c
index 715d343..2392a1e 100644
--- a/usr.bin/netstat/flowtable.c
+++ b/usr.bin/netstat/flowtable.c
@@ -55,6 +55,7 @@ print_stats(struct flowtable_stat *stat)
p(ft_collisions, "\t%ju collision%s\n");
p(ft_free_checks, "\t%ju free check%s\n");
p(ft_frees, "\t%ju free%s\n");
+ p(ft_fail_lle_invalid, "\t%ju lookups w/ no resolved ARP%s\n");
#undef p2
#undef p
OpenPOWER on IntegriCloud