tcp: use TCP_SKB_CB(skb)->tcp_flags in input path
authorEric Dumazet <edumazet@google.com>
Mon, 15 Sep 2014 11:19:51 +0000 (04:19 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Sep 2014 18:41:07 +0000 (14:41 -0400)
commite11ecddf5128011c936cc5360780190cbc901fdc
treed7723697219a35e66ae7c1dab9e85832a0d19e11
parent13bb5180e82349d9fcfa11cd17b3c1e7b558a902
tcp: use TCP_SKB_CB(skb)->tcp_flags in input path

Input path of TCP do not currently uses TCP_SKB_CB(skb)->tcp_flags,
which is only used in output path.

tcp_recvmsg(), looks at tcp_hdr(skb)->syn for every skb found in receive queue,
and its unfortunate because this bit is located in a cache line right before
the payload.

We can simplify TCP by copying tcp flags into TCP_SKB_CB(skb)->tcp_flags.

This patch does so, and avoids the cache line miss in tcp_recvmsg()

Following patches will
- allow a segment with FIN being coalesced in tcp_try_coalesce()
- simplify tcp_collapse() by not copying the headers.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c