- ethernet_header_t *e0, *e1, *e2, *e3;
-
- e0 = (ethernet_header_t *) b0->data;
- e1 = (ethernet_header_t *) b1->data;
- e2 = (ethernet_header_t *) b2->data;
- e3 = (ethernet_header_t *) b3->data;
-
- if (ethernet_frame_is_any_tagged_x4 (e0->type, e1->type,
- e2->type, e3->type))
- {
- next0 = avf_find_next (rxve, b0, 1);
- next1 = avf_find_next (rxve + 1, b1, 1);
- next2 = avf_find_next (rxve + 2, b2, 1);
- next3 = avf_find_next (rxve + 3, b3, 1);
- }
- else
- {
- next0 = avf_find_next (rxve, b0, 0);
- next1 = avf_find_next (rxve + 1, b1, 0);
- next2 = avf_find_next (rxve + 2, b2, 0);
- next3 = avf_find_next (rxve + 3, b3, 0);
- }
-
- if (with_features_or_tracing)
- vnet_feature_start_device_input_x4 (ad->sw_if_index, &next0,
- &next1, &next2, &next3,
- b0, b1, b2, b3);
-
- if (PREDICT_FALSE (maybe_error))
- {
- avf_check_for_error (node, rxve + 0, b0, &next0);
- avf_check_for_error (node, rxve + 1, b1, &next1);
- avf_check_for_error (node, rxve + 2, b2, &next2);
- avf_check_for_error (node, rxve + 3, b3, &next3);
- }
- }
- else
- next0 = next1 = next2 = next3 = ad->per_interface_next_index;
-
- clib_memcpy (vnet_buffer (b0)->sw_if_index, sw_if_idx,
- sizeof (sw_if_idx));
- clib_memcpy (vnet_buffer (b1)->sw_if_index, sw_if_idx,
- sizeof (sw_if_idx));
- clib_memcpy (vnet_buffer (b2)->sw_if_index, sw_if_idx,
- sizeof (sw_if_idx));
- clib_memcpy (vnet_buffer (b3)->sw_if_index, sw_if_idx,
- sizeof (sw_if_idx));
-
- VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b0);
- VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b1);
- VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b2);
- VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b3);
-
- if (with_features_or_tracing && PREDICT_FALSE (n_trace))
- {
- avf_input_trace (vm, node, next0, b0, &n_trace, ad, rxve);
- if (n_trace)
- avf_input_trace (vm, node, next1, b1, &n_trace, ad, rxve + 1);
- if (n_trace)
- avf_input_trace (vm, node, next2, b2, &n_trace, ad, rxve + 2);
- if (n_trace)
- avf_input_trace (vm, node, next3, b3, &n_trace, ad, rxve + 3);
- }