diff options
author | Florin Coras <fcoras@cisco.com> | 2021-07-06 08:25:36 -0700 |
---|---|---|
committer | Florin Coras <fcoras@cisco.com> | 2021-07-06 14:53:44 -0700 |
commit | 57b2e4acb1104ac34b1c2e29309e0f5f471b42d7 (patch) | |
tree | 19b327e6f24f1930d19f747d3f7535d0852edf91 /src/vnet/tcp/tcp_cli.c | |
parent | 3169e9ff1ef673402aa05332096fb877ca2f4b25 (diff) |
tcp: use main thread pool for half-opens
Type: improvement
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I4b3427b966f9ff1ba8895fed7db662d56650f3f5
Diffstat (limited to 'src/vnet/tcp/tcp_cli.c')
-rw-r--r-- | src/vnet/tcp/tcp_cli.c | 110 |
1 files changed, 3 insertions, 107 deletions
diff --git a/src/vnet/tcp/tcp_cli.c b/src/vnet/tcp/tcp_cli.c index c11b154cebf..e602f114a74 100644 --- a/src/vnet/tcp/tcp_cli.c +++ b/src/vnet/tcp/tcp_cli.c @@ -899,110 +899,6 @@ VLIB_CLI_COMMAND (clear_tcp_stats_command, static) = }; /* *INDENT-ON* */ -static void -tcp_show_half_open (vlib_main_t * vm, u32 start, u32 end, u8 verbose) -{ - tcp_main_t *tm = &tcp_main; - u8 output_suppressed = 0; - u32 n_elts, count = 0; - tcp_connection_t *tc; - int max_index, i; - - n_elts = pool_elts (tm->half_open_connections); - max_index = clib_max (pool_len (tm->half_open_connections), 1) - 1; - if (verbose && end == ~0 && n_elts > 50) - { - vlib_cli_output (vm, "Too many connections, use range <start> <end>"); - return; - } - - if (!verbose) - { - vlib_cli_output (vm, "%u tcp half-open connections", n_elts); - return; - } - - for (i = start; i <= clib_min (end, max_index); i++) - { - if (pool_is_free_index (tm->half_open_connections, i)) - continue; - - tc = pool_elt_at_index (tm->half_open_connections, i); - - count += 1; - if (verbose) - { - if (count > 50 || (verbose > 1 && count > 10)) - { - output_suppressed = 1; - continue; - } - } - vlib_cli_output (vm, "%U", format_tcp_connection, tc, verbose); - } - if (!output_suppressed) - vlib_cli_output (vm, "%u tcp half-open connections", n_elts); - else - vlib_cli_output (vm, "%u tcp half-open connections matched. Output " - "suppressed. Use finer grained filter.", count); - -} - -static clib_error_t * -show_tcp_half_open_fn (vlib_main_t * vm, unformat_input_t * input, - vlib_cli_command_t * cmd) -{ - unformat_input_t _line_input, *line_input = &_line_input; - u32 start, end = ~0, verbose = 0; - clib_error_t *error = 0; - - session_cli_return_if_not_enabled (); - - if (!unformat_user (input, unformat_line_input, line_input)) - { - tcp_show_half_open (vm, 0, ~0, 0); - return 0; - } - - while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) - { - if (unformat (line_input, "range %u %u", &start, &end)) - ; - else if (unformat (line_input, "verbose %d", &verbose)) - ; - else if (unformat (line_input, "verbose")) - verbose = 1; - else - { - error = clib_error_return (0, "unknown input `%U'", - format_unformat_error, input); - goto done; - } - } - - if (start > end) - { - error = clib_error_return (0, "invalid range start: %u end: %u", start, - end); - goto done; - } - - tcp_show_half_open (vm, start, end, verbose); - -done: - unformat_free (line_input); - return error; -} - -/* *INDENT-OFF* */ -VLIB_CLI_COMMAND (show_tcp_half_open_command, static) = -{ - .path = "show tcp half-open", - .short_help = "show tcp half-open [verbose <n>] [range <start> <end>]", - .function = show_tcp_half_open_fn, -}; -/* *INDENT-ON* */ - uword unformat_tcp_cc_algo (unformat_input_t * input, va_list * va) { @@ -1049,7 +945,7 @@ unformat_tcp_cc_algo_cfg (unformat_input_t * input, va_list * va) static clib_error_t * tcp_config_fn (vlib_main_t * vm, unformat_input_t * input) { - u32 cwnd_multiplier, tmp_time, mtu, max_gso_size; + u32 cwnd_multiplier, tmp_time, mtu, max_gso_size, tmp; uword memory_size; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) @@ -1057,8 +953,8 @@ tcp_config_fn (vlib_main_t * vm, unformat_input_t * input) if (unformat (input, "preallocated-connections %d", &tcp_cfg.preallocated_connections)) ; - else if (unformat (input, "preallocated-half-open-connections %d", - &tcp_cfg.preallocated_half_open_connections)) + /* Config deprecated. Will be removed in a later release */ + else if (unformat (input, "preallocated-half-open-connections %d", &tmp)) ; else if (unformat (input, "buffer-fail-fraction %f", &tcp_cfg.buffer_fail_fraction)) |