Skip to contentSkip to conversation

net: kirkwood: updates: used eth_setenv_enetaddr api

PATCH Superseded Prafulla Wadaskar 4 participants 7 messages Aug 7, 2009 – Aug 15, 2009 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

eth_setenv_enetaddr is avaible by upper layer
using this saves 204 bytes on total image size

---
 drivers/net/kirkwood_egiga.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
drivers/net/kirkwood_egiga.c +8 -5
index 3d908f8..1a208f2 100644
@@ -606,7 +606,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = CONFIG_KIRKWOOD_EGIGA_PORTS;
 
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; devnum++) {
@@ -665,10 +665,13 @@ int kirkwood_egiga_initialize(bd_t * bis)
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
 			/* Generate Ramdom MAC addresses if not set */
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",
-				get_random_hex(), get_random_hex(),
-				get_random_hex());
-			setenv(s, buf);
+			dev->enetaddr[0] = 0x00;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);
 		}
 
 		dev->init = (void *)kwgbe_init;
Signature · 1 line
1.5.3.3
#1 lore raw

PATCH 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

Quoted 26 lines · Prafulla Wadaskar

eth_setenv_enetaddr is avaible by upper layer
using this saves 204 bytes on total image size

---
 drivers/net/kirkwood_egiga.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
drivers/net/kirkwood_egiga.c +1 -2
index 3d908f8..1a208f2 100644
@@ -606,7 +606,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = CONFIG_KIRKWOOD_EGIGA_PORTS;
 
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; devnum++) {
@@ -665,10 +665,13 @@ int kirkwood_egiga_initialize(bd_t * bis)
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
 			/* Generate Ramdom MAC addresses if not set */
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 674

Quoted 10 lines
drivers/net/kirkwood_egiga.c +7 -3
-				get_random_hex(), get_random_hex(),
-				get_random_hex());
-			setenv(s, buf);
+			dev->enetaddr[0] = 0x00;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);

it will be also good to use a private mac address

			dev->enetaddr[0] = 0x02;

Best Regards,
J.

#2 lore raw

PATCH 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

Quoted 40 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 27 lines · Prafulla Wadaskar

eth_setenv_enetaddr is avaible by upper layer
using this saves 204 bytes on total image size

---
 drivers/net/kirkwood_egiga.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
drivers/net/kirkwood_egiga.c +1 -3
index 3d908f8..1a208f2 100644
@@ -606,7 +606,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = CONFIG_KIRKWOOD_EGIGA_PORTS;
 
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; devnum++) {
@@ -665,10 +665,13 @@ int kirkwood_egiga_initialize(bd_t * bis)
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
 			/* Generate Ramdom MAC addresses if not set */
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",
-				get_random_hex(), get_random_hex(),

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 675

Quoted 10 lines
drivers/net/kirkwood_egiga.c +7 -2
-				get_random_hex());
-			setenv(s, buf);
+			dev->enetaddr[0] = 0x00;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);
 

it will be also good to use a private mac address

Quoted 3 lines
			dev->enetaddr[0] = 0x02;

Full ACK. If you're generating something random, it MUST have the private bit. Unless Marvell owns this block and is giving it away and is keeping track of all used numbers and ...

regards,
Ben

#3 lore raw

PATCH v2 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

eth_setenv_enetaddr is avaible by upper layer using this saves 204 bytes on total image size

used Local OUI instead of Marvell OUI for random MAC address generation logic

---
Change log
v2: updated as per feedback for v1 private MAC address used
typos corrected

 drivers/net/kirkwood_egiga.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)
drivers/net/kirkwood_egiga.c +9 -6
index 701812b..e3580af 100644
@@ -592,7 +592,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = CONFIG_KIRKWOOD_EGIGA_PORTS;
 
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; devnum++) {
@@ -650,11 +650,14 @@ int kirkwood_egiga_initialize(bd_t * bis)
 		}
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
-			/* Generate Ramdom MAC addresses if not set */
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",
-				get_random_hex(), get_random_hex(),
-				get_random_hex());
-			setenv(s, buf);
+			/* Generate Random Private MAC addr if not set */
+			dev->enetaddr[0] = 0x02;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);
 		}
 
 		dev->init = (void *)kwgbe_init;
Signature · 1 line
1.5.3.3
Applied
#4 lore raw

PATCH v2 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

Prafulla,

Quoted 8 lines · Prafulla Wadaskar

eth_setenv_enetaddr is avaible by upper layer
using this saves 204 bytes on total image size

used Local OUI instead of Marvell OUI for
random MAC address generation logic

---

Applied to net repo.

thanks,
Ben

#5 lore raw

PATCH 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

In reply to Ben Warren
Quoted 42 lines · On Friday 07 August 2009 17:37:51 Ben Warren wrote:
Quoted 39 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 26 lines · Prafulla Wadaskar

eth_setenv_enetaddr is avaible by upper layer
using this saves 204 bytes on total image size

