Skip to content

Commit

Permalink
tcp_metrics: Mix the network namespace into the hash function.
Browse files Browse the repository at this point in the history
In preparation for using one hash table for all network namespaces
mix the network namespace into the hash value.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric W. Biederman authored and David S. Miller committed Mar 13, 2015
1 parent 6493517 commit 3e5da62
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions net/ipv4/tcp_metrics.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ static struct tcp_metrics_block *__tcp_get_metrics_req(struct request_sock *req,
}

net = dev_net(dst->dev);
hash ^= net_hash_mix(net);
hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);

for (tm = rcu_dereference(net->ipv4.tcp_metrics_hash[hash].chain); tm;
Expand Down Expand Up @@ -299,6 +300,7 @@ static struct tcp_metrics_block *__tcp_get_metrics_tw(struct inet_timewait_sock
return NULL;

net = twsk_net(tw);
hash ^= net_hash_mix(net);
hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);

for (tm = rcu_dereference(net->ipv4.tcp_metrics_hash[hash].chain); tm;
Expand Down Expand Up @@ -347,6 +349,7 @@ static struct tcp_metrics_block *tcp_get_metrics(struct sock *sk,
return NULL;

net = dev_net(dst->dev);
hash ^= net_hash_mix(net);
hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);

tm = __tcp_get_metrics(&saddr, &daddr, net, hash);
Expand Down Expand Up @@ -994,6 +997,7 @@ static int tcp_metrics_nl_cmd_get(struct sk_buff *skb, struct genl_info *info)
if (!reply)
goto nla_put_failure;

hash ^= net_hash_mix(net);
hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);
ret = -ESRCH;
rcu_read_lock();
Expand Down Expand Up @@ -1070,6 +1074,7 @@ static int tcp_metrics_nl_cmd_del(struct sk_buff *skb, struct genl_info *info)
if (ret < 0)
src = false;

hash ^= net_hash_mix(net);
hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);
hb = net->ipv4.tcp_metrics_hash + hash;
pp = &hb->chain;
Expand Down

0 comments on commit 3e5da62

Please sign in to comment.