• Eric Dumazet's avatar
    tcp: refine skb->ooo_okay setting · 726e9e8b
    Eric Dumazet authored
    Enabling BIG TCP on a low end platform apparently increased
    chances of getting flows locked on one busy TX queue.
    
    A similar problem was handled in commit 9b462d02
    ("tcp: TCP Small Queues and strange attractors"),
    but the strategy worked for either bulk flows,
    or 'large enough' RPC. BIG TCP changed how large
    RPC needed to be to enable the work around:
    If RPC fits in a single skb, TSQ never triggers.
    
    Root cause for the problem is a busy TX queue,
    with delayed TX completions.
    
    This patch changes how we set skb->ooo_okay to detect
    the case TX completion was not done, but incoming ACK
    already was processed and emptied rtx queue.
    
    Update the comment to explain the tricky details.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20230817182353.2523746-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    726e9e8b
tcp_output.c 123 KB