text: /*
   *	IPV6 GSO/GRO offload support
   *	Linux INET6 implementation
   *
   *	This program is free software; you can redistribute it and/or
   *      modify it under the terms of the GNU General Public License
   *      as published by the Free Software Foundation; either version
   *      2 of the License, or (at your option) any later version.
   *
   *      IPV6 Extension Header GSO/GRO support
   */
  #include <net/protocol.h>
  #include "ip6_offload.h"
  
  static const struct net_offload rthdr_offload = {
  	.flags		=	INET6_PROTO_GSO_EXTHDR,
  };
  
  static const struct net_offload dstopt_offload = {
  	.flags		=	INET6_PROTO_GSO_EXTHDR,
  };
  
  int __init ipv6_exthdrs_offload_init(void)
  {
  	int ret;
  
  	ret = inet6_add_offload(&rthdr_offload, IPPROTO_ROUTING);
  	if (ret)
  		goto out;
  
  	ret = inet6_add_offload(&dstopt_offload, IPPROTO_DSTOPTS);
  	if (ret)
  		goto out_rt;
  
  out:
  	return ret;
  
  out_rt:
  	inet_del_offload(&rthdr_offload, IPPROTO_ROUTING);
  	goto out;
  }
  