buffers: remove unused code
[vpp.git] / src / vnet / pg / input.c
index 8b46688..4db4b45 100644 (file)
@@ -40,6 +40,7 @@
 #include <vlib/vlib.h>
 #include <vnet/pg/pg.h>
 #include <vnet/vnet.h>
+#include <vnet/ethernet/ethernet.h>
 #include <vnet/feature/feature.h>
 #include <vnet/devices/devices.h>
 
@@ -1189,10 +1190,7 @@ pg_stream_fill_helper (pg_main_t * pg,
   uword is_start_of_packet = bi == s->buffer_indices;
   u32 n_allocated;
 
-  n_allocated = vlib_buffer_alloc_from_free_list (vm,
-                                                 buffers,
-                                                 n_alloc,
-                                                 bi->free_list_index);
+  n_allocated = vlib_buffer_alloc (vm, buffers, n_alloc);
   if (n_allocated == 0)
     return 0;
 
@@ -1496,7 +1494,24 @@ pg_generate_packets (vlib_node_runtime_t * node,
     {
       u32 *head, *start, *end;
 
-      vlib_get_next_frame (vm, node, next_index, to_next, n_left);
+      if (PREDICT_TRUE (next_index == VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT))
+       {
+         vlib_next_frame_t *nf;
+         vlib_frame_t *f;
+         ethernet_input_frame_t *ef;
+         pg_interface_t *pi;
+         vlib_get_new_next_frame (vm, node, next_index, to_next, n_left);
+         nf = vlib_node_runtime_get_next_frame (vm, node, next_index);
+         f = vlib_get_frame (vm, nf->frame_index);
+         f->flags = ETH_INPUT_FRAME_F_SINGLE_SW_IF_IDX;
+
+         ef = vlib_frame_scalar_args (f);
+         pi = pool_elt_at_index (pg->interfaces, s->pg_if_index);
+         ef->sw_if_index = pi->sw_if_index;
+         ef->hw_if_index = pi->hw_if_index;
+       }
+      else
+       vlib_get_next_frame (vm, node, next_index, to_next, n_left);
 
       n_this_frame = n_packets_to_generate;
       if (n_this_frame > n_left)
@@ -1507,12 +1522,13 @@ pg_generate_packets (vlib_node_runtime_t * node,
       head = clib_fifo_head (bi0->buffer_fifo);
 
       if (head + n_this_frame <= end)
-       vlib_copy_buffers (to_next, head, n_this_frame);
+       clib_memcpy_fast (to_next, head, n_this_frame * sizeof (u32));
       else
        {
          u32 n = end - head;
-         vlib_copy_buffers (to_next + 0, head, n);
-         vlib_copy_buffers (to_next + n, start, n_this_frame - n);
+         clib_memcpy_fast (to_next + 0, head, n * sizeof (u32));
+         clib_memcpy_fast (to_next + n, start,
+                           (n_this_frame - n) * sizeof (u32));
        }
 
       vec_foreach (bi, s->buffer_indices)