diff options
author | Vitaly Kuzmichev <vkuzmichev@mvista.com> | 2010-12-28 16:59:32 +0300 |
---|---|---|
committer | Remy Bohmer <linux@bohmer.net> | 2011-01-19 17:29:55 +0100 |
commit | 58939fcc5cbda504cee943bca50c3993597710e9 (patch) | |
tree | c014134cbbac888a272ce6ae8af21db7e2583d6b /drivers/usb/gadget | |
parent | 8f7aa831c36feb08c5af790d88083afa6f945de2 (diff) |
USB-CDC: Move MAC addresses setting into usb_eth_init
This allows to change device and host MAC addresses without performing
reset.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r-- | drivers/usb/gadget/ether.c | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index 765fbd85675..638486998d1 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -1788,6 +1788,32 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd) error("received NULL ptr"); goto fail; } + + /* Configure default mac-addresses for the USB ethernet device */ +#ifdef CONFIG_USBNET_DEV_ADDR + strlcpy(dev_addr, CONFIG_USBNET_DEV_ADDR, sizeof(dev_addr)); +#endif +#ifdef CONFIG_USBNET_HOST_ADDR + strlcpy(host_addr, CONFIG_USBNET_HOST_ADDR, sizeof(host_addr)); +#endif + /* Check if the user overruled the MAC addresses */ + if (getenv("usbnet_devaddr")) + strlcpy(dev_addr, getenv("usbnet_devaddr"), + sizeof(dev_addr)); + + if (getenv("usbnet_hostaddr")) + strlcpy(host_addr, getenv("usbnet_hostaddr"), + sizeof(host_addr)); + + if (!is_eth_addr_valid(dev_addr)) { + error("Need valid 'usbnet_devaddr' to be set"); + goto fail; + } + if (!is_eth_addr_valid(host_addr)) { + error("Need valid 'usbnet_hostaddr' to be set"); + goto fail; + } + if (usb_gadget_register_driver(ð_driver) < 0) goto fail; @@ -1920,7 +1946,6 @@ static struct usb_gadget_driver eth_driver = { int usb_eth_initialize(bd_t *bi) { - int status = 0; struct eth_device *netdev = &l_netdev; strlcpy(netdev->name, USB_NET_NAME, sizeof(netdev->name)); @@ -1933,41 +1958,6 @@ int usb_eth_initialize(bd_t *bi) #ifdef CONFIG_MCAST_TFTP #error not supported #endif - /* Configure default mac-addresses for the USB ethernet device */ -#ifdef CONFIG_USBNET_DEV_ADDR - strncpy(dev_addr, CONFIG_USBNET_DEV_ADDR, sizeof(dev_addr)); -#endif -#ifdef CONFIG_USBNET_HOST_ADDR - strncpy(host_addr, CONFIG_USBNET_HOST_ADDR, sizeof(host_addr)); -#endif - /* Check if the user overruled the MAC addresses */ - if (getenv("usbnet_devaddr")) - strncpy(dev_addr, getenv("usbnet_devaddr"), - sizeof(dev_addr)); - - if (getenv("usbnet_hostaddr")) - strncpy(host_addr, getenv("usbnet_hostaddr"), - sizeof(host_addr)); - - /* Make sure both strings are terminated */ - dev_addr[sizeof(dev_addr)-1] = '\0'; - host_addr[sizeof(host_addr)-1] = '\0'; - - if (!is_eth_addr_valid(dev_addr)) { - error("Need valid 'usbnet_devaddr' to be set"); - status = -1; - } - if (!is_eth_addr_valid(host_addr)) { - error("Need valid 'usbnet_hostaddr' to be set"); - status = -1; - } - if (status) - goto fail; - eth_register(netdev); return 0; - -fail: - error("%s failed. error = %d", __func__, status); - return status; } |