diff options
author | Florin Coras <fcoras@cisco.com> | 2018-05-23 21:01:30 -0700 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2018-05-26 18:56:43 +0000 |
commit | ca1c8f3e782dc68a51aa2792771d9b4aac696ddd (patch) | |
tree | 890c7250af97dd65357363242e2c7272a199feca /src/vnet/tcp/tcp.h | |
parent | a34c08c8c5a505e55178a9a8ef5391224d5460a5 (diff) |
tcp: loss recovery improvements/fixes
- fix newreno cwnd computation
- reset snd_una_max on entering recovery
- accept acks beyond snd_nxt but less than snd_congestion when in
recovery
- avoid entering fast recovery multiple times when using sacks
- avoid as much as possible sending small segments when doing fast
retransmit
- more event logging
Change-Id: I19dd151d7704e39d4eae06de3a26f5e124875366
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/tcp/tcp.h')
-rw-r--r-- | src/vnet/tcp/tcp.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/vnet/tcp/tcp.h b/src/vnet/tcp/tcp.h index 837b5b4d0d2..10aa721a4eb 100644 --- a/src/vnet/tcp/tcp.h +++ b/src/vnet/tcp/tcp.h @@ -119,7 +119,7 @@ extern timer_expiration_handler tcp_timer_retransmit_syn_handler; _(FAST_RECOVERY, "Fast Recovery") \ _(FR_1_SMSS, "Sent 1 SMSS") \ _(HALF_OPEN_DONE, "Half-open completed") \ - _(FINPNDG, "FIN pending") + _(FINPNDG, "FIN pending") \ typedef enum _tcp_connection_flag_bits { @@ -617,7 +617,7 @@ tcp_available_output_snd_space (const tcp_connection_t * tc) * Estimate of how many bytes we can still push into the network */ always_inline u32 -tcp_available_snd_space (const tcp_connection_t * tc) +tcp_available_cc_snd_space (const tcp_connection_t * tc) { u32 available_wnd = tcp_available_snd_wnd (tc); u32 flight_size = tcp_flight_size (tc); @@ -652,6 +652,7 @@ fib_node_index_t tcp_lookup_rmt_in_fib (tcp_connection_t * tc); /* Made public for unit testing only */ void tcp_update_sack_list (tcp_connection_t * tc, u32 start, u32 end); +u32 tcp_sack_list_bytes (tcp_connection_t * tc); always_inline u32 tcp_time_now (void) @@ -791,7 +792,6 @@ tcp_timer_is_active (tcp_connection_t * tc, tcp_timers_e timer) void scoreboard_remove_hole (sack_scoreboard_t * sb, sack_scoreboard_hole_t * hole); -void scoreboard_update_lost (tcp_connection_t * tc, sack_scoreboard_t * sb); sack_scoreboard_hole_t *scoreboard_insert_hole (sack_scoreboard_t * sb, u32 prev_index, u32 start, u32 end); |