diff options
Diffstat (limited to 'src/vnet/interface_output.c')
-rw-r--r-- | src/vnet/interface_output.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/vnet/interface_output.c b/src/vnet/interface_output.c index 52c07accc4a..65bc4a4b7ec 100644 --- a/src/vnet/interface_output.c +++ b/src/vnet/interface_output.c @@ -800,19 +800,21 @@ interface_drop_punt (vlib_main_t * vm, node->flags |= VLIB_NODE_FLAG_TRACE; while (n_trace && n_left) { - vlib_trace_buffer (vm, node, 0 /* next_index */ , - b[0], 0 /* follow chain */ ); - /* - * Here we have a wireshark dissector problem. - * Packets may be well-formed, or not. We - * must not blow chunks in any case. - * - * Try to produce trace records which will help - * folks understand what's going on. - */ - drop_catchup_trace (vm, node, b[0]); - - n_trace--; + if (PREDICT_TRUE + (vlib_trace_buffer (vm, node, 0 /* next_index */ , b[0], + 0 /* follow chain */ ))) + { + /* + * Here we have a wireshark dissector problem. + * Packets may be well-formed, or not. We + * must not blow chunks in any case. + * + * Try to produce trace records which will help + * folks understand what's going on. + */ + drop_catchup_trace (vm, node, b[0]); + n_trace--; + } n_left--; b++; } |