tcp: fix for zero packets_in_flight was too broad
commit31885683c218d57ff90d827a1be5c5d3cb4263ac
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Mon, 4 Feb 2013 02:14:25 +0000 (4 02:14 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Feb 2013 18:47:35 +0000 (14 10:47 -0800)
tree49e43a1aa08c877a97d1afc7c6ec6c59e2fa9cec
parentff1e4e5817d104e9aa46305db294602514e1c12b
tcp: fix for zero packets_in_flight was too broad

[ Upstream commit 6731d2095bd4aef18027c72ef845ab1087c3ba63 ]

There are transients during normal FRTO procedure during which
the packets_in_flight can go to zero between write_queue state
updates and firing the resulting segments out. As FRTO processing
occurs during that window the check must be more precise to
not match "spuriously" :-). More specificly, e.g., when
packets_in_flight is zero but FLAG_DATA_ACKED is true the problematic
branch that set cwnd into zero would not be taken and new segments
might be sent out later.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Tested-by: Eric Dumazet <edumazet@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv4/tcp_input.c