• Neal Cardwell's avatar
    tcp: TCP Fast Open Server - call tcp_validate_incoming() for all packets · e69bebde
    Neal Cardwell authored
    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: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e69bebde
tcp_input.c 174 KB