vlib: fix trace number accounting

When using classifier to filter traces, not all packets will be traced.
In that case, we should only count traced packets.

Type: fix

Change-Id: I87d1e217b580ebff8c6ade7860eb43950420ae78
Signed-off-by: Benoît Ganne <bganne@cisco.com>
diff --git a/src/vnet/interface_output.c b/src/vnet/interface_output.c
index 52c07ac..65bc4a4 100644
--- a/src/vnet/interface_output.c
+++ b/src/vnet/interface_output.c
@@ -800,19 +800,21 @@
 	  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++;
 	    }