Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
MTRIE Optimisations 2
[vpp.git]
/
src
/
vnet
/
fib
/
ip6_fib.c
diff --git
a/src/vnet/fib/ip6_fib.c
b/src/vnet/fib/ip6_fib.c
index
343ff55
..
0ee029d
100644
(file)
--- a/
src/vnet/fib/ip6_fib.c
+++ b/
src/vnet/fib/ip6_fib.c
@@
-55,22
+55,29
@@
static u32
create_fib_with_table_id (u32 table_id)
{
fib_table_t *fib_table;
create_fib_with_table_id (u32 table_id)
{
fib_table_t *fib_table;
+ ip6_fib_t *v6_fib;
pool_get_aligned(ip6_main.fibs, fib_table, CLIB_CACHE_LINE_BYTES);
pool_get_aligned(ip6_main.fibs, fib_table, CLIB_CACHE_LINE_BYTES);
+ pool_get_aligned(ip6_main.v6_fibs, v6_fib, CLIB_CACHE_LINE_BYTES);
+
memset(fib_table, 0, sizeof(*fib_table));
memset(fib_table, 0, sizeof(*fib_table));
+ memset(v6_fib, 0, sizeof(*v6_fib));
+ ASSERT((fib_table - ip6_main.fibs) ==
+ (v6_fib - ip6_main.v6_fibs));
+
fib_table->ft_proto = FIB_PROTOCOL_IP6;
fib_table->ft_index =
fib_table->ft_proto = FIB_PROTOCOL_IP6;
fib_table->ft_index =
-
fib_table->v6.
index =
- (fib_table - ip6_main.fibs);
+
v6_fib->
index =
+
(fib_table - ip6_main.fibs);
hash_set(ip6_main.fib_index_by_table_id, table_id, fib_table->ft_index);
fib_table->ft_table_id =
hash_set(ip6_main.fib_index_by_table_id, table_id, fib_table->ft_index);
fib_table->ft_table_id =
-
fib_table->v6.
table_id =
+
v6_fib->
table_id =
table_id;
fib_table->ft_flow_hash_config =
table_id;
fib_table->ft_flow_hash_config =
-
fib_table->v6.
flow_hash_config =
+
v6_fib->
flow_hash_config =
IP_FLOW_HASH_DEFAULT;
vnet_ip6_fib_init(fib_table->ft_index);
IP_FLOW_HASH_DEFAULT;
vnet_ip6_fib_init(fib_table->ft_index);
@@
-188,6
+195,7
@@
ip6_fib_table_destroy (u32 fib_index)
{
hash_unset (ip6_main.fib_index_by_table_id, fib_table->ft_table_id);
}
{
hash_unset (ip6_main.fib_index_by_table_id, fib_table->ft_table_id);
}
+ pool_put_index(ip6_main.v6_fibs, fib_table->ft_index);
pool_put(ip6_main.fibs, fib_table);
}
pool_put(ip6_main.fibs, fib_table);
}
@@
-620,7
+628,7
@@
ip6_show_fib (vlib_main_t * vm,
pool_foreach (fib_table, im6->fibs,
({
pool_foreach (fib_table, im6->fibs,
({
- fib =
&(fib_table->v6
);
+ fib =
pool_elt_at_index(im6->v6_fibs, fib_table->ft_index
);
if (table_id >= 0 && table_id != (int)fib->table_id)
continue;
if (fib_index != ~0 && fib_index != (int)fib->index)
if (table_id >= 0 && table_id != (int)fib->table_id)
continue;
if (fib_index != ~0 && fib_index != (int)fib->index)