diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2013-10-19 15:48:57 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-19 19:45:35 -0400 |
commit | 1bbdceef1e535add893bf71d7b7ab102e4eb69eb (patch) | |
tree | e2eed21c778d0a6458f8350ce5f6fbfc6c58810e /net/rds | |
parent | b23a002fc6f0c19846ee0382f019429af54a27e9 (diff) |
inet: convert inet_ehash_secret and ipv6_hash_secret to net_get_random_once
Initialize the ehash and ipv6_hash_secrets with net_get_random_once.
Each compilation unit gets its own secret now:
ipv4/inet_hashtables.o
ipv4/udp.o
ipv6/inet6_hashtables.o
ipv6/udp.o
rds/connection.o
The functions still get inlined into the hashing functions. In the fast
path we have at most two (needed in ipv6) if (unlikely(...)).
Cc: Eric Dumazet <edumazet@google.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds')
-rw-r--r-- | net/rds/connection.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/rds/connection.c b/net/rds/connection.c index 45e23660437a..378c3a6acf84 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c | |||
@@ -51,10 +51,16 @@ static struct kmem_cache *rds_conn_slab; | |||
51 | 51 | ||
52 | static struct hlist_head *rds_conn_bucket(__be32 laddr, __be32 faddr) | 52 | static struct hlist_head *rds_conn_bucket(__be32 laddr, __be32 faddr) |
53 | { | 53 | { |
54 | static u32 rds_hash_secret __read_mostly; | ||
55 | |||
56 | unsigned long hash; | ||
57 | |||
58 | net_get_random_once(&rds_hash_secret, sizeof(rds_hash_secret)); | ||
59 | |||
54 | /* Pass NULL, don't need struct net for hash */ | 60 | /* Pass NULL, don't need struct net for hash */ |
55 | unsigned long hash = __inet_ehashfn(be32_to_cpu(laddr), 0, | 61 | hash = __inet_ehashfn(be32_to_cpu(laddr), 0, |
56 | be32_to_cpu(faddr), 0, | 62 | be32_to_cpu(faddr), 0, |
57 | inet_ehash_secret); | 63 | rds_hash_secret); |
58 | return &rds_conn_hash[hash & RDS_CONNECTION_HASH_MASK]; | 64 | return &rds_conn_hash[hash & RDS_CONNECTION_HASH_MASK]; |
59 | } | 65 | } |
60 | 66 | ||