Message ID | 20190827081352.598-1-michael@walle.cc |
---|---|
State | Accepted |
Commit | 12c2a310e87d4eacfd669346338e856cb3ad54c2 |
Delegated to: | Joe Hershberger |
Headers | show |
Series | [U-Boot,v2] net: make net_random_ethaddr() more random | expand |
On Tue, Aug 27, 2019 at 4:14 PM Michael Walle <michael@walle.cc> wrote: > > The net_random_ethaddr() tries to get some entropy from different > startup times of a board. The seed is initialized with get_timer() which > has only a granularity of milliseconds. We can do better if we use > get_ticks() which returns the raw timer ticks. Using this we have a > higher chance of getting different values at startup. > > Signed-off-by: Michael Walle <michael@walle.cc> > --- > since v1: > - Removed the and-mask. Since there were no more comments I did some tests > and apparently there are no compiler warnings. > > include/net.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
On Tue, Aug 27, 2019 at 3:14 AM Michael Walle <michael@walle.cc> wrote: > > The net_random_ethaddr() tries to get some entropy from different > startup times of a board. The seed is initialized with get_timer() which > has only a granularity of milliseconds. We can do better if we use > get_ticks() which returns the raw timer ticks. Using this we have a > higher chance of getting different values at startup. > > Signed-off-by: Michael Walle <michael@walle.cc> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Hi Michael, https://patchwork.ozlabs.org/patch/1153632/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git Thanks! -Joe
diff --git a/include/net.h b/include/net.h index a54d5eeac5..75a16e4c8f 100644 --- a/include/net.h +++ b/include/net.h @@ -816,7 +816,7 @@ static inline int is_valid_ethaddr(const u8 *addr) static inline void net_random_ethaddr(uchar *addr) { int i; - unsigned int seed = get_timer(0); + unsigned int seed = get_ticks(); for (i = 0; i < 6; i++) addr[i] = rand_r(&seed);
The net_random_ethaddr() tries to get some entropy from different startup times of a board. The seed is initialized with get_timer() which has only a granularity of milliseconds. We can do better if we use get_ticks() which returns the raw timer ticks. Using this we have a higher chance of getting different values at startup. Signed-off-by: Michael Walle <michael@walle.cc> --- since v1: - Removed the and-mask. Since there were no more comments I did some tests and apparently there are no compiler warnings. include/net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)