ikev2: add support for custom ipsec-over-udp port
[vpp.git] / src / plugins / avf / input.c
index 8e0edf6..8d1ded8 100644 (file)
@@ -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* */