diff options
author | Benoît Ganne <bganne@cisco.com> | 2021-03-04 14:31:03 +0100 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2021-05-01 11:42:37 +0000 |
commit | f89bbbe300dad7bc479db535e7822199f98aca30 (patch) | |
tree | 1163eeac010375a962fcda8c2e0c7a7046161bf1 /src/vnet/devices | |
parent | c8983241b9d93d2c3b60b0705efbc3cdee54c534 (diff) |
vlib: refactor trajectory trace debug feature
trajectory trace has been broken for a while because we used to save the
buffer trajectory in a vector pointed to in opaque2. This does not work
well when opaque2 is copied (eg. because of a clone) as 2 buffers end up
sharing the same vector.
This dedicates a full cacheline in the buffer metadata instead when
trajectory is compiled in. No dynamic allocation, no sharing, no tears.
Type: refactor
Change-Id: I6a028ca1b48d38f393a36979e5e452c2dd48ad3f
Signed-off-by: Benoît Ganne <bganne@cisco.com>
Diffstat (limited to 'src/vnet/devices')
-rw-r--r-- | src/vnet/devices/af_packet/node.c | 1 | ||||
-rw-r--r-- | src/vnet/devices/virtio/node.c | 2 | ||||
-rw-r--r-- | src/vnet/devices/virtio/vhost_user_input.c | 4 |
3 files changed, 0 insertions, 7 deletions
diff --git a/src/vnet/devices/af_packet/node.c b/src/vnet/devices/af_packet/node.c index 9f1782e2d13..16cd69a52ce 100644 --- a/src/vnet/devices/af_packet/node.c +++ b/src/vnet/devices/af_packet/node.c @@ -332,7 +332,6 @@ af_packet_device_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node, } /* trace */ - VLIB_BUFFER_TRACE_TRAJECTORY_INIT (first_b0); if (PREDICT_FALSE (n_trace > 0 && vlib_trace_buffer (vm, node, next0, first_b0, /* follow_chain */ 0))) diff --git a/src/vnet/devices/virtio/node.c b/src/vnet/devices/virtio/node.c index 98df322ea15..df8c0fa9a64 100644 --- a/src/vnet/devices/virtio/node.c +++ b/src/vnet/devices/virtio/node.c @@ -522,8 +522,6 @@ virtio_device_input_gso_inline (vlib_main_t * vm, vlib_node_runtime_t * node, } /* trace */ - VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b0); - if (PREDICT_FALSE (n_trace > 0 && vlib_trace_buffer (vm, node, next0, b0, /* follow_chain */ 1))) { diff --git a/src/vnet/devices/virtio/vhost_user_input.c b/src/vnet/devices/virtio/vhost_user_input.c index 739125bbcfe..1636bd8c4a9 100644 --- a/src/vnet/devices/virtio/vhost_user_input.c +++ b/src/vnet/devices/virtio/vhost_user_input.c @@ -686,8 +686,6 @@ vhost_user_if_input (vlib_main_t *vm, vhost_user_main_t *vum, last_avail_idx++; last_used_idx++; - VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b_head); - vnet_buffer (b_head)->sw_if_index[VLIB_RX] = vui->sw_if_index; vnet_buffer (b_head)->sw_if_index[VLIB_TX] = (u32) ~ 0; b_head->error = 0; @@ -1318,8 +1316,6 @@ vhost_user_if_input_packed (vlib_main_t *vm, vhost_user_main_t *vum, b_head->total_length_not_including_first_buffer -= b_head->current_length; - VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b_head); - vnet_buffer (b_head)->sw_if_index[VLIB_RX] = vui->sw_if_index; vnet_buffer (b_head)->sw_if_index[VLIB_TX] = ~0; b_head->error = 0; |