• Eric Dumazet's avatar
    asix: asix_rx_fixup surgery to reduce skb truesizes · a9e0aca4
    Eric Dumazet authored
    asix_rx_fixup() is complex, and does some unnecessary memory copies (at
    least on x86 where NET_IP_ALIGN is 0)
    
    Also, it tends to provide skbs with a big truesize (4096+256 with
    MTU=1500) to upper stack, so incoming trafic consume a lot of memory and
    I noticed early packet drops because we hit socket rcvbuf too fast.
    
    Switch to a different strategy, using copybreak so that we provide nice
    skbs to upper stack (including the NET_SKB_PAD to avoid future head
    reallocations in some paths)
    
    With this patch, I no longer see packets drops or tcp collapses on
    various tcp workload with a AX88772 adapter.
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Cc: Aurelien Jacobs <aurel@gnuage.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Trond Wuellner <trond@chromium.org>
    Cc: Grant Grundler <grundler@chromium.org>
    Cc: Paul Stewart <pstew@chromium.org>
    Reviewed-by: default avatarGrant Grundler <grundler@chromium.org>
    Reviewed-by: default avatarGrant Grundler <grundler@chromium.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a9e0aca4
asix.c 41.9 KB