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>
This commit is contained in:

committed by
David S. Miller

parent
090cce4263
commit
9fe516ba3f
@@ -298,7 +298,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo)
|
||||
tw->tw_v6_rcv_saddr = sk->sk_v6_rcv_saddr;
|
||||
tw->tw_tclass = np->tclass;
|
||||
tw->tw_flowlabel = np->flow_label >> 12;
|
||||
tw->tw_ipv6only = np->ipv6only;
|
||||
tw->tw_ipv6only = sk->sk_ipv6only;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user