Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78779
b: refs/heads/master
c: 66a2f7f
h: refs/heads/master
i:
  78777: 8417f81
  78775: 2c5aac9
v: v3
  • Loading branch information
Stephen Hemminger authored and David S. Miller committed Jan 28, 2008
1 parent 4e3e502 commit d2b68f3
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a6db9010922f2c02db2bbea8c17c50e451be38d9
refs/heads/master: 66a2f7fd2fddee1ddc5d1d286cd832e50a97258e
7 changes: 7 additions & 0 deletions trunk/net/ipv4/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,13 @@ endchoice
config IP_FIB_HASH
def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER

config IP_FIB_TRIE_STATS
bool "FIB TRIE statistics"
depends on IP_FIB_TRIE
---help---
Keep track of statistics on structure of FIB TRIE table.
Useful for testing and measuring TRIE performance.

config IP_MULTIPLE_TABLES
bool "IP: policy routing"
depends on IP_ADVANCED_ROUTER
Expand Down
31 changes: 19 additions & 12 deletions trunk/net/ipv4/fib_trie.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@
#include <net/ip_fib.h>
#include "fib_lookup.h"

#undef CONFIG_IP_FIB_TRIE_STATS
#define MAX_STAT_DEPTH 32

#define KEYLENGTH (8*sizeof(t_key))
Expand Down Expand Up @@ -2119,20 +2118,22 @@ static void trie_show_stats(struct seq_file *seq, struct trie_stat *stat)
bytes += sizeof(struct node *) * pointers;
seq_printf(seq, "Null ptrs: %u\n", stat->nullpointers);
seq_printf(seq, "Total size: %u kB\n", (bytes + 1023) / 1024);
}

#ifdef CONFIG_IP_FIB_TRIE_STATS
seq_printf(seq, "Counters:\n---------\n");
seq_printf(seq,"gets = %d\n", t->stats.gets);
seq_printf(seq,"backtracks = %d\n", t->stats.backtrack);
seq_printf(seq,"semantic match passed = %d\n", t->stats.semantic_match_passed);
seq_printf(seq,"semantic match miss = %d\n", t->stats.semantic_match_miss);
seq_printf(seq,"null node hit= %d\n", t->stats.null_node_hit);
seq_printf(seq,"skipped node resize = %d\n", t->stats.resize_node_skipped);
#ifdef CLEAR_STATS
memset(&(t->stats), 0, sizeof(t->stats));
#endif
#endif /* CONFIG_IP_FIB_TRIE_STATS */
static void trie_show_usage(struct seq_file *seq,
const struct trie_use_stats *stats)
{
seq_printf(seq, "\nCounters:\n---------\n");
seq_printf(seq,"gets = %u\n", stats->gets);
seq_printf(seq,"backtracks = %u\n", stats->backtrack);
seq_printf(seq,"semantic match passed = %u\n", stats->semantic_match_passed);
seq_printf(seq,"semantic match miss = %u\n", stats->semantic_match_miss);
seq_printf(seq,"null node hit= %u\n", stats->null_node_hit);
seq_printf(seq,"skipped node resize = %u\n\n", stats->resize_node_skipped);
}
#endif /* CONFIG_IP_FIB_TRIE_STATS */


static int fib_triestat_seq_show(struct seq_file *seq, void *v)
{
Expand Down Expand Up @@ -2163,12 +2164,18 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v)
seq_printf(seq, "Local:\n");
trie_collect_stats(trie_local, stat);
trie_show_stats(seq, stat);
#ifdef CONFIG_IP_FIB_TRIE_STATS
trie_show_usage(seq, &trie_local->stats);
#endif
}

if (trie_main) {
seq_printf(seq, "Main:\n");
trie_collect_stats(trie_main, stat);
trie_show_stats(seq, stat);
#ifdef CONFIG_IP_FIB_TRIE_STATS
trie_show_usage(seq, &trie_main->stats);
#endif
}
kfree(stat);

Expand Down

0 comments on commit d2b68f3

Please sign in to comment.