[U-Boot,v2] net: make net_random_ethaddr() more random
diff mbox series

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
Related show

Commit Message

Michael Walle Aug. 27, 2019, 8:13 a.m. UTC
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(-)

Comments

Bin Meng Aug. 27, 2019, 8:40 a.m. UTC | #1
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>
Joe Hershberger Sept. 3, 2019, 9:44 p.m. UTC | #2
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>
Joe Hershberger Sept. 4, 2019, 4:41 p.m. UTC | #3
Hi Michael,

https://patchwork.ozlabs.org/patch/1153632/ was applied to http://git.denx.de/?p=u-boot/u-boot-net.git

Thanks!
-Joe

Patch
diff mbox series

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);