ipv6: make lookups simpler and faster
TCP listener refactoring, part 4 : To speed up inet lookups, we moved IPv4 addresses from inet to struct sock_common Now is time to do the same for IPv6, because it permits us to have fast lookups for all kind of sockets, including upcoming SYN_RECV. Getting IPv6 addresses in TCP lookups currently requires two extra cache lines, plus a dereference (and memory stall). inet6_sk(sk) does the dereference of inet_sk(__sk)->pinet6 This patch is way bigger than its IPv4 counter part, because for IPv4, we could add aliases (inet_daddr, inet_rcv_saddr), while on IPv6, it's not doable easily. inet6_sk(sk)->daddr becomes sk->sk_v6_daddr inet6_sk(sk)->rcv_saddr becomes sk->sk_v6_rcv_saddr And timewait socket also have tw->tw_v6_daddr & tw->tw_v6_rcv_saddr at the same offset. We get rid of INET6_TW_MATCH() as INET6_MATCH() is now the generic macro. Signed-off-by:Eric Dumazet <edumazet@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- include/linux/ipv6.h 6 additions, 40 deletionsinclude/linux/ipv6.h
- include/net/inet6_hashtables.h 2 additions, 3 deletionsinclude/net/inet6_hashtables.h
- include/net/inet_timewait_sock.h 3 additions, 1 deletioninclude/net/inet_timewait_sock.h
- include/net/ip.h 1 addition, 1 deletioninclude/net/ip.h
- include/net/ip6_checksum.h 1 addition, 1 deletioninclude/net/ip6_checksum.h
- include/net/sock.h 9 additions, 0 deletionsinclude/net/sock.h
- net/dccp/ipv6.c 12 additions, 12 deletionsnet/dccp/ipv6.c
- net/dccp/ipv6.h 0 additions, 1 deletionnet/dccp/ipv6.h
- net/dccp/minisocks.c 2 additions, 5 deletionsnet/dccp/minisocks.c
- net/ipv4/inet_diag.c 15 additions, 20 deletionsnet/ipv4/inet_diag.c
- net/ipv4/ping.c 7 additions, 8 deletionsnet/ipv4/ping.c
- net/ipv4/tcp_metrics.c 4 additions, 6 deletionsnet/ipv4/tcp_metrics.c
- net/ipv4/tcp_minisocks.c 2 additions, 5 deletionsnet/ipv4/tcp_minisocks.c
- net/ipv4/tcp_probe.c 11 additions, 18 deletionsnet/ipv4/tcp_probe.c
- net/ipv4/tcp_timer.c 1 addition, 2 deletionsnet/ipv4/tcp_timer.c
- net/ipv6/af_inet6.c 5 additions, 5 deletionsnet/ipv6/af_inet6.c
- net/ipv6/datagram.c 12 additions, 13 deletionsnet/ipv6/datagram.c
- net/ipv6/inet6_connection_sock.c 3 additions, 4 deletionsnet/ipv6/inet6_connection_sock.c
- net/ipv6/inet6_hashtables.c 19 additions, 39 deletionsnet/ipv6/inet6_hashtables.c
- net/ipv6/ipv6_sockglue.c 4 additions, 3 deletionsnet/ipv6/ipv6_sockglue.c
Loading
Please register or sign in to comment