1/*
2 *	IPV6 GSO/GRO offload support
3 *	Linux INET6 implementation
4 *
5 *	This program is free software; you can redistribute it and/or
6 *      modify it under the terms of the GNU General Public License
7 *      as published by the Free Software Foundation; either version
8 *      2 of the License, or (at your option) any later version.
9 *
10 *      IPV6 Extension Header GSO/GRO support
11 */
12#include <net/protocol.h>
13#include "ip6_offload.h"
14
15static const struct net_offload rthdr_offload = {
16	.flags		=	INET6_PROTO_GSO_EXTHDR,
17};
18
19static const struct net_offload dstopt_offload = {
20	.flags		=	INET6_PROTO_GSO_EXTHDR,
21};
22
23int __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
35out:
36	return ret;
37
38out_rt:
39	inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING);
40	goto out;
41}
42