remove experimental tags from all symbol definitions
[dpdk.git] / lib / librte_eal / common / rte_random.c
index 3d9b9b7..57ec8fb 100644 (file)
@@ -137,7 +137,7 @@ rte_rand(void)
        return __rte_rand_lfsr258(state);
 }
 
-uint64_t __rte_experimental
+uint64_t
 rte_rand_max(uint64_t upper_bound)
 {
        struct rte_rand_state *state;
@@ -189,14 +189,13 @@ __rte_random_initial_seed(void)
                return ge_seed;
 #endif
 #ifdef RTE_MACHINE_CPUFLAG_RDSEED
-       unsigned int rdseed_rc;
-       unsigned long long rdseed_seed;
+       unsigned int rdseed_low;
+       unsigned int rdseed_high;
 
        /* first fallback: rdseed instruction, if available */
-       rdseed_rc = _rdseed64_step(&rdseed_seed);
-
-       if (rdseed_rc == 1)
-               return (uint64_t)rdseed_seed;
+       if (_rdseed32_step(&rdseed_low) == 1 &&
+           _rdseed32_step(&rdseed_high) == 1)
+               return (uint64_t)rdseed_low | ((uint64_t)rdseed_high << 32);
 #endif
        /* second fallback: seed using rdtsc */
        return rte_get_timer_cycles();