summaryrefslogtreecommitdiffstats
path: root/src/vlib
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2019-08-13 18:18:21 -0400
committerJohn Lo <loj@cisco.com>2019-08-15 15:26:46 -0400
commita5766fe1397103cee73b764181df63fdd68ef040 (patch)
treed8e918643d80918b7d6329174a0ab1a36962948a /src/vlib
parent4c945dacb9ff9da731301feb26b1edb4ac00e8bd (diff)
vlib: copy trace_handle in vlib_buffer_copy/clone() functions
Since vlib_buffer_copy() and vlib_buffer_clone() both preserve VLIB_BUFFER_IS_TRACED bit in flags field, it should also copy trace_handle which would add minimal overhead. Thus, callers of these functions do not have to call vlib_buffer_copy_trace_flags() to copy trace_handle. Type: refactor Ticket: VPP-1745 Signed-off-by: John Lo <loj@cisco.com> Change-Id: Iff6a3f81660dd62b36a2966033eb380305340310 (cherry picked from commit 6631780422787166550b9871c46a94c160416324) Signed-off-by: John Lo <loj@cisco.com>
Diffstat (limited to 'src/vlib')
-rw-r--r--src/vlib/buffer_funcs.h2
-rw-r--r--src/vlib/punt_node.c4
2 files changed, 2 insertions, 4 deletions
diff --git a/src/vlib/buffer_funcs.h b/src/vlib/buffer_funcs.h
index bb090f2c195..7480326ee3d 100644
--- a/src/vlib/buffer_funcs.h
+++ b/src/vlib/buffer_funcs.h
@@ -992,6 +992,7 @@ vlib_buffer_copy (vlib_main_t * vm, vlib_buffer_t * b)
d->current_data = s->current_data;
d->current_length = s->current_length;
d->flags = s->flags & flag_mask;
+ d->trace_handle = s->trace_handle;
d->total_length_not_including_first_buffer =
s->total_length_not_including_first_buffer;
clib_memcpy_fast (d->opaque, s->opaque, sizeof (s->opaque));
@@ -1138,6 +1139,7 @@ vlib_buffer_clone_256 (vlib_main_t * vm, u32 src_buffer, u32 * buffers,
}
d->flags = (s->flags & VLIB_BUFFER_COPY_CLONE_FLAGS_MASK) |
VLIB_BUFFER_NEXT_PRESENT;
+ d->trace_handle = s->trace_handle;
clib_memcpy_fast (d->opaque, s->opaque, sizeof (s->opaque));
clib_memcpy_fast (d->opaque2, s->opaque2, sizeof (s->opaque2));
clib_memcpy_fast (vlib_buffer_get_current (d),
diff --git a/src/vlib/punt_node.c b/src/vlib/punt_node.c
index b0546ac6ae8..e341e4007cc 100644
--- a/src/vlib/punt_node.c
+++ b/src/vlib/punt_node.c
@@ -109,10 +109,6 @@ punt_replicate (vlib_main_t * vm,
punt_trace_t *t;
c0 = vlib_get_buffer (vm, ci0);
-
- if (c0 != b0)
- vlib_buffer_copy_trace_flag (vm, b0, ci0);
-
t = vlib_add_trace (vm, node, c0, sizeof (*t));
t->pt_reason = pr0;
}