• K. Den's avatar
    gue: fix remcsum when GRO on and CHECKSUM_PARTIAL boundary is outer UDP · 1bff8a0c
    K. Den authored
    In the case that GRO is turned on and the original received packet is
    CHECKSUM_PARTIAL, if the outer UDP header is exactly at the last
    csum-unnecessary point, which for instance could occur if the packet
    comes from another Linux guest on the same Linux host, we have to do
    either remcsum_adjust or set up CHECKSUM_PARTIAL again with its
    csum_start properly reset considering RCO.
    
    However, since b7fe10e5 ("gro: Fix remcsum offload to deal with frags
    in GRO") that barrier in such case could be skipped if GRO turned on,
    hence we pass over it and the inner L4 validation mistakenly reckons
    it as a bad csum.
    
    This patch makes remcsum_offload being reset at the same time of GRO
    remcsum cleanup, so as to make it work in such case as before.
    
    Fixes: b7fe10e5 ("gro: Fix remcsum offload to deal with frags in GRO")
    Signed-off-by: default avatarKoichiro Den <den@klaipeden.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1bff8a0c
fou.c 23.4 KB