On Sun, 2017-08-06 at 13:51 +0400, Ilya Matveychikov wrote: > As tcp_data_queue() function is used just only twice it's better > to move out the first check and wrap it with inline. It saves a > single call in case the condition evaluated as true. > > Signed-off-by: Ilya V. Matveychikov <matvejchi...@gmail.com> > --- > net/ipv4/tcp_input.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index 2920e0c..141a722 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -4585,16 +4585,12 @@ int tcp_send_rcvq(struct sock *sk, struct msghdr > *msg, size_t size) > > } > > -static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) > +static void __tcp_data_queue(struct sock *sk, struct sk_buff *skb) > { > struct tcp_sock *tp = tcp_sk(sk); > bool fragstolen = false; > int eaten = -1; > > - if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) { > - __kfree_skb(skb); > - return; > - } > skb_dst_drop(skb); > __skb_pull(skb, tcp_hdr(skb)->doff * 4); > > @@ -4703,6 +4699,14 @@ static void tcp_data_queue(struct sock *sk, struct > sk_buff *skb) > tcp_data_queue_ofo(sk, skb); > } > > +static inline void tcp_data_queue(struct sock *sk, struct sk_buff *skb) > +{ > + if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) > + __kfree_skb(skb); > + else > + __tcp_data_queue(sk, skb); > +} > +
We wont accept such a change, because this code does not need to be inlined in the callers, ( and btw inline in .c files are discouraged these days )