diff options
-rw-r--r-- | src/vnet/tcp/tcp.c | 9 | ||||
-rw-r--r-- | src/vnet/tcp/tcp.h | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c index 2f90d9add81..c7121b43e23 100644 --- a/src/vnet/tcp/tcp.c +++ b/src/vnet/tcp/tcp.c @@ -1482,11 +1482,14 @@ tcp_stats_collector_fn (vlib_stats_collector_data_t *d) } 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 @@ tcp_counters_init (void) #undef _ vlib_stats_register_collector_fn (&r); + + tm->counters_init = 1; } static clib_error_t * @@ -1576,7 +1581,7 @@ tcp_main_enable (vlib_main_t * vm) 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 962324e2eaf..2362a8bb857 100644 --- a/src/vnet/tcp/tcp.h +++ b/src/vnet/tcp/tcp.h @@ -240,6 +240,9 @@ typedef struct _tcp_main /** 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; |