vlib: add flag to explicitelly mark nodes which can init per-node packet trace

Type: feature

Change-Id: I913f08383ee1c24d610c3d2aac07cef402570e2c
Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
Damjan Marion
2019-09-24 18:10:49 +02:00
committed by Florin Coras
parent be7ef3b5c2
commit 7ca5aaac10
21 changed files with 32 additions and 0 deletions

View File

@ -468,6 +468,7 @@ VLIB_REGISTER_NODE (avf_input_node) = {
.state = VLIB_NODE_STATE_DISABLED,
.n_errors = AVF_INPUT_N_ERROR,
.error_strings = avf_input_error_strings,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
};
/* *INDENT-ON* */

View File

@ -478,6 +478,7 @@ VLIB_REGISTER_NODE (dpdk_input_node) = {
.type = VLIB_NODE_TYPE_INPUT,
.name = "dpdk-input",
.sibling_of = "device-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
/* Will be enabled if/when hardware is detected. */
.state = VLIB_NODE_STATE_DISABLED,

View File

@ -303,6 +303,7 @@ VLIB_NODE_FN (dpdk_crypto_input_node) (vlib_main_t * vm,
VLIB_REGISTER_NODE (dpdk_crypto_input_node) =
{
.name = "dpdk-crypto-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.format_trace = format_dpdk_crypto_input_trace,
.type = VLIB_NODE_TYPE_INPUT,
.state = VLIB_NODE_STATE_DISABLED,

View File

@ -2219,6 +2219,7 @@ VLIB_REGISTER_NODE (ixge_input_node, static) = {
.function = ixge_input,
.type = VLIB_NODE_TYPE_INPUT,
.name = "ixge-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
/* Will be enabled if/when hardware is detected. */
.state = VLIB_NODE_STATE_DISABLED,

View File

@ -374,6 +374,7 @@ mrvl_pp2_input_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (mrvl_pp2_input_node) = {
.function = mrvl_pp2_input_fn,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.name = "mrvl-pp2-input",
.sibling_of = "device-input",
.format_trace = format_mrvl_pp2_input_trace,

View File

@ -925,6 +925,7 @@ VLIB_NODE_FN (memif_input_node) (vlib_main_t * vm,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (memif_input_node) = {
.name = "memif-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.sibling_of = "device-input",
.format_trace = format_memif_input_trace,
.type = VLIB_NODE_TYPE_INPUT,

View File

@ -360,6 +360,7 @@ VLIB_NODE_FN (rdma_input_node) (vlib_main_t * vm,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (rdma_input_node) = {
.name = "rdma-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.sibling_of = "device-input",
.format_trace = format_rdma_input_trace,
.type = VLIB_NODE_TYPE_INPUT,

View File

@ -481,6 +481,7 @@ VLIB_NODE_FN (vmxnet3_input_node) (vlib_main_t * vm,
VLIB_REGISTER_NODE (vmxnet3_input_node) = {
.name = "vmxnet3-input",
.sibling_of = "device-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.format_trace = format_vmxnet3_input_trace,
.type = VLIB_NODE_TYPE_INPUT,
.state = VLIB_NODE_STATE_DISABLED,

View File

@ -79,6 +79,7 @@ typedef enum
VLIB_REGISTER_NODE (handoff_trace_node, static) =
{
.name = "handoff_trace",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.function = handoff_trace_node_fn,
.vector_size = sizeof (u32),
.format_trace = format_handoff_trace,

View File

@ -303,6 +303,7 @@ typedef struct vlib_node_t
#define VLIB_NODE_FLAG_SWITCH_FROM_INTERRUPT_TO_POLLING_MODE (1 << 6)
#define VLIB_NODE_FLAG_SWITCH_FROM_POLLING_TO_INTERRUPT_MODE (1 << 7)
#define VLIB_NODE_FLAG_TRACE_SUPPORTED (1 << 8)
/* State for input nodes. */
u8 state;

View File

@ -357,6 +357,7 @@ cli_add_trace_buffer (vlib_main_t * vm,
{
unformat_input_t _line_input, *line_input = &_line_input;
vlib_trace_main_t *tm;
vlib_node_t *node;
vlib_trace_node_t *tn;
u32 node_index, add;
u8 verbose = 0;
@ -383,6 +384,17 @@ cli_add_trace_buffer (vlib_main_t * vm,
}
}
node = vlib_get_node (vm, node_index);
if ((node->flags & VLIB_NODE_FLAG_TRACE_SUPPORTED) == 0)
{
error = clib_error_create ("node '%U' doesn't support per-node "
"tracing. There may be another way to "
"initiate trace on this node.",
format_vlib_node_name, vm, node_index);
goto done;
}
/* *INDENT-OFF* */
foreach_vlib_main ((
{

View File

@ -790,6 +790,7 @@ bond_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (bond_process_node) = {
.function = bond_process,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.type = VLIB_NODE_TYPE_PROCESS,
.name = "bond-process",
};

View File

@ -369,6 +369,7 @@ VLIB_NODE_FN (af_packet_input_node) (vlib_main_t * vm,
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (af_packet_input_node) = {
.name = "af-packet-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.sibling_of = "device-input",
.format_trace = format_af_packet_input_trace,
.type = VLIB_NODE_TYPE_INPUT,

View File

@ -278,6 +278,7 @@ VLIB_NODE_FN (netmap_input_node) (vlib_main_t * vm,
VLIB_REGISTER_NODE (netmap_input_node) = {
.name = "netmap-input",
.sibling_of = "device-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.format_trace = format_netmap_input_trace,
.type = VLIB_NODE_TYPE_INPUT,
/* default state is INTERRUPT mode, switch to POLLING if worker threads are enabled */

View File

@ -398,6 +398,7 @@ VLIB_REGISTER_NODE (virtio_input_node) = {
.name = "virtio-input",
.sibling_of = "device-input",
.format_trace = format_virtio_input_trace,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.type = VLIB_NODE_TYPE_INPUT,
.state = VLIB_NODE_STATE_INTERRUPT,
.n_errors = VIRTIO_INPUT_N_ERROR,

View File

@ -794,6 +794,7 @@ VLIB_REGISTER_NODE (vhost_user_input_node) = {
.type = VLIB_NODE_TYPE_INPUT,
.name = "vhost-user-input",
.sibling_of = "device-input",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
/* Will be enabled if/when hardware is detected. */
.state = VLIB_NODE_STATE_DISABLED,

View File

@ -237,6 +237,7 @@ VLIB_REGISTER_NODE (p2p_ethernet_input_node) = {
.vector_size = sizeof (u32),
.format_trace = format_p2p_ethernet_trace,
.type = VLIB_NODE_TYPE_INTERNAL,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.n_errors = ARRAY_LEN(p2p_ethernet_error_strings),
.error_strings = p2p_ethernet_error_strings,

View File

@ -621,6 +621,7 @@ VLIB_REGISTER_NODE (punt_socket_rx_node) =
{
.function = punt_socket_rx,
.name = "punt-socket-rx",
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.type = VLIB_NODE_TYPE_INPUT,
.state = VLIB_NODE_STATE_INTERRUPT,
.vector_size = 1,

View File

@ -1797,6 +1797,7 @@ pg_input (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (pg_input_node) = {
.function = pg_input,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.name = "pg-input",
.sibling_of = "device-input",
.type = VLIB_NODE_TYPE_INPUT,

View File

@ -1339,6 +1339,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
VLIB_REGISTER_NODE (session_queue_node) =
{
.function = session_queue_node_fn,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.name = "session-queue",
.format_trace = format_session_queue_trace,
.type = VLIB_NODE_TYPE_INPUT,

View File

@ -398,6 +398,7 @@ static char *tuntap_rx_error_strings[] = {
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (tuntap_rx_node,static) = {
.function = tuntap_rx,
.flags = VLIB_NODE_FLAG_TRACE_SUPPORTED,
.name = "tuntap-rx",
.sibling_of = "device-input",
.type = VLIB_NODE_TYPE_INPUT,