X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Favf%2Finput.c;h=8d1ded885057eb3764a03510e25439c3dd9d4f2c;hb=e5d34919b;hp=8e0edf6ae1f48645364751206519acedc6c8450c;hpb=cffbfc52b038ec48e62e969960a2635f2dc19b1d;p=vpp.git diff --git a/src/plugins/avf/input.c b/src/plugins/avf/input.c index 8e0edf6ae1f..8d1ded88505 100644 --- a/src/plugins/avf/input.c +++ b/src/plugins/avf/input.c @@ -263,11 +263,12 @@ avf_device_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node, if (PREDICT_FALSE (ad->per_interface_next_index != ~0)) next_index = ad->per_interface_next_index; - vlib_get_new_next_frame (vm, node, next_index, to_next, n_left_to_next); if (PREDICT_FALSE (vnet_device_input_have_features (ad->sw_if_index))) vnet_feature_start_device_input_x1 (ad->sw_if_index, &next_index, bt); + vlib_get_new_next_frame (vm, node, next_index, to_next, n_left_to_next); + /* fetch up to AVF_RX_VECTOR_SZ from the rx ring, unflatten them and copy needed data from descriptor to rx vector */ bi = to_next; @@ -395,6 +396,7 @@ no_more_desc: 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->qid = qid; tr->hw_if_index = ad->hw_if_index; tr->qw1s[0] = ptd->qw1s[i]; for (j = 1; j < AVF_RX_MAX_DESC_IN_CHAIN; j++) @@ -415,7 +417,7 @@ no_more_desc: vlib_frame_t *f; ethernet_input_frame_t *ef; nf = vlib_node_runtime_get_next_frame (vm, node, next_index); - f = vlib_get_frame (vm, nf->frame_index); + f = vlib_get_frame (vm, nf->frame); f->flags = ETH_INPUT_FRAME_F_SINGLE_SW_IF_IDX; ef = vlib_frame_scalar_args (f); @@ -424,6 +426,7 @@ no_more_desc: if ((or_qw1 & AVF_RXD_ERROR_IPE) == 0) f->flags |= ETH_INPUT_FRAME_F_IP4_CKSUM_OK; + vlib_frame_no_append (f); } n_left_to_next -= n_rx_packets; @@ -465,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* */