GRE: Add support for GRO/GSO of IPv6 GRE traffic
authorAlexander Duyck <aduyck@mirantis.com>
Thu, 14 Apr 2016 19:33:58 +0000 (15:33 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 Apr 2016 23:09:13 +0000 (19:09 -0400)
Since GRE doesn't really care about L3 protocol we can support IPv4 and
IPv6 using the same offloads.  With that being the case we can add a call
to register the offloads for IPv6 as a part of our GRE offload
initialization.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/gre_offload.c

index 20557f2..e88190a 100644 (file)
@@ -292,6 +292,18 @@ static const struct net_offload gre_offload = {
 
 static int __init gre_offload_init(void)
 {
-       return inet_add_offload(&gre_offload, IPPROTO_GRE);
+       int err;
+
+       err = inet_add_offload(&gre_offload, IPPROTO_GRE);
+#if IS_ENABLED(CONFIG_IPV6)
+       if (err)
+               return err;
+
+       err = inet6_add_offload(&gre_offload, IPPROTO_GRE);
+       if (err)
+               inet_del_offload(&gre_offload, IPPROTO_GRE);
+#endif
+
+       return err;
 }
 device_initcall(gre_offload_init);