[IPV4]: Use random32() in net/ipv4/multipath
authorJoe Perches <joe@perches.com>
Thu, 22 Feb 2007 09:26:32 +0000 (01:26 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 26 Feb 2007 19:43:00 +0000 (11:43 -0800)
Removed local random number generator function

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/multipath_random.c
net/ipv4/multipath_wrandom.c

index 57f481498fbb39d99338187b9a0653efbb692b7a..c312785d14d082af7c30994fa24e2d50f4ac18b4 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/module.h>
 #include <linux/mroute.h>
 #include <linux/init.h>
+#include <linux/random.h>
 #include <net/ip.h>
 #include <net/protocol.h>
 #include <linux/skbuff.h>
 
 #define MULTIPATH_MAX_CANDIDATES 40
 
-/* interface to random number generation */
-static unsigned int RANDOM_SEED = 93186752;
-
-static inline unsigned int random(unsigned int ubound)
-{
-       static unsigned int a = 1588635695,
-               q = 2,
-               r = 1117695901;
-
-       RANDOM_SEED = a*(RANDOM_SEED % q) - r*(RANDOM_SEED / q);
-
-       return RANDOM_SEED % ubound;
-}
-
-
 static void random_select_route(const struct flowi *flp,
                                struct rtable *first,
                                struct rtable **rp)
@@ -84,7 +70,7 @@ static void random_select_route(const struct flowi *flp,
        if (candidate_count > 1) {
                unsigned char i = 0;
                unsigned char candidate_no = (unsigned char)
-                       random(candidate_count);
+                       (random32() % candidate_count);
 
                /* find chosen candidate and adjust GC data for all candidates
                 * to ensure they stay in cache
index 2bdbb92b450adbf859501a5d83008d2521a80818..57c50369453934bb238cc5c98ccd873fd40362df 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/module.h>
 #include <linux/mroute.h>
 #include <linux/init.h>
+#include <linux/random.h>
 #include <net/ip.h>
 #include <net/protocol.h>
 #include <linux/skbuff.h>
@@ -84,18 +85,6 @@ struct multipath_route {
 /* state: primarily weight per route information */
 static struct multipath_bucket state[MULTIPATH_STATE_SIZE];
 
-/* interface to random number generation */
-static unsigned int RANDOM_SEED = 93186752;
-
-static inline unsigned int random(unsigned int ubound)
-{
-       static unsigned int a = 1588635695,
-               q = 2,
-               r = 1117695901;
-       RANDOM_SEED = a*(RANDOM_SEED % q) - r*(RANDOM_SEED / q);
-       return RANDOM_SEED % ubound;
-}
-
 static unsigned char __multipath_lookup_weight(const struct flowi *fl,
                                               const struct rtable *rt)
 {
@@ -193,7 +182,7 @@ static void wrandom_select_route(const struct flowi *flp,
 
        /* choose a weighted random candidate */
        decision = first;
-       selector = random(power);
+       selector = random32() % power;
        last_power = 0;
 
        /* select candidate, adjust GC data and cleanup local state */