• Ioana Ciornei's avatar
    dpaa2-eth: add support for software TSO · 3dc709e0
    Ioana Ciornei authored
    This patch adds support for driver level TSO in the enetc driver using
    the TSO API.
    
    There is not much to say about this specific implementation. We are
    using the usual tso_build_hdr(), tso_build_data() to create each data
    segment, we create an array of S/G FDs where the first S/G entry is
    referencing the header data and the remaining ones the data portion.
    
    For the S/G Table buffer we use the same cache of buffers used on the
    other non-GSO cases - dpaa2_eth_sgt_get() and dpaa2_eth_sgt_recycle().
    
    We cannot keep a DMA coherent buffer for all the TSO headers because the
    DPAA2 architecture does not work in a ring based fashion so we just
    allocate a buffer each time.
    
    Even with these limitations we get the following improvement in TCP
    termination on the LX2160A SoC, on a single A72 core running at 2.2GHz.
    
    before: 6.38Gbit/s
    after:  8.48Gbit/s
    Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3dc709e0
dpaa2-eth.h 20.4 KB