From 503480d772158d404987aca60c94f96505991d4e Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Sat, 24 Jun 2023 18:57:17 -0700 Subject: tcp: avoid initializing counters multiple times Type: fix Signed-off-by: Florin Coras Change-Id: Ia98dae5fdde16426d5457742aff0a1b04db4d034 --- src/vnet/tcp/tcp.c | 9 +++++++-- src/vnet/tcp/tcp.h | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/vnet/tcp') 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; -- cgit 1.2.3-korg