net_sched: sch_fq: use hash_ptr()
authorEric Dumazet <edumazet@google.com>
Thu, 17 Nov 2016 17:48:30 +0000 (09:48 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Nov 2016 18:28:56 +0000 (13:28 -0500)
When I wrote sch_fq.c, hash_ptr() on 64bit arches was awful,
and I chose hash_32().

Linus Torvalds and George Spelvin fixed this issue, so we can
use hash_ptr() to get more entropy on 64bit arches with Terabytes
of memory, and avoid the cast games.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_fq.c

index 18e752439f6f42a944a96f704105ea6e98707284..86309a3156a580d2be0a1cffbc93b62a4e1b10bf 100644 (file)
@@ -245,7 +245,7 @@ static struct fq_flow *fq_classify(struct sk_buff *skb, struct fq_sched_data *q)
                skb_orphan(skb);
        }
 
-       root = &q->fq_root[hash_32((u32)(long)sk, q->fq_trees_log)];
+       root = &q->fq_root[hash_ptr(sk, q->fq_trees_log)];
 
        if (q->flows >= (2U << q->fq_trees_log) &&
            q->inactive_flows > q->flows/2)
@@ -599,7 +599,7 @@ static void fq_rehash(struct fq_sched_data *q,
                                kmem_cache_free(fq_flow_cachep, of);
                                continue;
                        }
-                       nroot = &new_array[hash_32((u32)(long)of->sk, new_log)];
+                       nroot = &new_array[hash_ptr(of->sk, new_log)];
 
                        np = &nroot->rb_node;
                        parent = NULL;