• Ioana Ciornei's avatar
    net: enetc: add support for software TSO · fb8629e2
    Ioana Ciornei authored
    This patch adds support for driver level TSO in the enetc driver using
    the TSO API.
    
    Beside using the usual tso_build_hdr(), tso_build_data() this specific
    implementation also has to compute the checksum, both IP and L4, for
    each resulted segment. This is because the ENETC controller does not
    support Tx checksum offload which is needed in order to take advantage
    of TSO.
    
    With the workaround for the ENETC MDIO erratum in place the Tx path of
    the driver is forced to lock/unlock for each skb sent. This is why, even
    though we are computing the checksum by hand we see the following
    improvement in TCP termination on the LS1028A SoC, on a single A72 core
    running at 1.3GHz:
    
    before: 1.63 Gbits/sec
    after:  2.34 Gbits/sec
    Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Reviewed-by: default avatarClaudiu Manoil <claudiu.manoil@nxp.com>
    Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fb8629e2
enetc.c 70.9 KB