• Tom Herbert's avatar
    ipv6: Clear flush_id to make GRO work · 03d56daa
    Tom Herbert authored
    In TCP gro we check flush_id which is derived from the IP identifier.
    In IPv4 gro path the flush_id is set with the expectation that every
    matched packet increments IP identifier. In IPv6, the flush_id is
    never set and thus is uinitialized. What's worse is that in IPv6
    over IPv4 encapsulation, the IP identifier is taken from the outer
    header which is currently not incremented on every packet for Linux
    stack, so GRO in this case never matches packets (identifier is
    not increasing).
    
    This patch clears flush_id for every time for a matched packet in
    IPv6 gro_receive. We need to do this each time to overwrite the
    setting that would be done in IPv4 gro_receive per the outer
    header in IPv6 over Ipv4 encapsulation.
    Signed-off-by: default avatarTom Herbert <therbert@google.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    03d56daa
ip6_offload.c 8.11 KB