On Tue, Feb 02, 2021 at 03:57:07PM +0100, Eric Dumazet wrote: > On Tue, Feb 2, 2021 at 2:56 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote: > > > > From: Leon Romanovsky <leonro@xxxxxxxxxx> > > > > Fir the following compilation warnings: > > 1031 | INDIRECT_CALLABLE_SCOPE void udp_v6_early_demux(struct sk_buff *skb) > > > > net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes] > > 182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head, > > | ^~~~~~~~~~~~~~~~ > > net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes] > > 320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff) > > | ^~~~~~~~~~~~~~~~~ > > net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes] > > 182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head, > > | ^~~~~~~~~~~~~~~~ > > net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes] > > 320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff) > > > > Fixes: aaa5d90b395a ("net: use indirect call wrappers at GRO network layer") > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > > --- > > include/net/ipv6.h | 3 +++ > > net/core/dev.c | 4 +--- > > 2 files changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/include/net/ipv6.h b/include/net/ipv6.h > > index bd1f396cc9c7..68676e6bd4b1 100644 > > --- a/include/net/ipv6.h > > +++ b/include/net/ipv6.h > > @@ -1265,4 +1265,7 @@ static inline void ip6_sock_set_recvpktinfo(struct sock *sk) > > release_sock(sk); > > } > > > > +INDIRECT_CALLABLE_DECLARE(struct sk_buff *ipv6_gro_receive(struct list_head *, > > + struct sk_buff *)); > > +INDIRECT_CALLABLE_DECLARE(int ipv6_gro_complete(struct sk_buff *, int)); > > > I think we should move this to a new include file. The ipv6_gro_* used in net/core/dev.c and net/ipv6/ip6_offload.c. This left me with four options: 1. Use existing and already shared file - include/net/ipv6.h 2. Create new header and put it in net/, so include will be something like that "../new_file.h". 3. Put new header in one of the folders or core/ or ipv6/. 4. Create new file in include/net just for those two lines. I preferred option #1, which other option do you want me to redo? > > These declarations were static, and had to be made public only because > of DIRECT call stuff, > which is an implementation detail. > > Polluting include/net/ipv6.h seems not appropriate. Thanks for the review.