Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/net/ipv6/exthdrs_offload.c
26278 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* IPV6 GSO/GRO offload support
4
* Linux INET6 implementation
5
*
6
* IPV6 Extension Header GSO/GRO support
7
*/
8
#include <net/protocol.h>
9
#include "ip6_offload.h"
10
11
static const struct net_offload rthdr_offload = {
12
.flags = INET6_PROTO_GSO_EXTHDR,
13
};
14
15
static const struct net_offload dstopt_offload = {
16
.flags = INET6_PROTO_GSO_EXTHDR,
17
};
18
19
static const struct net_offload hbh_offload = {
20
.flags = INET6_PROTO_GSO_EXTHDR,
21
};
22
23
int __init ipv6_exthdrs_offload_init(void)
24
{
25
int ret;
26
27
ret = inet6_add_offload(&rthdr_offload, IPPROTO_ROUTING);
28
if (ret)
29
goto out;
30
31
ret = inet6_add_offload(&dstopt_offload, IPPROTO_DSTOPTS);
32
if (ret)
33
goto out_rt;
34
35
ret = inet6_add_offload(&hbh_offload, IPPROTO_HOPOPTS);
36
if (ret)
37
goto out_dstopts;
38
39
out:
40
return ret;
41
42
out_dstopts:
43
inet6_del_offload(&dstopt_offload, IPPROTO_DSTOPTS);
44
45
out_rt:
46
inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING);
47
goto out;
48
}
49
50