Blame view

net/ipv6/exthdrs_offload.c 936 Bytes
81f7e3824   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  /*
   *	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:
  	inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING);
  	goto out;
  }