diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2008-01-13 00:23:17 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:01:56 -0500 |
commit | 66a2f7fd2fddee1ddc5d1d286cd832e50a97258e (patch) | |
tree | 5ed7bfa39716de4b1724873c1c797ed696ee0253 /net/ipv4/fib_trie.c | |
parent | a6db9010922f2c02db2bbea8c17c50e451be38d9 (diff) |
[IPV4] fib_trie: Add statistics.
The FIB TRIE code has a bunch of statistics, but the code is hidden
behind an ifdef that was never implemented. Since it was dead code, it
was broken as well.
This patch fixes that by making it a config option.
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_trie.c')
-rw-r--r-- | net/ipv4/fib_trie.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index e047de6873bd..2075eea7eea7 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -82,7 +82,6 @@ | |||
82 | #include <net/ip_fib.h> | 82 | #include <net/ip_fib.h> |
83 | #include "fib_lookup.h" | 83 | #include "fib_lookup.h" |
84 | 84 | ||
85 | #undef CONFIG_IP_FIB_TRIE_STATS | ||
86 | #define MAX_STAT_DEPTH 32 | 85 | #define MAX_STAT_DEPTH 32 |
87 | 86 | ||
88 | #define KEYLENGTH (8*sizeof(t_key)) | 87 | #define KEYLENGTH (8*sizeof(t_key)) |
@@ -2119,20 +2118,22 @@ static void trie_show_stats(struct seq_file *seq, struct trie_stat *stat) | |||
2119 | bytes += sizeof(struct node *) * pointers; | 2118 | bytes += sizeof(struct node *) * pointers; |
2120 | seq_printf(seq, "Null ptrs: %u\n", stat->nullpointers); | 2119 | seq_printf(seq, "Null ptrs: %u\n", stat->nullpointers); |
2121 | seq_printf(seq, "Total size: %u kB\n", (bytes + 1023) / 1024); | 2120 | seq_printf(seq, "Total size: %u kB\n", (bytes + 1023) / 1024); |
2121 | } | ||
2122 | 2122 | ||
2123 | #ifdef CONFIG_IP_FIB_TRIE_STATS | 2123 | #ifdef CONFIG_IP_FIB_TRIE_STATS |
2124 | seq_printf(seq, "Counters:\n---------\n"); | 2124 | static void trie_show_usage(struct seq_file *seq, |
2125 | seq_printf(seq,"gets = %d\n", t->stats.gets); | 2125 | const struct trie_use_stats *stats) |
2126 | seq_printf(seq,"backtracks = %d\n", t->stats.backtrack); | 2126 | { |
2127 | seq_printf(seq,"semantic match passed = %d\n", t->stats.semantic_match_passed); | 2127 | seq_printf(seq, "\nCounters:\n---------\n"); |
2128 | seq_printf(seq,"semantic match miss = %d\n", t->stats.semantic_match_miss); | 2128 | seq_printf(seq,"gets = %u\n", stats->gets); |
2129 | seq_printf(seq,"null node hit= %d\n", t->stats.null_node_hit); | 2129 | seq_printf(seq,"backtracks = %u\n", stats->backtrack); |
2130 | seq_printf(seq,"skipped node resize = %d\n", t->stats.resize_node_skipped); | 2130 | seq_printf(seq,"semantic match passed = %u\n", stats->semantic_match_passed); |
2131 | #ifdef CLEAR_STATS | 2131 | seq_printf(seq,"semantic match miss = %u\n", stats->semantic_match_miss); |
2132 | memset(&(t->stats), 0, sizeof(t->stats)); | 2132 | seq_printf(seq,"null node hit= %u\n", stats->null_node_hit); |
2133 | #endif | 2133 | seq_printf(seq,"skipped node resize = %u\n\n", stats->resize_node_skipped); |
2134 | #endif /* CONFIG_IP_FIB_TRIE_STATS */ | ||
2135 | } | 2134 | } |
2135 | #endif /* CONFIG_IP_FIB_TRIE_STATS */ | ||
2136 | |||
2136 | 2137 | ||
2137 | static int fib_triestat_seq_show(struct seq_file *seq, void *v) | 2138 | static int fib_triestat_seq_show(struct seq_file *seq, void *v) |
2138 | { | 2139 | { |
@@ -2163,12 +2164,18 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v) | |||
2163 | seq_printf(seq, "Local:\n"); | 2164 | seq_printf(seq, "Local:\n"); |
2164 | trie_collect_stats(trie_local, stat); | 2165 | trie_collect_stats(trie_local, stat); |
2165 | trie_show_stats(seq, stat); | 2166 | trie_show_stats(seq, stat); |
2167 | #ifdef CONFIG_IP_FIB_TRIE_STATS | ||
2168 | trie_show_usage(seq, &trie_local->stats); | ||
2169 | #endif | ||
2166 | } | 2170 | } |
2167 | 2171 | ||
2168 | if (trie_main) { | 2172 | if (trie_main) { |
2169 | seq_printf(seq, "Main:\n"); | 2173 | seq_printf(seq, "Main:\n"); |
2170 | trie_collect_stats(trie_main, stat); | 2174 | trie_collect_stats(trie_main, stat); |
2171 | trie_show_stats(seq, stat); | 2175 | trie_show_stats(seq, stat); |
2176 | #ifdef CONFIG_IP_FIB_TRIE_STATS | ||
2177 | trie_show_usage(seq, &trie_main->stats); | ||
2178 | #endif | ||
2172 | } | 2179 | } |
2173 | kfree(stat); | 2180 | kfree(stat); |
2174 | 2181 | ||