tcp: avoid initializing counters multiple times
Type: fix
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ia98dae5fdde16426d5457742aff0a1b04db4d034
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c
index 2f90d9a..c7121b4 100644
--- a/src/vnet/tcp/tcp.c
+++ b/src/vnet/tcp/tcp.c
@@ -1482,11 +1482,14 @@
}
static void
-tcp_counters_init (void)
+tcp_counters_init (tcp_main_t *tm)
{
vlib_stats_collector_reg_t r = {};
u32 idx;
+ if (tm->counters_init)
+ return;
+
r.entry_index = idx = vlib_stats_add_counter_vector ("/sys/tcp");
r.collect_fn = tcp_stats_collector_fn;
vlib_stats_validate (idx, 0, TCP_STAT_no_buffer);
@@ -1498,6 +1501,8 @@
#undef _
vlib_stats_register_collector_fn (&r);
+
+ tm->counters_init = 1;
}
static clib_error_t *
@@ -1576,7 +1581,7 @@
tm->bytes_per_buffer = vlib_buffer_get_default_data_size (vm);
tm->cc_last_type = TCP_CC_LAST;
- tcp_counters_init ();
+ tcp_counters_init (tm);
return error;
}
diff --git a/src/vnet/tcp/tcp.h b/src/vnet/tcp/tcp.h
index 962324e..2362a8b 100644
--- a/src/vnet/tcp/tcp.h
+++ b/src/vnet/tcp/tcp.h
@@ -240,6 +240,9 @@
/** Flag that indicates if stack is on or off */
u8 is_enabled;
+ /** Set if counters on stats segment initialized */
+ u8 counters_init;
+
/** Flag that indicates if v4 punting is enabled */
u8 punt_unknown4;