aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2018-11-27 18:03:21 -0500
committerDavid S. Miller <davem@davemloft.net>2018-11-30 16:28:03 -0500
commit6015c71e656bb6895b416c31a8b7db457e45cecf (patch)
treeba31e8ae21f52048e475daa33f6bb86df5bfc3b5 /net/ipv4/tcp_ipv4.c
parent2f69555315ad7dc1ac37366b2ac2429e2d24d444 (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.c11
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
973struct static_key tcp_md5_needed __read_mostly;
974EXPORT_SYMBOL(tcp_md5_needed);
975
973/* Find the Key structure for an address. */ 976/* Find the Key structure for an address. */
974struct tcp_md5sig_key *tcp_md5_do_lookup(const struct sock *sk, 977struct 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}
1014EXPORT_SYMBOL(tcp_md5_do_lookup); 1017EXPORT_SYMBOL(__tcp_md5_do_lookup);
1015 1018
1016static struct tcp_md5sig_key *tcp_md5_do_lookup_exact(const struct sock *sk, 1019static 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,