X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdpo%2Freplicate_dpo.c;h=443df66e238b68da3ff255b9f003810a2d5da397;hb=710071bf0ed7a0926581d1f738a142b72e795d2b;hp=9fdb9a05071517bb0214de649a2e8e5de24ff8f9;hpb=0f26c5a0138ac86d7ebd197c31a09d8d624c35fe;p=vpp.git diff --git a/src/vnet/dpo/replicate_dpo.c b/src/vnet/dpo/replicate_dpo.c index 9fdb9a05071..443df66e238 100644 --- a/src/vnet/dpo/replicate_dpo.c +++ b/src/vnet/dpo/replicate_dpo.c @@ -19,21 +19,20 @@ #include #include -#undef REP_DEBUG +/** + * the logger + */ +vlib_log_class_t replicate_logger; -#ifdef REP_DEBUG #define REP_DBG(_rep, _fmt, _args...) \ { \ - u8* _tmp =NULL; \ - clib_warning("rep:[%s]:" _fmt, \ - replicate_format(replicate_get_index((_rep)), \ - 0, _tmp), \ - ##_args); \ - vec_free(_tmp); \ + vlib_log_debug(replicate_logger, \ + "rep:[%U]:" _fmt, \ + format_replicate, \ + replicate_get_index(_rep), \ + REPLICATE_FORMAT_NONE, \ + ##_args); \ } -#else -#define REP_DBG(_p, _fmt, _args...) -#endif #define foreach_replicate_dpo_error \ _(BUFFER_ALLOCATION_FAILURE, "Buffer Allocation Failure") @@ -59,7 +58,12 @@ replicate_t *replicate_pool; /** * The one instance of replicate main */ -replicate_main_t replicate_main; +replicate_main_t replicate_main = { + .repm_counters = { + .name = "mroutes", + .stat_segment_name = "/net/mroute", + }, +}; static inline index_t replicate_get_index (const replicate_t *rep) @@ -261,7 +265,7 @@ replicate_fill_buckets (replicate_t *rep, u32 n_buckets) { load_balance_path_t * nh; - u16 ii, bucket; + u16 bucket; bucket = 0; @@ -271,11 +275,8 @@ replicate_fill_buckets (replicate_t *rep, */ vec_foreach (nh, nhs) { - for (ii = 0; ii < nh->path_weight; ii++) - { - ASSERT(bucket < n_buckets); - replicate_set_bucket_i(rep, bucket++, buckets, &nh->path_dpo); - } + ASSERT(bucket < n_buckets); + replicate_set_bucket_i(rep, bucket++, buckets, &nh->path_dpo); } } @@ -578,6 +579,7 @@ void replicate_module_init (void) { dpo_register(DPO_REPLICATE, &rep_vft, replicate_nodes); + replicate_logger = vlib_log_register_class("dpo", "replicate"); } static clib_error_t * @@ -670,7 +672,8 @@ replicate_inline (vlib_main_t * vm, vec_validate (rm->clones[thread_index], rep0->rep_n_buckets - 1); - num_cloned = vlib_buffer_clone (vm, bi0, rm->clones[thread_index], rep0->rep_n_buckets, 128); + num_cloned = vlib_buffer_clone (vm, bi0, rm->clones[thread_index], + rep0->rep_n_buckets, 128); if (num_cloned != rep0->rep_n_buckets) { @@ -692,9 +695,16 @@ replicate_inline (vlib_main_t * vm, next0 = dpo0->dpoi_next_node; vnet_buffer (c0)->ip.adj_index[VLIB_TX] = dpo0->dpoi_index; - if (PREDICT_FALSE(c0->flags & VLIB_BUFFER_IS_TRACED)) + if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { - replicate_trace_t *t = vlib_add_trace (vm, node, c0, sizeof (*t)); + replicate_trace_t *t; + + if (c0 != b0) + { + vlib_buffer_copy_trace_flag (vm, b0, ci0); + VLIB_BUFFER_TRACE_TRAJECTORY_INIT (c0); + } + t = vlib_add_trace (vm, node, c0, sizeof (*t)); t->rep_index = repi0; t->dpo = *dpo0; }