aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/usbnet.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/usbnet.c')
-rw-r--r--drivers/net/usb/usbnet.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 3a6770a65d78..449835f4331e 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -160,20 +160,19 @@ EXPORT_SYMBOL_GPL(usbnet_get_endpoints);
160 160
161int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress) 161int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
162{ 162{
163 int tmp, i; 163 int tmp = -1, ret;
164 unsigned char buf [13]; 164 unsigned char buf [13];
165 165
166 tmp = usb_string(dev->udev, iMACAddress, buf, sizeof buf); 166 ret = usb_string(dev->udev, iMACAddress, buf, sizeof buf);
167 if (tmp != 12) { 167 if (ret == 12)
168 tmp = hex2bin(dev->net->dev_addr, buf, 6);
169 if (tmp < 0) {
168 dev_dbg(&dev->udev->dev, 170 dev_dbg(&dev->udev->dev,
169 "bad MAC string %d fetch, %d\n", iMACAddress, tmp); 171 "bad MAC string %d fetch, %d\n", iMACAddress, tmp);
170 if (tmp >= 0) 172 if (ret >= 0)
171 tmp = -EINVAL; 173 ret = -EINVAL;
172 return tmp; 174 return ret;
173 } 175 }
174 for (i = tmp = 0; i < 6; i++, tmp += 2)
175 dev->net->dev_addr [i] =
176 (hex_to_bin(buf[tmp]) << 4) + hex_to_bin(buf[tmp + 1]);
177 return 0; 176 return 0;
178} 177}
179EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr); 178EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);