• Alexander Duyck's avatar
    net: Store checksum result for offloaded GSO checksums · 08b64fcc
    Alexander Duyck authored
    This patch makes it so that we can offload the checksums for a packet up
    to a certain point and then begin computing the checksums via software.
    Setting this up is fairly straight forward as all we need to do is reset
    the values stored in csum and csum_start for the GSO context block.
    
    One complication for this is remote checksum offload.  In order to allow
    the inner checksums to be offloaded while computing the outer checksum
    manually we needed to have some way of indicating that the offload wasn't
    real.  In order to do that I replaced CHECKSUM_PARTIAL with
    CHECKSUM_UNNECESSARY in the case of us computing checksums for the outer
    header while skipping computing checksums for the inner headers.  We clean
    up the ip_summed flag and set it to either CHECKSUM_PARTIAL or
    CHECKSUM_NONE once we hand the packet off to the next lower level.
    Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    08b64fcc
tcp_offload.c 7.68 KB