diff options
author | Eric Dumazet <edumazet@google.com> | 2018-11-27 18:03:21 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-11-30 16:28:03 -0500 |
commit | 6015c71e656bb6895b416c31a8b7db457e45cecf (patch) | |
tree | ba31e8ae21f52048e475daa33f6bb86df5bfc3b5 /net/ipv4/tcp_ipv4.c | |
parent | 2f69555315ad7dc1ac37366b2ac2429e2d24d444 (diff) |
tcp: md5: add tcp_md5_needed jump label
Most linux hosts never setup TCP MD5 keys. We can avoid a
cache line miss (accessing tp->md5ig_info) on RX and TX
using a jump label.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 4904250a9aac..efc6fef692ff 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -970,10 +970,13 @@ static void tcp_v4_reqsk_destructor(struct request_sock *req) | |||
970 | * We need to maintain these in the sk structure. | 970 | * We need to maintain these in the sk structure. |
971 | */ | 971 | */ |
972 | 972 | ||
973 | struct static_key tcp_md5_needed __read_mostly; | ||
974 | EXPORT_SYMBOL(tcp_md5_needed); | ||
975 | |||
973 | /* Find the Key structure for an address. */ | 976 | /* Find the Key structure for an address. */ |
974 | struct tcp_md5sig_key *tcp_md5_do_lookup(const struct sock *sk, | 977 | struct tcp_md5sig_key *__tcp_md5_do_lookup(const struct sock *sk, |
975 | const union tcp_md5_addr *addr, | 978 | const union tcp_md5_addr *addr, |
976 | int family) | 979 | int family) |
977 | { | 980 | { |
978 | const struct tcp_sock *tp = tcp_sk(sk); | 981 | const struct tcp_sock *tp = tcp_sk(sk); |
979 | struct tcp_md5sig_key *key; | 982 | struct tcp_md5sig_key *key; |
@@ -1011,7 +1014,7 @@ struct tcp_md5sig_key *tcp_md5_do_lookup(const struct sock *sk, | |||
1011 | } | 1014 | } |
1012 | return best_match; | 1015 | return best_match; |
1013 | } | 1016 | } |
1014 | EXPORT_SYMBOL(tcp_md5_do_lookup); | 1017 | EXPORT_SYMBOL(__tcp_md5_do_lookup); |
1015 | 1018 | ||
1016 | static struct tcp_md5sig_key *tcp_md5_do_lookup_exact(const struct sock *sk, | 1019 | static struct tcp_md5sig_key *tcp_md5_do_lookup_exact(const struct sock *sk, |
1017 | const union tcp_md5_addr *addr, | 1020 | const union tcp_md5_addr *addr, |