• willy tarreau's avatar
    net: mvneta: implement rx_copybreak · f19fadfc
    willy tarreau authored
    calling dma_map_single()/dma_unmap_single() is quite expensive compared
    to copying a small packet. So let's copy short frames and keep the buffers
    mapped. We set the limit to 256 bytes which seems to give good results both
    on the XP-GP board and on the AX3/4.
    
    The Rx small packet rate increased by 16.4% doing this, from 486kpps to
    573kpps. It is worth noting that even the call to the function
    dma_sync_single_range_for_cpu() is expensive (300 ns) although less
    than dma_unmap_single(). Without it, the packet rate raises to 711kpps
    (+24% more). Thus on systems where coherency from device to CPU is
    guaranteed by a snoop control unit, this patch should provide even more
    gains, and probably rx_copybreak could be increased.
    
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Tested-by: default avatarArnaud Ebalard <arno@natisbad.org>
    Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f19fadfc
mvneta.c 79.4 KB