mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
cb3ce95401
In order to make it easier to move on to dropping common.h from code directly, remove common.h inclusion from the rest of the header file which had been including it. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com>
59 lines
1 KiB
C
59 lines
1 KiB
C
/*
|
|
* Copied from LiMon - BOOTP.
|
|
*
|
|
* Copyright 1994, 1995, 2000 Neil Russell.
|
|
* (See License)
|
|
* Copyright 2000 Paolo Scaffardi
|
|
*/
|
|
|
|
#ifndef __NET_RAND_H__
|
|
#define __NET_RAND_H__
|
|
|
|
#include <dm/uclass.h>
|
|
#include <rng.h>
|
|
|
|
/*
|
|
* Return a seed for the PRNG derived from the eth0 MAC address.
|
|
*/
|
|
static inline unsigned int seed_mac(void)
|
|
{
|
|
unsigned char enetaddr[ARP_HLEN];
|
|
unsigned int seed;
|
|
|
|
/* get our mac */
|
|
memcpy(enetaddr, eth_get_ethaddr(), ARP_HLEN);
|
|
|
|
seed = enetaddr[5];
|
|
seed ^= enetaddr[4] << 8;
|
|
seed ^= enetaddr[3] << 16;
|
|
seed ^= enetaddr[2] << 24;
|
|
seed ^= enetaddr[1];
|
|
seed ^= enetaddr[0] << 8;
|
|
|
|
return seed;
|
|
}
|
|
|
|
/*
|
|
* Seed the random number generator using the eth0 MAC address.
|
|
*/
|
|
static inline void srand_mac(void)
|
|
{
|
|
int ret;
|
|
struct udevice *devp;
|
|
u32 randv = 0;
|
|
|
|
if (IS_ENABLED(CONFIG_DM_RNG)) {
|
|
ret = uclass_get_device(UCLASS_RNG, 0, &devp);
|
|
if (ret) {
|
|
ret = dm_rng_read(devp, &randv, sizeof(randv));
|
|
if (ret < 0)
|
|
randv = 0;
|
|
}
|
|
}
|
|
if (randv)
|
|
srand(randv);
|
|
else
|
|
srand(seed_mac());
|
|
}
|
|
|
|
#endif /* __NET_RAND_H__ */
|