packet-generator: use default free list 06/11006/2
authorDamjan Marion <damarion@cisco.com>
Wed, 7 Mar 2018 12:21:04 +0000 (13:21 +0100)
committerDave Barach <openvpp@barachs.net>
Wed, 7 Mar 2018 14:01:40 +0000 (14:01 +0000)
Change-Id: I2a34546f9b32edc9bfb86b5492dde34aaef49ccc
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vnet/pg/input.c
src/vnet/pg/stream.c

index f31152c..1cbffed 100644 (file)
@@ -1178,25 +1178,6 @@ init_buffers_inline (vlib_main_t * vm,
     }
 }
 
-static void
-pg_buffer_init (vlib_main_t * vm,
-               vlib_buffer_free_list_t * fl, u32 * buffers, u32 n_buffers)
-{
-  pg_main_t *pg = &pg_main;
-  pg_stream_t *s;
-  uword bi, si;
-
-  si = fl->buffer_init_function_opaque & pow2_mask (24);
-  bi = fl->buffer_init_function_opaque >> 24;
-
-  s = pool_elt_at_index (pg->streams, si);
-
-  init_buffers_inline (vm, s, buffers, n_buffers,
-                      /* data_offset */ bi * s->buffer_bytes,
-                      /* n_data */ s->buffer_bytes,
-                      /* set_data */ 1);
-}
-
 static u32
 pg_stream_fill_helper (pg_main_t * pg,
                       pg_stream_t * s,
@@ -1204,26 +1185,9 @@ pg_stream_fill_helper (pg_main_t * pg,
                       u32 * buffers, u32 * next_buffers, u32 n_alloc)
 {
   vlib_main_t *vm = vlib_get_main ();
-  vlib_buffer_free_list_t *f;
   uword is_start_of_packet = bi == s->buffer_indices;
   u32 n_allocated;
 
-  f = vlib_buffer_get_free_list (vm, bi->free_list_index);
-
-  /*
-   * Historically, the pg maintained its own free lists and
-   * device drivers tx paths would return pkts.
-   */
-  if (vm->buffer_main->callbacks_registered == 0 &&
-      !(s->flags & PG_STREAM_FLAGS_DISABLE_BUFFER_RECYCLE))
-    f->buffer_init_function = pg_buffer_init;
-  f->buffer_init_function_opaque =
-    (s - pg->streams) | ((bi - s->buffer_indices) << 24);
-
-  if (is_start_of_packet)
-    vnet_buffer (&f->buffer_init_template)->sw_if_index[VLIB_RX]
-      = vnet_main.local_interface_sw_if_index;
-
   n_allocated = vlib_buffer_alloc_from_free_list (vm,
                                                  buffers,
                                                  n_alloc,
@@ -1238,16 +1202,12 @@ pg_stream_fill_helper (pg_main_t * pg,
   n_alloc = n_allocated;
 
   /* Reinitialize buffers */
-  if (vm->buffer_main->callbacks_registered == 0 || CLIB_DEBUG > 0
-      || (s->flags & PG_STREAM_FLAGS_DISABLE_BUFFER_RECYCLE))
-    init_buffers_inline
-      (vm, s,
-       buffers,
-       n_alloc, (bi - s->buffer_indices) * s->buffer_bytes /* data offset */ ,
-       s->buffer_bytes,
-       /* set_data */
-       vm->buffer_main->callbacks_registered != 0
-       || (s->flags & PG_STREAM_FLAGS_DISABLE_BUFFER_RECYCLE) != 0);
+  init_buffers_inline
+    (vm, s,
+     buffers,
+     n_alloc, (bi - s->buffer_indices) * s->buffer_bytes /* data offset */ ,
+     s->buffer_bytes,
+     /* set_data */ 1);
 
   if (next_buffers)
     pg_set_next_buffer_pointers (pg, s, buffers, next_buffers, n_alloc);
index 762f241..2837d80 100644 (file)
@@ -438,27 +438,14 @@ pg_stream_add (pg_main_t * pg, pg_stream_t * s_init)
     pg_buffer_index_t *bi;
     int n;
 
-    if (vm->buffer_main->callbacks_registered)
-      s->buffer_bytes = VLIB_BUFFER_DATA_SIZE;
-
-    if (!s->buffer_bytes)
-      s->buffer_bytes = s->max_packet_bytes;
-
-    s->buffer_bytes = vlib_buffer_round_size (s->buffer_bytes);
-
+    s->buffer_bytes = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES;
     n = s->max_packet_bytes / s->buffer_bytes;
     n += (s->max_packet_bytes % s->buffer_bytes) != 0;
 
     vec_resize (s->buffer_indices, n);
 
     vec_foreach (bi, s->buffer_indices)
-    {
-      bi->free_list_index =
-       vlib_buffer_create_free_list (vm, s->buffer_bytes,
-                                     "pg stream %d buffer #%d",
-                                     s - pg->streams,
-                                     1 + (bi - s->buffer_indices));
-    }
+      bi->free_list_index = VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX;
   }
 
   /* Find an interface to use. */
@@ -483,7 +470,6 @@ pg_stream_add (pg_main_t * pg, pg_stream_t * s_init)
 void
 pg_stream_del (pg_main_t * pg, uword index)
 {
-  vlib_main_t *vm = vlib_get_main ();
   pg_stream_t *s;
   pg_buffer_index_t *bi;
 
@@ -494,7 +480,6 @@ pg_stream_del (pg_main_t * pg, uword index)
 
   vec_foreach (bi, s->buffer_indices)
   {
-    vlib_buffer_delete_free_list (vm, bi->free_list_index);
     clib_fifo_free (bi->buffer_fifo);
   }