From patchwork Wed Nov 21 10:22:42 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/1] asix: use ramdom hw addr if the one read is not valid Date: Wed, 21 Nov 2012 00:22:42 -0000 From: Jean-Christophe PLAGNIOL-VILLARD X-Patchwork-Id: 200681 Message-Id: <1353493362-30418-1-git-send-email-plagnioj@jcrosoft.com> To: linux-arm-kernel@lists.infradead.org Cc: Jean-Christophe PLAGNIOL-VILLARD , linux-usb@vger.kernel.org, netdev@vger.kernel.org Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Cc: linux-usb@vger.kernel.org Cc: netdev@vger.kernel.org --- drivers/net/usb/asix_devices.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index 33ab824..7ebec5b 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -225,7 +225,13 @@ static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf) ret); goto out; } - memcpy(dev->net->dev_addr, buf, ETH_ALEN); + + if (is_valid_ether_addr(buf)) { + memcpy(dev->net->dev_addr, buf, ETH_ALEN); + } else { + netdev_info(dev->net, "invalid hw address, using random\n"); + eth_hw_addr_random(dev->net); + } /* Initialize MII structure */ dev->mii.dev = dev->net; @@ -423,7 +429,13 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); return ret; } - memcpy(dev->net->dev_addr, buf, ETH_ALEN); + + if (is_valid_ether_addr(buf)) { + memcpy(dev->net->dev_addr, buf, ETH_ALEN); + } else { + netdev_info(dev->net, "invalid hw address, using random\n"); + eth_hw_addr_random(dev->net); + } /* Initialize MII structure */ dev->mii.dev = dev->net; @@ -777,7 +789,13 @@ static int ax88178_bind(struct usbnet *dev, struct usb_interface *intf) netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); return ret; } - memcpy(dev->net->dev_addr, buf, ETH_ALEN); + + if (is_valid_ether_addr(buf)) { + memcpy(dev->net->dev_addr, buf, ETH_ALEN); + } else { + netdev_info(dev->net, "invalid hw address, using random\n"); + eth_hw_addr_random(dev->net); + } /* Initialize MII structure */ dev->mii.dev = dev->net;