mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-21 04:14:34 +00:00
Ethernet: let user know if there is no valid ethernet address
Improve error messages in case of invalid/unset ethernet addresses. Signed-off-by: Pavel Machek <pavel@denx.de>
This commit is contained in:
parent
2c997e7a8f
commit
75d9a45cb0
1 changed files with 21 additions and 8 deletions
29
net/eth.c
29
net/eth.c
|
@ -10,6 +10,7 @@
|
||||||
#include <net.h>
|
#include <net.h>
|
||||||
#include <miiphy.h>
|
#include <miiphy.h>
|
||||||
#include <phy.h>
|
#include <phy.h>
|
||||||
|
#include <asm/errno.h>
|
||||||
|
|
||||||
void eth_parse_enetaddr(const char *addr, uchar *enetaddr)
|
void eth_parse_enetaddr(const char *addr, uchar *enetaddr)
|
||||||
{
|
{
|
||||||
|
@ -152,6 +153,11 @@ static void eth_current_changed(void)
|
||||||
setenv("ethact", NULL);
|
setenv("ethact", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int eth_address_set(unsigned char *addr)
|
||||||
|
{
|
||||||
|
return memcmp(addr, "\0\0\0\0\0\0", 6);
|
||||||
|
}
|
||||||
|
|
||||||
int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
|
int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
|
||||||
int eth_number)
|
int eth_number)
|
||||||
{
|
{
|
||||||
|
@ -160,8 +166,8 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
|
||||||
|
|
||||||
eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr);
|
eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr);
|
||||||
|
|
||||||
if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) {
|
if (eth_address_set(env_enetaddr)) {
|
||||||
if (memcmp(dev->enetaddr, "\0\0\0\0\0\0", 6) &&
|
if (eth_address_set(dev->enetaddr) &&
|
||||||
memcmp(dev->enetaddr, env_enetaddr, 6)) {
|
memcmp(dev->enetaddr, env_enetaddr, 6)) {
|
||||||
printf("\nWarning: %s MAC addresses don't match:\n",
|
printf("\nWarning: %s MAC addresses don't match:\n",
|
||||||
dev->name);
|
dev->name);
|
||||||
|
@ -177,14 +183,22 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
|
||||||
dev->enetaddr);
|
dev->enetaddr);
|
||||||
printf("\nWarning: %s using MAC address from net device\n",
|
printf("\nWarning: %s using MAC address from net device\n",
|
||||||
dev->name);
|
dev->name);
|
||||||
|
} else if (!(eth_address_set(dev->enetaddr))) {
|
||||||
|
printf("\nError: %s address not set.\n",
|
||||||
|
dev->name);
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->write_hwaddr &&
|
if (dev->write_hwaddr && !eth_mac_skip(eth_number)) {
|
||||||
!eth_mac_skip(eth_number)) {
|
if (!is_valid_ether_addr(dev->enetaddr)) {
|
||||||
if (!is_valid_ether_addr(dev->enetaddr))
|
printf("\nError: %s address %pM illegal value\n",
|
||||||
return -1;
|
dev->name, dev->enetaddr);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
ret = dev->write_hwaddr(dev);
|
ret = dev->write_hwaddr(dev);
|
||||||
|
if (ret)
|
||||||
|
printf("\nWarning: %s failed to set MAC address\n", dev->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -303,8 +317,7 @@ int eth_initialize(bd_t *bis)
|
||||||
puts("\nWarning: eth device name has a space!"
|
puts("\nWarning: eth device name has a space!"
|
||||||
"\n");
|
"\n");
|
||||||
|
|
||||||
if (eth_write_hwaddr(dev, "eth", dev->index))
|
eth_write_hwaddr(dev, "eth", dev->index);
|
||||||
puts("\nWarning: failed to set MAC address\n");
|
|
||||||
|
|
||||||
dev = dev->next;
|
dev = dev->next;
|
||||||
num_devices++;
|
num_devices++;
|
||||||
|
|
Loading…
Add table
Reference in a new issue