tcp: CLI command to print tcp_cfg

Type: improvement

Change-Id: Ie8f6ddc96fd3f5d44827ace834f8f6baa330d37d
Signed-off-by: Aritra Basu <aritrbas@cisco.com>
This commit is contained in:
Aritra Basu
2024-07-24 10:11:00 -07:00
committed by Florin Coras
parent e30f7122b7
commit dd4356dc97

View File

@ -840,6 +840,74 @@ VLIB_CLI_COMMAND (show_tcp_punt_command, static) =
.function = show_tcp_punt_fn,
};
static u8 *
format_tcp_cfg (u8 *s, va_list *args)
{
tcp_configuration_t tm_cfg = va_arg (*args, tcp_configuration_t);
s = format (s, "max rx fifo size: %U\n", format_memory_size,
tm_cfg.max_rx_fifo);
s = format (s, "min rx fifo size: %U\n", format_memory_size,
tm_cfg.min_rx_fifo);
s = format (s, "default mtu: %u\n", tm_cfg.default_mtu);
s = format (s, "initial cwnd multiplier: %u\n",
tm_cfg.initial_cwnd_multiplier);
s =
format (s, "tx pacing: %s\n", tm_cfg.min_rx_fifo ? "enabled" : "disabled");
s = format (s, "tso: %s\n", tm_cfg.allow_tso ? "allowed" : "disallowed");
s = format (s, "checksum offload: %s\n",
tm_cfg.csum_offload ? "enabled" : "disabled");
s = format (s, "congestion control algorithm: %s\n",
tcp_cc_algo_get (tm_cfg.cc_algo)->name);
s = format (s, "min rwnd update ack: %u\n", tm_cfg.rwnd_min_update_ack);
s = format (s, "max gso packet size: %U\n", format_memory_size,
tm_cfg.max_gso_size);
s = format (s, "close_wait time: %u sec\n",
(u32) (tm_cfg.closewait_time * TCP_TIMER_TICK));
s = format (s, "time_wait time: %u sec\n",
(u32) (tm_cfg.timewait_time * TCP_TIMER_TICK));
s = format (s, "fin_wait1 time: %u sec\n",
(u32) (tm_cfg.finwait1_time * TCP_TIMER_TICK));
s = format (s, "fin_wait2 time: %u sec\n",
(u32) (tm_cfg.finwait2_time * TCP_TIMER_TICK));
s = format (s, "last_ack time: %u sec\n",
(u32) (tm_cfg.lastack_time * TCP_TIMER_TICK));
s = format (s, "fin_ack time: %u sec\n",
(u32) (tm_cfg.closing_time * TCP_TIMER_TICK));
s = format (s, "syn_rcvd time: %u sec\n",
(u32) (tm_cfg.syn_rcvd_time * TCP_TICK));
s = format (s, "tcp allocation error cleanup time: %0.2f sec\n",
(f32) (tm_cfg.alloc_err_timeout * TCP_TIMER_TICK));
s = format (s, "connection cleanup time: %.2f sec\n", tm_cfg.cleanup_time);
s = format (s, "tcp preallocated connections: %u",
tm_cfg.preallocated_connections);
return s;
}
static clib_error_t *
show_tcp_cfg_fn (vlib_main_t *vm, unformat_input_t *input,
vlib_cli_command_t *cmd)
{
tcp_main_t *tm = vnet_get_tcp_main ();
if (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
return clib_error_return (0, "unknown input `%U'", format_unformat_error,
input);
vlib_cli_output (vm, "-----------");
vlib_cli_output (vm, "tcp config");
vlib_cli_output (vm, "-----------");
vlib_cli_output (vm, "%U\n", format_tcp_cfg, tm->cfg);
return 0;
}
VLIB_CLI_COMMAND (show_tcp_cfg_command, static) = {
.path = "show tcp config",
.short_help = "show tcp config",
.function = show_tcp_cfg_fn,
};
static clib_error_t *
show_tcp_stats_fn (vlib_main_t * vm, unformat_input_t * input,
vlib_cli_command_t * cmd)