vlib: fix trace number accounting
[vpp.git] / src / plugins / rdma / input.c
index 1d267ad..52e921d 100644 (file)
@@ -225,30 +225,27 @@ rdma_device_input_trace (vlib_main_t * vm, vlib_node_runtime_t * node,
                         const u32 * bi, u32 next_index, u16 * cqe_flags,
                         int is_mlx5dv)
 {
-  u32 n_trace, i;
+  u32 n_trace = vlib_get_trace_count (vm, node);
 
-  if (PREDICT_TRUE (0 == (n_trace = vlib_get_trace_count (vm, node))))
+  if (PREDICT_TRUE (0 == n_trace))
     return;
 
-  i = 0;
   while (n_trace && n_left)
     {
-      vlib_buffer_t *b;
-      rdma_input_trace_t *tr;
-      b = vlib_get_buffer (vm, bi[0]);
-      vlib_trace_buffer (vm, node, next_index, b,
-                        /* follow_chain */ 0);
-      tr = vlib_add_trace (vm, node, b, sizeof (*tr));
-      tr->next_index = next_index;
-      tr->hw_if_index = rd->hw_if_index;
-      tr->cqe_flags = is_mlx5dv ? clib_net_to_host_u16 (cqe_flags[0]) : 0;
-
+      vlib_buffer_t *b = vlib_get_buffer (vm, bi[0]);
+      if (PREDICT_TRUE
+         (vlib_trace_buffer (vm, node, next_index, b, /* follow_chain */ 0)))
+       {
+         rdma_input_trace_t *tr = vlib_add_trace (vm, node, b, sizeof (*tr));
+         tr->next_index = next_index;
+         tr->hw_if_index = rd->hw_if_index;
+         tr->cqe_flags = is_mlx5dv ? clib_net_to_host_u16 (cqe_flags[0]) : 0;
+         n_trace--;
+       }
       /* next */
-      n_trace--;
       n_left--;
       cqe_flags++;
       bi++;
-      i++;
     }
   vlib_set_trace_count (vm, node, n_trace);
 }