---
 drivers/net/kirkwood_egiga.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
drivers/net/kirkwood_egiga.c +1 -2
index 3d908f8..1a208f2 100644
@@ -606,7 +606,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = CONFIG_KIRKWOOD_EGIGA_PORTS;
 
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; devnum++) {
@@ -665,10 +665,13 @@ int kirkwood_egiga_initialize(bd_t * bis)
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
 			/* Generate Ramdom MAC addresses if not set */
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 674

Quoted 10 lines
drivers/net/kirkwood_egiga.c +7 -3
-				get_random_hex(), get_random_hex(),
-				get_random_hex());
-			setenv(s, buf);
+			dev->enetaddr[0] = 0x00;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);

it will be also good to use a private mac address

Quoted 1 line
			dev->enetaddr[0] = 0x02;
Quoted 3 lines

Full ACK. If you're generating something random, it MUST have the private bit. Unless Marvell owns this block and is giving it away and is keeping track of all used numbers and ...

really we should add a new common eth function that generates a random local mac address ... and have each arch implement a random function. you can see the one i use for Blackfin systems in asm-blackfin/net.h ...
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090813/f95b5a9e/attachment.pgp

#6 lore raw

PATCH 1/1 net: kirkwood: updates: used eth_setenv_enetaddr api

Quoted 61 lines

-----Original Message-----
From: u-boot-bounces at lists.denx.de [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Mike Frysinger
Sent: Thursday, August 13, 2009 10:47 AM
To: u-boot at lists.denx.de
Cc: Ashish Karkare; Prabhanjan Sarnaik; Ben Warren
Subject: Re: [U-Boot] [PATCH] net: kirkwood: updates: used eth_setenv_enetaddr api

Quoted 3 lines · On Friday 07 August 2009 17:37:51 Ben Warren wrote:
Quoted 2 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 1 line · Prafulla Wadaskar

eth_setenv_enetaddr is avaible by upper layer using this

saves 204

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

bytes on total image size

---
 drivers/net/kirkwood_egiga.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
Quoted 11 lines
Quoted 11 lines

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 610

Quoted 11 lines
(quoted diff) +0 -0

b/drivers/net/kirkwood_egiga.c index 3d908f8..1a208f2 100644

drivers/net/kirkwood_egiga.c +1 -1
@@ -606,7 +606,7 @@ int kirkwood_egiga_initialize(bd_t * bis)
 	struct kwgbe_device *dkwgbe;
 	struct eth_device *dev;
 	int devnum;
-	char *s, buf[NAMESIZE * 2];
+	char *s;
 	u8 used_ports[MAX_KWGBE_DEVS] = 

CONFIG_KIRKWOOD_EGIGA_PORTS;

Quoted 2 lines
Quoted 2 lines

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 611

Quoted 2 lines
drivers/net/kirkwood_egiga.c +0 -0
 	for (devnum = 0; devnum < MAX_KWGBE_DEVS; 

devnum++) { @@ -665,10

Quoted 4 lines
Quoted 4 lines

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis)

Quoted 4 lines
drivers/net/kirkwood_egiga.c +1 -0
+665,13 @@ int kirkwood_egiga_initialize(bd_t * bis)
 
 		while (!eth_getenv_enetaddr(s, dev->enetaddr)) {
 			/* Generate Ramdom MAC 

addresses if not set */

Quoted 2 lines
Quoted 2 lines

drivers/net/kirkwood_egiga.c

Quoted 2 lines
drivers/net/kirkwood_egiga.c +0 -2
-			sprintf(buf, "00:50:43:%02x:%02x:%02x",
-				get_random_hex(), 

get_random_hex(),

Quoted 13 lines
Quoted 11 lines

drivers/net/kirkwood_egiga.c int kirkwood_egiga_initialize(bd_t * bis) · line 674

Quoted 9 lines
drivers/net/kirkwood_egiga.c +7 -2
-				get_random_hex());
-			setenv(s, buf);
+			dev->enetaddr[0] = 0x00;
+			dev->enetaddr[1] = 0x50;
+			dev->enetaddr[2] = 0x43;
+			dev->enetaddr[3] = get_random_hex();
+			dev->enetaddr[4] = get_random_hex();
+			dev->enetaddr[5] = get_random_hex();
+			eth_setenv_enetaddr(s, dev->enetaddr);

it will be also good to use a private mac address

Quoted 1 line
			dev->enetaddr[0] = 0x02;
Quoted 2 lines

Full ACK. If you're generating something random, it MUST have the private bit. Unless Marvell owns this block and is giving

Quoted 7 lines

it away and

Quoted 1 line

is keeping track of all used numbers and ...

really we should add a new common eth function that generates a random local mac address ... and have each arch implement a random function. you can see the one i use for Blackfin systems in asm-blackfin/net.h ...

Good Idea,
I hope each arch will have support to generate random values :-)

Regards..
Prafulla . .

Quoted 2 lines

-mike