Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: speed up reassembly code compilation
[vpp.git]
/
src
/
vnet
/
ip
/
reass
/
ip4_full_reass.c
diff --git
a/src/vnet/ip/reass/ip4_full_reass.c
b/src/vnet/ip/reass/ip4_full_reass.c
index
d2069c0
..
79f4673
100644
(file)
--- a/
src/vnet/ip/reass/ip4_full_reass.c
+++ b/
src/vnet/ip/reass/ip4_full_reass.c
@@
-1172,6
+1172,7
@@
ip4_full_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
else if (reass)
{
u32 handoff_thread_idx;
else if (reass)
{
u32 handoff_thread_idx;
+ u32 counter = ~0;
switch (ip4_full_reass_update
(vm, node, rm, rt, reass, &bi0, &next0,
&error0, CUSTOM == type, &handoff_thread_idx))
switch (ip4_full_reass_update
(vm, node, rm, rt, reass, &bi0, &next0,
&error0, CUSTOM == type, &handoff_thread_idx))
@@
-1186,29
+1187,23
@@
ip4_full_reass_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
handoff_thread_idx;
break;
case IP4_REASS_RC_TOO_MANY_FRAGMENTS:
handoff_thread_idx;
break;
case IP4_REASS_RC_TOO_MANY_FRAGMENTS:
- vlib_node_increment_counter (vm, node->node_index,
- IP4_ERROR_REASS_FRAGMENT_CHAIN_TOO_LONG,
- 1);
- ip4_full_reass_drop_all (vm, node, reass);
- ip4_full_reass_free (rm, rt, reass);
- goto next_packet;
+ counter = IP4_ERROR_REASS_FRAGMENT_CHAIN_TOO_LONG;
break;
case IP4_REASS_RC_NO_BUF:
break;
case IP4_REASS_RC_NO_BUF:
- vlib_node_increment_counter (vm, node->node_index,
- IP4_ERROR_REASS_NO_BUF, 1);
- ip4_full_reass_drop_all (vm, node, reass);
- ip4_full_reass_free (rm, rt, reass);
- goto next_packet;
+ counter = IP4_ERROR_REASS_NO_BUF;
break;
case IP4_REASS_RC_INTERNAL_ERROR:
break;
case IP4_REASS_RC_INTERNAL_ERROR:
- /* drop everything and start with a clean slate */
- vlib_node_increment_counter (vm, node->node_index,
- IP4_ERROR_REASS_INTERNAL_ERROR,
+ counter = IP4_ERROR_REASS_INTERNAL_ERROR;
+ break;
+ }
+
+ if (~0 != counter)
+ {
+ vlib_node_increment_counter (vm, node->node_index, counter,
1);
ip4_full_reass_drop_all (vm, node, reass);
ip4_full_reass_free (rm, rt, reass);
goto next_packet;
1);
ip4_full_reass_drop_all (vm, node, reass);
ip4_full_reass_free (rm, rt, reass);
goto next_packet;
- break;
}
}
else
}
}
else