buffers: add compile-time option to set buffer alignment
[vpp.git] / src / vlib / buffer.c
index 0068659..82fe641 100644 (file)
@@ -58,9 +58,6 @@ STATIC_ASSERT_FITS_IN (vlib_buffer_t, ref_count, 16);
 STATIC_ASSERT_FITS_IN (vlib_buffer_t, buffer_pool_index, 16);
 #endif
 
-/* Make sure that buffer template size is not accidentally changed */
-STATIC_ASSERT_OFFSET_OF (vlib_buffer_t, template_end, 64);
-
 u16 __vlib_buffer_external_hdr_size = 0;
 
 uword
@@ -474,11 +471,7 @@ static uword
 vlib_buffer_alloc_size (uword ext_hdr_size, uword data_size)
 {
   uword alloc_size = ext_hdr_size + sizeof (vlib_buffer_t) + data_size;
-  alloc_size = CLIB_CACHE_LINE_ROUND (alloc_size);
-
-  /* in case when we have even number of cachelines, we add one more for
-   * better cache occupancy */
-  alloc_size |= CLIB_CACHE_LINE_BYTES;
+  alloc_size = round_pow2 (alloc_size, VLIB_BUFFER_ALIGN);
 
   return alloc_size;
 }
@@ -577,7 +570,7 @@ vlib_buffer_pool_create (vlib_main_t *vm, u32 data_size, u32 physmem_map_index,
        continue;
 
       b = (vlib_buffer_t *) (p + bm->ext_hdr_size);
-      vlib_buffer_copy_template (b, &bp->buffer_template);
+      b->template = bp->buffer_template;
       bi = vlib_get_buffer_index (vm, b);
       bp->buffers[bp->n_avail++] = bi;
       vlib_get_buffer (vm, bi);
@@ -606,9 +599,10 @@ format_vlib_buffer_pool (u8 * s, va_list * va)
     cached += bpt->n_cached;
   /* *INDENT-ON* */
 
-  s = format (s, "%-20s%=6d%=6d%=6u%=11u%=6u%=8u%=8u%=8u",
-             bp->name, bp->index, bp->numa_node, bp->data_size +
-             sizeof (vlib_buffer_t) + vm->buffer_main->ext_hdr_size,
+  s = format (s, "%-20v%=6d%=6d%=6u%=11u%=6u%=8u%=8u%=8u", bp->name, bp->index,
+             bp->numa_node,
+             bp->data_size + sizeof (vlib_buffer_t) +
+               vm->buffer_main->ext_hdr_size,
              bp->data_size, bp->n_buffers, bp->n_avail, cached,
              bp->n_buffers - bp->n_avail - cached);
 
@@ -900,16 +894,16 @@ vlib_buffer_main_init (struct vlib_main_t * vm)
       continue;
 
     reg.entry_index =
-      vlib_stats_add_gauge ("/buffer-pools/%s/cached", bp->name);
+      vlib_stats_add_gauge ("/buffer-pools/%v/cached", bp->name);
     reg.collect_fn = buffer_gauges_collect_cached_fn;
     vlib_stats_register_collector_fn (&reg);
 
-    reg.entry_index = vlib_stats_add_gauge ("/buffer-pools/%s/used", bp->name);
+    reg.entry_index = vlib_stats_add_gauge ("/buffer-pools/%v/used", bp->name);
     reg.collect_fn = buffer_gauges_collect_used_fn;
     vlib_stats_register_collector_fn (&reg);
 
     reg.entry_index =
-      vlib_stats_add_gauge ("/buffer-pools/%s/available", bp->name);
+      vlib_stats_add_gauge ("/buffer-pools/%v/available", bp->name);
     reg.collect_fn = buffer_gauges_collect_available_fn;
     vlib_stats_register_collector_fn (&reg);
   }