]> git.baikalelectronics.ru Git - kernel.git/commit
ipv6: Clear flush_id to make GRO work
authorTom Herbert <therbert@google.com>
Tue, 9 Sep 2014 18:23:14 +0000 (11:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Sep 2014 04:29:33 +0000 (21:29 -0700)
commit37c6ee3fb4e9edabfd0c303f410efb3ec64fbb36
tree6ecf406c07b9ce8dde6b059e4c88889402115ed3
parent0b7197a3fd77bf533f84075d891217a8ace3bfe7
ipv6: Clear flush_id to make GRO work

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: Tom Herbert <therbert@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_offload.c