From: Steve Glendinning Date: Mon, 10 Dec 2012 01:01:19 +0000 (+0000) Subject: smsc75xx: only set mac address once on bind X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=481705a172a1fcd483d4a90963c7593964219273;p=~shefty%2Frdma-dev.git smsc75xx: only set mac address once on bind This patch changes when we decide what the device's MAC address is from per ifconfig up to once when the device is connected. Without this patch, a manually forced device MAC is overwritten on ifconfig down/up. Also devices that have no EEPROM are assigned a new random address on ifconfig down/up instead of persisting the same one. Signed-off-by: Steve Glendinning Reported-by: Robert Cunningham Cc: Bjorn Mork Cc: Dan Williams Signed-off-by: David S. Miller --- diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c index 1cbd936bb02..251a3354a4b 100644 --- a/drivers/net/usb/smsc75xx.c +++ b/drivers/net/usb/smsc75xx.c @@ -1054,8 +1054,6 @@ static int smsc75xx_reset(struct usbnet *dev) netif_dbg(dev, ifup, dev->net, "PHY reset complete\n"); - smsc75xx_init_mac_address(dev); - ret = smsc75xx_set_mac_address(dev); if (ret < 0) { netdev_warn(dev->net, "Failed to set mac address\n"); @@ -1422,6 +1420,14 @@ static int smsc75xx_bind(struct usbnet *dev, struct usb_interface *intf) dev->net->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_RXCSUM; + ret = smsc75xx_wait_ready(dev, 0); + if (ret < 0) { + netdev_warn(dev->net, "device not ready in smsc75xx_bind\n"); + return ret; + } + + smsc75xx_init_mac_address(dev); + /* Init all registers */ ret = smsc75xx_reset(dev); if (ret < 0) {