Merge tag 'kbuild-fixes-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/masah...
[linux-block.git] / net / ipv6 / exthdrs_offload.c
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 }