misc: move to new pool_foreach macros
[vpp.git] / src / vnet / dpo / load_balance_map.c
index 588c1a7..5524974 100644 (file)
@@ -68,18 +68,20 @@ typedef struct load_balance_map_path_t_ {
  */
 load_balance_map_t *load_balance_map_pool;
 
+/**
+ * the logger
+ */
+vlib_log_class_t load_balance_map_logger;
+
 /*
  * Debug macro
  */
-#ifdef FIB_DEBUG
-#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...)       \
-    {                                                   \
-        clib_warning("lbm: FIXME" _fmt,                 \
-                     ##_args);                          \
-    }
-#else
-#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...)
-#endif
+#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...)               \
+{                                                               \
+    vlib_log_debug(load_balance_map_logger,                     \
+                   "lbm:" _fmt,                                 \
+                   ##_args);                                    \
+}
 
 static index_t
 load_balance_map_get_index (load_balance_map_t *lbm)
@@ -272,7 +274,7 @@ load_balance_map_db_remove (load_balance_map_t *lbm)
     {
         p = hash_get(lb_maps_by_path_index, lbmp->lbmp_index);
 
-        ASSERT(NULL != p);
+        ALWAYS_ASSERT(NULL != p);
 
         fib_node_list_remove(p[0], lbmp->lbmp_sibling);
     }
@@ -310,7 +312,7 @@ load_balance_map_fill (load_balance_map_t *lbm)
                 tmp_buckets[jj++] = bucket++;
             }
         }
-        else 
+        else
         {
             bucket += lbmp->lbmp_weight;
         }
@@ -385,9 +387,14 @@ load_balance_map_alloc (const load_balance_path_t *paths)
 {
     load_balance_map_t *lbm;
     u32 ii;
+    vlib_main_t *vm;
+    u8 did_barrier_sync;
 
+    dpo_pool_barrier_sync (vm, load_balance_map_pool, did_barrier_sync);
     pool_get_aligned(load_balance_map_pool, lbm, CLIB_CACHE_LINE_BYTES);
-    memset(lbm, 0, sizeof(*lbm));
+    dpo_pool_barrier_release (vm, did_barrier_sync);
+
+    clib_memset(lbm, 0, sizeof(*lbm));
 
     vec_validate(lbm->lbm_paths, vec_len(paths)-1);
 
@@ -412,6 +419,9 @@ load_balance_map_init (load_balance_map_t *lbm,
 
     load_balance_map_fill(lbm);
 
+    load_balance_map_logger =
+        vlib_log_register_class ("dpo", "load-balance-map");
+
     return (lbm);
 }
 
@@ -481,7 +491,7 @@ load_balance_map_unlock (index_t lbmi)
     }
 }
 
-static int
+static walk_rc_t
 load_balance_map_path_state_change_walk (fib_node_ptr_t *fptr,
                                          void *ctx)
 {
@@ -491,7 +501,7 @@ load_balance_map_path_state_change_walk (fib_node_ptr_t *fptr,
 
     load_balance_map_fill(lbm);
 
-    return (!0);
+    return (WALK_CONTINUE);
 }
 
 /**
@@ -565,11 +575,11 @@ load_balance_map_show (vlib_main_t * vm,
     {
         load_balance_map_t *lbm;
 
-        pool_foreach(lbm, load_balance_map_pool,
-        ({
+        pool_foreach (lbm, load_balance_map_pool)
+         {
             vlib_cli_output (vm, "%U", format_load_balance_map,
                              load_balance_map_get_index(lbm), 0);
-        }));
+        }
     }
 
     return 0;