tcp: TCP Fast Open Server - call tcp_validate_incoming() for all packets
authorNeal Cardwell <ncardwell@google.com>
Sat, 22 Sep 2012 04:18:57 +0000 (04:18 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 22 Sep 2012 19:47:10 +0000 (15:47 -0400)
commite69bebde46b5ddfb7d8f17cae66031e282ebc464
tree74fcce514202365cd6c7178699da1da128f29f7f
parent072539880156fafd86c753070e598c23e8e74586
tcp: TCP Fast Open Server - call tcp_validate_incoming() for all packets

A TCP Fast Open (TFO) passive connection must call both
tcp_check_req() and tcp_validate_incoming() for all incoming ACKs that
are attempting to complete the 3WHS.

This is needed to parallel all the action that happens for a non-TFO
connection, where for an ACK that is attempting to complete the 3WHS
we call both tcp_check_req() and tcp_validate_incoming().

For example, upon receiving the ACK that completes the 3WHS, we need
to call tcp_fast_parse_options() and update ts_recent based on the
incoming timestamp value in the ACK.

One symptom of the problem with the previous code was that for passive
TFO connections using TCP timestamps, the outgoing TS ecr values
ignored the incoming TS val value on the ACK that completed the 3WHS.

Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c