1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 3 #ifndef _NET_IPV6_GRO_H 4 #define _NET_IPV6_GRO_H 5 6 #include <linux/indirect_call_wrapper.h> 7 8 struct list_head; 9 struct sk_buff; 10 11 INDIRECT_CALLABLE_DECLARE(struct sk_buff *ipv6_gro_receive(struct list_head *, 12 struct sk_buff *)); 13 INDIRECT_CALLABLE_DECLARE(int ipv6_gro_complete(struct sk_buff *, int)); 14 INDIRECT_CALLABLE_DECLARE(struct sk_buff *inet_gro_receive(struct list_head *, 15 struct sk_buff *)); 16 INDIRECT_CALLABLE_DECLARE(int inet_gro_complete(struct sk_buff *, int)); 17 18 #define indirect_call_gro_receive_inet(cb, f2, f1, head, skb) \ 19 ({ \ 20 unlikely(gro_recursion_inc_test(skb)) ? \ 21 NAPI_GRO_CB(skb)->flush |= 1, NULL : \ 22 INDIRECT_CALL_INET(cb, f2, f1, head, skb); \ 23 }) 24 25 #endif /* _NET_IPV6_GRO_H */ 26