• Eric Dumazet's avatar
    ipv6: gro: support sit protocol · feec0cb3
    Eric Dumazet authored
    Tom Herbert added SIT support to GRO with commit
    19424e05 ("sit: Add gro callbacks to sit_offload"),
    later reverted by Herbert Xu.
    
    The problem came because Tom patch was building GRO
    packets without proper meta data : If packets were locally
    delivered, we would not care.
    
    But if packets needed to be forwarded, GSO engine was not
    able to segment individual segments.
    
    With the following patch, we correctly set skb->encapsulation
    and inner network header. We also update gso_type.
    
    Tested:
    
    Server :
    netserver
    modprobe dummy
    ifconfig dummy0 8.0.0.1 netmask 255.255.255.0 up
    arp -s 8.0.0.100 4e:32:51:04:47:e5
    iptables -I INPUT -s 10.246.7.151 -j TEE --gateway 8.0.0.100
    ifconfig sixtofour0
    sixtofour0 Link encap:IPv6-in-IPv4
              inet6 addr: 2002:af6:798::1/128 Scope:Global
              inet6 addr: 2002:af6:798::/128 Scope:Global
              UP RUNNING NOARP  MTU:1480  Metric:1
              RX packets:411169 errors:0 dropped:0 overruns:0 frame:0
              TX packets:409414 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:20319631739 (20.3 GB)  TX bytes:29529556 (29.5 MB)
    
    Client :
    netperf -H 2002:af6:798::1 -l 1000 &
    
    Checked on server traffic copied on dummy0 and verify segments were
    properly rebuilt, with proper IP headers, TCP checksums...
    
    tcpdump on eth0 shows proper GRO aggregation takes place.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Acked-by: default avatarTom Herbert <tom@herbertland.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    feec0cb3
ip6_offload.c 7.85 KB