From: Christian Riesch <christian.riesch@omicron.at>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/2] calimain: Generate random MAC address for factory tests
Date: Wed, 09 Jan 2013 09:34:12 +0100 [thread overview]
Message-ID: <50ED2B84.2080905@omicron.at> (raw)
In-Reply-To: <20130108173947.5B123202B69@gemini.denx.de>
Hello Wolfgang,
Thank you again for your comments.
On 2013-01-08 18:39, Wolfgang Denk wrote:
> Dear Christian Riesch,
>
> In message <6cc4810c-1e2e-4ebf-912a-96936f035c0e@mary.at.omicron.at> you wrote:
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> ---
>> board/omicron/calimain/calimain.c | 31 ++++++++++++++++++++++++++++++-
>> include/configs/calimain.h | 2 ++
>> 2 files changed, 32 insertions(+), 1 deletion(-)
>>
>> diff --git a/board/omicron/calimain/calimain.c b/board/omicron/calimain/calimain.c
>> index 1060a1f..80e3893 100644
>> --- a/board/omicron/calimain/calimain.c
>> +++ b/board/omicron/calimain/calimain.c
>> @@ -1,5 +1,5 @@
>> /*
>> - * Copyright (C) 2011 OMICRON electronics GmbH
>> + * Copyright (C) 2011-2013 OMICRON electronics GmbH
>> *
>> * Based on da850evm.c. Original Copyrights follow:
>> *
>> @@ -136,6 +136,35 @@ int board_init(void)
>> return 0;
>> }
>>
>> +/* seed random number generator with uninitialized SRAM content */
>> +static void srand_sram(void)
>> +{
>> + int *p;
>> + int seed = 0;
>> +
>> + for (p = (int *) 0x80000000; p < (int *) 0x8001ffff; p++)
>> + seed ^= *p;
>> +
>> + srand(seed);
>> +}
>
> Note that your "uninitialized" SRAM content is probably not so much
> random at all -
There are several papers around describing the use of initial SRAM value
after power up for the generation of random numbers. This is why I gave
it a try, and it works pretty well for me. I get a different seed for
each power-up cycle. I guess that the randomness is limited and that
part of the generated seed is more a fingerprint for the chip, therefore
it may not be good enough for security related stuff, but for my purpose
it's ok.
> I guess, it is much less random than the originally
> used timer value.
In my case the timer value is not random at all since it is reset to
zero at power-up. Since seeding the random number generator is always
done at the same time after power-up in the current code, the seed will
always be the same for my devices. Therefore the generated MAC address
will always be the same for all devices.
> What exactly is your justification for such a change? Please
> elucidate...
Actually I do not change anything ;-)
For the lsxl board that is currently the only user of eth_random_enet(),
nothing changes. get_timer(0) remains the source of the randomness for
this board. My patches only allow other boards to use a sources of
randomness that is available to them instead of forcing everyone to use
get_timer(0).
>
>> +int board_late_init(void)
>> +{
>> + uchar enetaddr[6];
>> +
>> + if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
>> + srand_sram();
>> + eth_random_enetaddr(enetaddr);
>> + if (eth_setenv_enetaddr("ethaddr", enetaddr)) {
>> + printf("Failed to set random ethernet address\n");
>> + } else {
>> + printf("Setting random ethernet address %pM.\n",
>> + enetaddr);
>> + }
>> + }
>> + return 0;
>> +}
>
> NAK! You are but duplicating the code already present in net/eth.c
Apparently I am missing something here. I do not see a call of
eth_random_enetaddr() in net/eth.c. To which part of net/eth.c are you
referring?
Regards, Christian
> This makes no sense.
>
> Best regards,
>
> Wolfgang Denk
>
next prev parent reply other threads:[~2013-01-09 8:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1357653279-29635-1-git-send-email-christian.riesch@omicron.at>
2013-01-08 13:54 ` [U-Boot] [PATCH 1/2] net: Remove call of srand from eth_random_enetaddr() Christian Riesch
2013-01-08 17:37 ` Wolfgang Denk
2013-01-09 7:05 ` Christian Riesch
2013-01-09 8:47 ` Wolfgang Denk
2013-01-08 13:54 ` [U-Boot] [PATCH 2/2] calimain: Generate random MAC address for factory tests Christian Riesch
2013-01-08 17:39 ` Wolfgang Denk
2013-01-09 8:34 ` Christian Riesch [this message]
2013-01-09 9:04 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50ED2B84.2080905@omicron.at \
--to=christian.riesch@omicron.at \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.