X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ftcp%2Ftcp.c;h=8c3e8b10df0881dff06dee2824247b7b7929c361;hb=671e60e65635b8d030bf303c88411192c747b59e;hp=564f200bc007bcfa2f3c75aa0a4c8916a854b71d;hpb=5a2ec8fc41d14ffc5275ab88761c1fb7e0420a33;p=vpp.git diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c index 564f200bc00..8c3e8b10df0 100644 --- a/src/vnet/tcp/tcp.c +++ b/src/vnet/tcp/tcp.c @@ -284,7 +284,8 @@ tcp_connection_reset (tcp_connection_t * tc) break; case TCP_STATE_SYN_SENT: session_stream_connect_notify (&tc->connection, 1 /* fail */ ); - tcp_connection_cleanup (tc); + tcp_connection_set_state (tc, TCP_STATE_CLOSED); + tcp_timer_set (tc, TCP_TIMER_WAITCLOSE, TCP_CLEANUP_TIME); break; case TCP_STATE_ESTABLISHED: tcp_connection_timers_reset (tc); @@ -307,6 +308,7 @@ tcp_connection_reset (tcp_connection_t * tc) tcp_connection_set_state (tc, TCP_STATE_CLOSED); break; case TCP_STATE_CLOSED: + case TCP_STATE_TIME_WAIT: break; default: TCP_DBG ("reset state: %u", tc->state); @@ -1293,9 +1295,9 @@ tcp_timer_waitclose_handler (u32 conn_index) * is closed. We haven't sent everything but we did try. */ tcp_cong_recovery_off (tc); tcp_send_fin (tc); - rto = clib_max (tc->rto >> tc->rto_boff, 1); + rto = clib_max ((tc->rto >> tc->rto_boff) * TCP_TO_TIMER_TICK, 1); tcp_timer_set (tc, TCP_TIMER_WAITCLOSE, - clib_min (rto * TCP_TO_TIMER_TICK, TCP_2MSL_TIME)); + clib_min (rto, TCP_2MSL_TIME)); session_transport_closed_notify (&tc->connection); } else @@ -1443,8 +1445,7 @@ tcp_main_enable (vlib_main_t * vm) tcp_initialize_timer_wheels (tm); - tm->bytes_per_buffer = vlib_buffer_free_list_buffer_size - (vm, VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX); + tm->bytes_per_buffer = VLIB_BUFFER_DATA_SIZE; return error; }