exthdrs_offload.c (711B)
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 11static const struct net_offload rthdr_offload = { 12 .flags = INET6_PROTO_GSO_EXTHDR, 13}; 14 15static const struct net_offload dstopt_offload = { 16 .flags = INET6_PROTO_GSO_EXTHDR, 17}; 18 19int __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 31out: 32 return ret; 33 34out_rt: 35 inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING); 36 goto out; 37}