Hi, This is an alternative patch - but not on git trunk - ist againts the last tag i are allowed to use. I don't know if the ethaddr should be copied in register_preset_mac_address or after calling. below is only tested on am335x. -------SNIP------ Fix missing eheraddr setting. If some modul register an MAC for an network device like cpsw, the etheraddr of the device was never set. This is a workaround only. Don't put upstream. --- barebox-mlo-2014.09.0/net/eth.c 2014-09-04 15:28:52.000000000 +0200 +++ barebox-mlo-2014.09.0/net/eth.c 2014-09-23 17:18:21.592884794 +0200 @@ -358,9 +357,8 @@ list_add_tail(&edev->list, &netdev_list); ret = eth_get_registered_ethaddr(edev, ethaddr); - if (!ret) + if (!ret && is_valid_ether_addr(ethaddr)) found = 1; - if (!found) { ret = edev->get_ethaddr(edev, ethaddr); if (!ret) @@ -368,7 +366,11 @@ } if (found) + { register_preset_mac_address(edev, ethaddr); + /* fix missing mac in edev */ + memcpy(edev->ethaddr,ethaddr,6); + } if (IS_ENABLED(CONFIG_OFDEVICE) && edev->parent && edev->parent->device_node) -------SNIP------ -----Ursprüngliche Nachricht----- Von: barebox [mailto:barebox-bounces@xxxxxxxxxxxxxxxxxxx] Im Auftrag von Wadim Egorov Gesendet: Mittwoch, 10. Juni 2015 08:44 An: Sascha Hauer Cc: barebox@xxxxxxxxxxxxxxxxxxx Betreff: Re: [PATCH] net: Set the actual ethaddr in register_preset_mac_address() Hello Sascha, On 10.06.2015 06:32, Sascha Hauer wrote: > Hi Wadim, > > On Tue, Jun 09, 2015 at 09:04:25AM +0200, Wadim Egorov wrote: >> Set the ethaddr for the current edev. >> >> Signed-off-by: Wadim Egorov <w.egorov@xxxxxxxxx> >> --- >> net/eth.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/net/eth.c b/net/eth.c >> index 89bddba..03e0a2e 100644 >> --- a/net/eth.c >> +++ b/net/eth.c >> @@ -49,6 +49,7 @@ static void register_preset_mac_address(struct eth_device *edev, const char *eth >> ethaddr_to_string(ethaddr, ethaddr_str); >> >> if (is_valid_ether_addr(ethaddr)) { >> + memcpy(edev->ethaddr, ethaddr, 6); >> dev_info(&edev->dev, "got preset MAC address: %s\n", ethaddr_str); >> dev_set_param(&edev->dev, "ethaddr", ethaddr_str); >> } > In which case is this necessary? Normally a dev_set_param on "ethaddr" > should already set edev->ethaddr, there should be no need to copy this > manually. > > Sascha when booting from ethernet on the AM335x, net_new() (called in net_udp_new) will check if ethaddr is valid. This check fails, because ethaddr is not set at this moment and a random MAC will be used. Wadim > _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox