acl-plugin: unapply the ACLs if interface is being deleted
[vpp.git] / src / vlib / buffer.c
index 6ba8258..be3b41e 100644 (file)
@@ -44,6 +44,7 @@
  */
 
 #include <vlib/vlib.h>
+#include <vlib/unix/unix.h>
 
 uword
 vlib_buffer_length_in_chain_slow_path (vlib_main_t * vm,
@@ -298,7 +299,7 @@ vlib_buffer_validate_alloc_free (vlib_main_t * vm,
   if (CLIB_DEBUG == 0)
     return;
 
-  ASSERT (os_get_cpu_number () == 0);
+  ASSERT (vlib_get_thread_index () == 0);
 
   /* smp disaster check */
   if (vec_len (vlib_mains) > 1)
@@ -354,7 +355,7 @@ vlib_buffer_create_free_list_helper (vlib_main_t * vm,
   vlib_buffer_free_list_t *f;
   int i;
 
-  ASSERT (os_get_cpu_number () == 0);
+  ASSERT (vlib_get_thread_index () == 0);
 
   if (!is_default && pool_elts (bm->buffer_free_list_pool) == 0)
     {
@@ -473,7 +474,7 @@ vlib_buffer_delete_free_list_internal (vlib_main_t * vm, u32 free_list_index)
   u32 merge_index;
   int i;
 
-  ASSERT (os_get_cpu_number () == 0);
+  ASSERT (vlib_get_thread_index () == 0);
 
   f = vlib_buffer_get_free_list (vm, free_list_index);
 
@@ -583,6 +584,11 @@ alloc_from_free_list (vlib_main_t * vm,
 
   dst = alloc_buffers;
 
+  /* wait with buffer memory allocation as long as possible
+     in case external buffer manager takes over */
+  if (PREDICT_FALSE (vm->os_physmem_alloc_aligned == 0))
+    unix_physmem_init (vm, 0 /* fail_if_physical_memory_not_present */ );
+
   n_filled = fill_free_list (vm, free_list, n_alloc_buffers);
   if (n_filled == 0)
     return 0;