Commit 452b5ecd authored by Jean-Christophe PLAGNIOL-VILLARD's avatar Jean-Christophe PLAGNIOL-VILLARD Committed by David S. Miller

asix: use ramdom hw addr if the one read is not valid

Signed-off-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: linux-usb@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 93272e07
...@@ -64,6 +64,16 @@ static void asix_status(struct usbnet *dev, struct urb *urb) ...@@ -64,6 +64,16 @@ static void asix_status(struct usbnet *dev, struct urb *urb)
} }
} }
static void asix_set_netdev_dev_addr(struct usbnet *dev, u8 *addr)
{
if (is_valid_ether_addr(addr)) {
memcpy(dev->net->dev_addr, addr, ETH_ALEN);
} else {
netdev_info(dev->net, "invalid hw address, using random\n");
eth_hw_addr_random(dev->net);
}
}
/* Get the PHY Identifier from the PHYSID1 & PHYSID2 MII registers */ /* Get the PHY Identifier from the PHYSID1 & PHYSID2 MII registers */
static u32 asix_get_phyid(struct usbnet *dev) static u32 asix_get_phyid(struct usbnet *dev)
{ {
...@@ -225,7 +235,8 @@ static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf) ...@@ -225,7 +235,8 @@ static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf)
ret); ret);
goto out; goto out;
} }
memcpy(dev->net->dev_addr, buf, ETH_ALEN);
asix_set_netdev_dev_addr(dev, buf);
/* Initialize MII structure */ /* Initialize MII structure */
dev->mii.dev = dev->net; dev->mii.dev = dev->net;
...@@ -423,7 +434,8 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) ...@@ -423,7 +434,8 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
return ret; return ret;
} }
memcpy(dev->net->dev_addr, buf, ETH_ALEN);
asix_set_netdev_dev_addr(dev, buf);
/* Initialize MII structure */ /* Initialize MII structure */
dev->mii.dev = dev->net; dev->mii.dev = dev->net;
...@@ -777,7 +789,8 @@ static int ax88178_bind(struct usbnet *dev, struct usb_interface *intf) ...@@ -777,7 +789,8 @@ static int ax88178_bind(struct usbnet *dev, struct usb_interface *intf)
netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
return ret; return ret;
} }
memcpy(dev->net->dev_addr, buf, ETH_ALEN);
asix_set_netdev_dev_addr(dev, buf);
/* Initialize MII structure */ /* Initialize MII structure */
dev->mii.dev = dev->net; dev->mii.dev = dev->net;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment