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>
This commit is contained in:
		
							parent
							
								
									8f7aa831c3
								
							
						
					
					
						commit
						58939fcc5c
					
				|  | @ -1788,6 +1788,32 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd) | ||||||
| 		error("received NULL ptr"); | 		error("received NULL ptr"); | ||||||
| 		goto fail; | 		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) | 	if (usb_gadget_register_driver(ð_driver) < 0) | ||||||
| 		goto fail; | 		goto fail; | ||||||
| 
 | 
 | ||||||
|  | @ -1920,7 +1946,6 @@ static struct usb_gadget_driver eth_driver = { | ||||||
| 
 | 
 | ||||||
| int usb_eth_initialize(bd_t *bi) | int usb_eth_initialize(bd_t *bi) | ||||||
| { | { | ||||||
| 	int status = 0; |  | ||||||
| 	struct eth_device *netdev = &l_netdev; | 	struct eth_device *netdev = &l_netdev; | ||||||
| 
 | 
 | ||||||
| 	strlcpy(netdev->name, USB_NET_NAME, sizeof(netdev->name)); | 	strlcpy(netdev->name, USB_NET_NAME, sizeof(netdev->name)); | ||||||
|  | @ -1933,41 +1958,6 @@ int usb_eth_initialize(bd_t *bi) | ||||||
| #ifdef CONFIG_MCAST_TFTP | #ifdef CONFIG_MCAST_TFTP | ||||||
|   #error not supported |   #error not supported | ||||||
| #endif | #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); | 	eth_register(netdev); | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 |  | ||||||
| fail: |  | ||||||
| 	error("%s failed. error = %d", __func__, status); |  | ||||||
| 	return status; |  | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue