[U-Boot] [PATCH 2/5] Add Ethernet hardware MAC address framework to usbnet

Mike Frysinger vapier at gentoo.org
Wed Apr 13 00:30:49 CEST 2011


On Tuesday, April 12, 2011 17:13:57 Simon Glass wrote:
> Built-in Ethernet adapters support setting the mac address by means of a
> ethaddr environment variable for each interface (ethaddr, eth1addr,
> eth2addr).
> 
> This adds similar support to the USB network side, using the names
> usbethaddr, usbeth1addr, etc. They are kept separate since we don't want
> a USB device taking the MAC address of a built-in device or vice versa.

i dont know about that part.  it isnt like built-in devices generally "come 
and go" like USB.  maybe Wolfgang will have an opinion.

> --- a/include/net.h
> +++ b/include/net.h
> +/*
> + * Get the hardware address for an ethernet interface .
> + * Args:
> + *	base_name - base name for device (NULL for "eth")
> + *	index - device index number (0 for first)
> + *	enetaddr - returns 6 byte hardware address
> + * Returns:
> + *	1 = ok, 0 = invalid MAC address
> + */
> +extern int eth_getenv_enetaddr_by_index(char *base_name, int index,
> +					uchar *enetaddr);

the base_name must be const

might be better to document the return value the same way we document the 
ultimate func it calls: "Return true if the address is valid".

> +/*
> + * Set the hardware address for an ethernet interface based on 'eth%daddr'
> + * environment variable (or just 'ethaddr' if eth_number is 0).
> + * Args:
> + *	base_name - base name for device (NULL for "eth")
> + *	eth_number - value of %d (0 for first device of this type)
> + * Returns:
> + *	0 = ok, -1 = driver reported error trying to set address
> + */
> +int eth_set_hwaddr(struct eth_device *dev, char *base_name, int
> eth_number);

the base_name must be const.

i'd document return as "0 is success, non-zero is error status from driver".

also, the naming is a bit confusing.  better to stick with the "write" aspect 
which this ultimately calls into: eth_write_hwaddr().

> --- a/net/eth.c
> +++ b/net/eth.c
> +int eth_set_hwaddr(struct eth_device *dev, char *base_name, int
> ...
> +	if (strchr(dev->name, ' '))
> +		puts("\nWarning: eth device name has a space!\n");

this should not be relocated here.  it belongs in the registration step only.

> +		memcpy(dev->enetaddr, env_enetaddr, 6);
> +	}
> +	if (dev->write_hwaddr &&
> +		!eth_mac_skip(eth_number) &&
> +		is_valid_ether_addr(dev->enetaddr)) {
> +		ret = dev->write_hwaddr(dev);
> +	}
> +	return ret;

but new lines before/after that write_addr if block please
-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/20110412/cf22e6cc/attachment.pgp 


More information about the U-Boot mailing list