diff options
author | Florin Coras <fcoras@cisco.com> | 2019-08-30 11:06:35 -0700 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2019-09-29 16:22:19 +0000 |
commit | 0ad8477bafb2a2290ce9977cc1f340bf6eaa00bf (patch) | |
tree | 41db897a1a9b64e71f4e264eb9e0dd2359bf5777 /src/vnet/tcp/tcp_output.c | |
parent | fbe948c8131caec64168029ff54802668e423b33 (diff) |
tcp: send rwnd update only if wnd is large enough
Type: feature
Change-Id: I3e97e05a31806afb6b2e84ecf05fb96d285db92e
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 017dc45243bad1b3708d0a9b902d23ca47859344)
Diffstat (limited to 'src/vnet/tcp/tcp_output.c')
-rw-r--r-- | src/vnet/tcp/tcp_output.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c index 9122973fc8e..ff281b5661d 100644 --- a/src/vnet/tcp/tcp_output.c +++ b/src/vnet/tcp/tcp_output.c @@ -1185,19 +1185,19 @@ tcp_timer_delack_handler (u32 index) } /** - * Send Window Update ACK, - * ensuring that it will be sent once, if RWND became non-zero, - * after zero RWND has been advertised in ACK before + * Send window update ack + * + * Ensures that it will be sent only once, after a zero rwnd has been + * advertised in a previous ack, and only if rwnd has grown beyond a + * configurable value. */ void tcp_send_window_update_ack (tcp_connection_t * tc) { - u32 win; - if (tcp_zero_rwnd_sent (tc)) { - win = tcp_window_to_advertise (tc, tc->state); - if (win > 0) + tcp_update_rcv_wnd (tc); + if (tc->rcv_wnd >= tcp_cfg.rwnd_min_update_ack * tc->snd_mss) { tcp_zero_rwnd_sent_off (tc); tcp_program_ack (tc); |