diff --git a/src/vnet/tcp/tcp_cli.c b/src/vnet/tcp/tcp_cli.c
index 16b8858..bb7f3ef 100644
--- a/src/vnet/tcp/tcp_cli.c
+++ b/src/vnet/tcp/tcp_cli.c
@@ -840,6 +840,74 @@
   .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)
