tcp: Fix possible double-ack w/ user dma
authorAli Saidi <saidi@engin.umich.edu>
Tue, 7 Oct 2008 22:31:19 +0000 (15:31 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Oct 2008 22:31:19 +0000 (15:31 -0700)
commit53240c208776d557dba9d7afedbcdbf512774c16
treeb47429ecaf4ea004857e5464cf0612cbd06081c7
parentb6c40d68ff6498b7f63ddf97cf0aa818d748dee7
tcp: Fix possible double-ack w/ user dma

From: Ali Saidi <saidi@engin.umich.edu>

When TCP receive copy offload is enabled it's possible that
tcp_rcv_established() will cause two acks to be sent for a single
packet. In the case that a tcp_dma_early_copy() is successful,
copied_early is set to true which causes tcp_cleanup_rbuf() to be
called early which can send an ack. Further along in
tcp_rcv_established(), __tcp_ack_snd_check() is called and will
schedule a delayed ACK. If no packets are processed before the delayed
ack timer expires the packet will be acked twice.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c