• Felix Fietkau's avatar
    net: add heuristic for enabling TCP fraglist GRO · c9d1d23e
    Felix Fietkau authored
    When forwarding TCP after GRO, software segmentation is very expensive,
    especially when the checksum needs to be recalculated.
    One case where that's currently unavoidable is when routing packets over
    PPPoE. Performance improves significantly when using fraglist GRO
    implemented in the same way as for UDP.
    
    When NETIF_F_GRO_FRAGLIST is enabled, perform a lookup for an established
    socket in the same netns as the receiving device. While this may not
    cover all relevant use cases in multi-netns configurations, it should be
    good enough for most configurations that need this.
    
    Here's a measurement of running 2 TCP streams through a MediaTek MT7622
    device (2-core Cortex-A53), which runs NAT with flow offload enabled from
    one ethernet port to PPPoE on another ethernet port + cake qdisc set to
    1Gbps.
    
    rx-gro-list off: 630 Mbit/s, CPU 35% idle
    rx-gro-list on:  770 Mbit/s, CPU 40% idle
    Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    c9d1d23e
tcpv6_offload.c 4.43 KB