Branch data Line data Source code
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 : 30 : int __init ipv6_exthdrs_offload_init(void) 20 : : { 21 : 30 : int ret; 22 : : 23 : 30 : ret = inet6_add_offload(&rthdr_offload, IPPROTO_ROUTING); 24 [ - + ]: 30 : if (ret) 25 : 0 : goto out; 26 : : 27 : 30 : ret = inet6_add_offload(&dstopt_offload, IPPROTO_DSTOPTS); 28 [ + - ]: 30 : if (ret) 29 : 0 : goto out_rt; 30 : : 31 : 30 : out: 32 : 30 : return ret; 33 : : 34 : : out_rt: 35 : 0 : inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING); 36 : 0 : goto out; 37 : : }