inet: move ipv6only in sock_common
authorEric Dumazet <edumazet@google.com>
Fri, 27 Jun 2014 15:36:16 +0000 (08:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Jul 2014 06:46:21 +0000 (23:46 -0700)
commit9fe516ba3fb29b6f6a752ffd93342fdee500ec01
tree4254ea02ed5d51d92fd7109d33d28bc95b8d3fb1
parent090cce42639c2c82bce2cc26a902e4c674c62882
inet: move ipv6only in sock_common

When an UDP application switches from AF_INET to AF_INET6 sockets, we
have a small performance degradation for IPv4 communications because of
extra cache line misses to access ipv6only information.

This can also be noticed for TCP listeners, as ipv6_only_sock() is also
used from __inet_lookup_listener()->compute_score()

This is magnified when SO_REUSEPORT is used.

Move ipv6only into struct sock_common so that it is available at
no extra cost in lookups.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/ipv6.h
include/net/inet_timewait_sock.h
include/net/sock.h
net/dccp/minisocks.c
net/ipv4/tcp_minisocks.c
net/ipv6/af_inet6.c
net/ipv6/ipv6_sockglue.c
net/ipv6/udp.c