projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.denx.de/u-boot-mmc
[oweals/u-boot.git]
/
net
/
eth-uclass.c
diff --git
a/net/eth-uclass.c
b/net/eth-uclass.c
index c15cc4d90bf47dffacdd1339077340b0c99dd36a..d30b04ba862a8b90d370b97116a7683c1d752f36 100644
(file)
--- a/
net/eth-uclass.c
+++ b/
net/eth-uclass.c
@@
-181,7
+181,7
@@
int eth_get_dev_index(void)
static int eth_write_hwaddr(struct udevice *dev)
{
static int eth_write_hwaddr(struct udevice *dev)
{
- struct eth_pdata *pdata
= dev->platdata
;
+ struct eth_pdata *pdata;
int ret = 0;
if (!dev || !device_active(dev))
int ret = 0;
if (!dev || !device_active(dev))
@@
-189,6
+189,7
@@
static int eth_write_hwaddr(struct udevice *dev)
/* seq is valid since the device is active */
if (eth_get_ops(dev)->write_hwaddr && !eth_mac_skip(dev->seq)) {
/* seq is valid since the device is active */
if (eth_get_ops(dev)->write_hwaddr && !eth_mac_skip(dev->seq)) {
+ pdata = dev->platdata;
if (!is_valid_ethaddr(pdata->enetaddr)) {
printf("\nError: %s address %pM illegal value\n",
dev->name, pdata->enetaddr);
if (!is_valid_ethaddr(pdata->enetaddr)) {
printf("\nError: %s address %pM illegal value\n",
dev->name, pdata->enetaddr);
@@
-227,9
+228,10
@@
static int on_ethaddr(const char *name, const char *value, enum env_op op,
case env_op_create:
case env_op_overwrite:
eth_parse_enetaddr(value, pdata->enetaddr);
case env_op_create:
case env_op_overwrite:
eth_parse_enetaddr(value, pdata->enetaddr);
+ eth_write_hwaddr(dev);
break;
case env_op_delete:
break;
case env_op_delete:
- memset(pdata->enetaddr, 0,
6
);
+ memset(pdata->enetaddr, 0,
ARP_HLEN
);
}
}
}
}
@@
-239,8
+241,8
@@
U_BOOT_ENV_CALLBACK(ethaddr, on_ethaddr);
int eth_init(void)
{
int eth_init(void)
{
- char *ethact =
getenv
("ethact");
- char *ethrotate =
getenv
("ethrotate");
+ char *ethact =
env_get
("ethact");
+ char *ethrotate =
env_get
("ethrotate");
struct udevice *current = NULL;
struct udevice *old_current;
int ret = -ENODEV;
struct udevice *current = NULL;
struct udevice *old_current;
int ret = -ENODEV;
@@
-399,7
+401,7
@@
int eth_initialize(void)
printf("No ethernet found.\n");
bootstage_error(BOOTSTAGE_ID_NET_ETH_START);
} else {
printf("No ethernet found.\n");
bootstage_error(BOOTSTAGE_ID_NET_ETH_START);
} else {
- char *ethprime =
getenv
("ethprime");
+ char *ethprime =
env_get
("ethprime");
struct udevice *prime_dev = NULL;
if (ethprime)
struct udevice *prime_dev = NULL;
if (ethprime)
@@
-457,7
+459,7
@@
static int eth_post_probe(struct udevice *dev)
{
struct eth_device_priv *priv = dev->uclass_priv;
struct eth_pdata *pdata = dev->platdata;
{
struct eth_device_priv *priv = dev->uclass_priv;
struct eth_pdata *pdata = dev->platdata;
- unsigned char env_enetaddr[
6
];
+ unsigned char env_enetaddr[
ARP_HLEN
];
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
struct eth_ops *ops = eth_get_ops(dev);
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
struct eth_ops *ops = eth_get_ops(dev);
@@
-493,25
+495,26
@@
static int eth_post_probe(struct udevice *dev)
if (eth_get_ops(dev)->read_rom_hwaddr)
eth_get_ops(dev)->read_rom_hwaddr(dev);
if (eth_get_ops(dev)->read_rom_hwaddr)
eth_get_ops(dev)->read_rom_hwaddr(dev);
- eth_
getenv
_enetaddr_by_index("eth", dev->seq, env_enetaddr);
+ eth_
env_get
_enetaddr_by_index("eth", dev->seq, env_enetaddr);
if (!is_zero_ethaddr(env_enetaddr)) {
if (!is_zero_ethaddr(pdata->enetaddr) &&
if (!is_zero_ethaddr(env_enetaddr)) {
if (!is_zero_ethaddr(pdata->enetaddr) &&
- memcmp(pdata->enetaddr, env_enetaddr,
6
)) {
+ memcmp(pdata->enetaddr, env_enetaddr,
ARP_HLEN
)) {
printf("\nWarning: %s MAC addresses don't match:\n",
dev->name);
printf("\nWarning: %s MAC addresses don't match:\n",
dev->name);
- printf("Address in
SROM is
%pM\n",
+ printf("Address in
ROM is
%pM\n",
pdata->enetaddr);
printf("Address in environment is %pM\n",
env_enetaddr);
}
/* Override the ROM MAC address */
pdata->enetaddr);
printf("Address in environment is %pM\n",
env_enetaddr);
}
/* Override the ROM MAC address */
- memcpy(pdata->enetaddr, env_enetaddr,
6
);
+ memcpy(pdata->enetaddr, env_enetaddr,
ARP_HLEN
);
} else if (is_valid_ethaddr(pdata->enetaddr)) {
} else if (is_valid_ethaddr(pdata->enetaddr)) {
- eth_
setenv
_enetaddr_by_index("eth", dev->seq, pdata->enetaddr);
+ eth_
env_set
_enetaddr_by_index("eth", dev->seq, pdata->enetaddr);
printf("\nWarning: %s using MAC address from ROM\n",
dev->name);
printf("\nWarning: %s using MAC address from ROM\n",
dev->name);
- } else if (is_zero_ethaddr(pdata->enetaddr)) {
+ } else if (is_zero_ethaddr(pdata->enetaddr) ||
+ !is_valid_ethaddr(pdata->enetaddr)) {
#ifdef CONFIG_NET_RANDOM_ETHADDR
net_random_ethaddr(pdata->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
#ifdef CONFIG_NET_RANDOM_ETHADDR
net_random_ethaddr(pdata->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
@@
-533,7
+536,7
@@
static int eth_pre_remove(struct udevice *dev)
eth_get_ops(dev)->stop(dev);
/* clear the MAC address */
eth_get_ops(dev)->stop(dev);
/* clear the MAC address */
- memset(pdata->enetaddr, 0,
6
);
+ memset(pdata->enetaddr, 0,
ARP_HLEN
);
return 0;
}
return 0;
}