• Pavel Emelyanov's avatar
    tcp: Repair connection-time negotiated parameters · b139ba4e
    Pavel Emelyanov authored
    There are options, which are set up on a socket while performing
    TCP handshake. Need to resurrect them on a socket while repairing.
    A new sockoption accepts a buffer and parses it. The buffer should
    be CODE:VALUE sequence of bytes, where CODE is standard option
    code and VALUE is the respective value.
    
    Only 4 options should be handled on repaired socket.
    
    To read 3 out of 4 of these options the TCP_INFO sockoption can be
    used. An ability to get the last one (the mss_clamp) was added by
    the previous patch.
    
    Now the restore. Three of these options -- timestamp_ok, mss_clamp
    and snd_wscale -- are just restored on a coket.
    
    The sack_ok flags has 2 issues. First, whether or not to do sacks
    at all. This flag is just read and set back. No other sack  info is
    saved or restored, since according to the standart and the code
    dropping all sack-ed segments is OK, the sender will resubmit them
    again, so after the repair we will probably experience a pause in
    connection. Next, the fack bit. It's just set back on a socket if
    the respective sysctl is set. No collected stats about packets flow
    is preserved. As far as I see (plz, correct me if I'm wrong) the
    fack-based congestion algorithm survives dropping all of the stats
    and repairs itself eventually, probably losing the performance for
    that period.
    Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b139ba4e
tcp.c 90.8 KB