• David Morley's avatar
    tcp: change data receiver flowlabel after one dup · 93946301
    David Morley authored
    This commit changes the data receiver repath behavior to occur after
    receiving a single duplicate. This can help recover ACK connectivity
    quicker if a TLP was sent along a nonworking path.
    
    For instance, consider the case where we have an initially nonworking
    forward path and reverse path and subsequently switch to only working
    forward paths. Before this patch we would have the following behavior.
    
    +---------+--------+--------+----------+----------+----------+
    | Event   | For FL | Rev FL | FP Works | RP Works | Data Del |
    +---------+--------+--------+----------+----------+----------+
    | Initial | A      | 1      | N        | N        | 0        |
    +---------+--------+--------+----------+----------+----------+
    | TLP     | A      | 1      | N        | N        | 0        |
    +---------+--------+--------+----------+----------+----------+
    | RTO 1   | B      | 1      | Y        | N        | 1        |
    +---------+--------+--------+----------+----------+----------+
    | RTO 2   | C      | 1      | Y        | N        | 2        |
    +---------+--------+--------+----------+----------+----------+
    | RTO 3   | D      | 2      | Y        | Y        | 3        |
    +---------+--------+--------+----------+----------+----------+
    
    This patch gets rid of at least RTO 3, avoiding additional unnecessary
    repaths of a working forward path to a (potentially) nonworking one.
    
    In addition, this commit changes the behavior to avoid repathing upon
    rx of duplicate data if the local endpoint is in CA_Loss (in which
    case the RTOs will already be changing the outgoing flowlabel).
    Signed-off-by: default avatarDavid Morley <morleyd@google.com>
    Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
    Tested-by: default avatarDavid Morley <morleyd@google.com>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    93946301
tcp_input.c 205 KB