USB-CDC: Move MAC addresses setting into usb_eth_init
authorVitaly Kuzmichev <vkuzmichev@mvista.com>
Tue, 28 Dec 2010 13:59:32 +0000 (16:59 +0300)
committerRemy Bohmer <linux@bohmer.net>
Wed, 19 Jan 2011 16:29:55 +0000 (17:29 +0100)
This allows to change device and host MAC addresses without performing
reset.

Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
drivers/usb/gadget/ether.c

index 765fbd8567548b65d785f8210c5d5168f2b1f910..638486998d177f68ea5b128db64c351979a0e079 100644 (file)
@@ -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(&eth_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;
 }