Merge tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.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 int __init ipv6_exthdrs_offload_init(void)
20 {
21         int ret;
22
23         ret = inet6_add_offload(&rthdr_offload, IPPROTO_ROUTING);
24         if (ret)
25                 goto out;
26
27         ret = inet6_add_offload(&dstopt_offload, IPPROTO_DSTOPTS);
28         if (ret)
29                 goto out_rt;
30
31 out:
32         return ret;
33
34 out_rt:
35         inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING);
36         goto out;
37 }