tcp: fix for zero packets_in_flight was too broad
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Mon, 4 Feb 2013 02:14:25 +0000 (02:14 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Feb 2013 20:53:03 +0000 (15:53 -0500)
commit6731d2095bd4aef18027c72ef845ab1087c3ba63
treee0937e662eb7fd4ed026590e8dfa6c3abd37b806
parentb6ec447df935669d670e82bd66d9d161418efdfa
tcp: fix for zero packets_in_flight was too broad

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>
net/ipv4/tcp_input.c