ieee802154: atusb: make sure we set a randaom extended address if fetching fails
authorStefan Schmidt <stefan@osg.samsung.com>
Thu, 15 Dec 2016 17:40:15 +0000 (18:40 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 12 Jan 2017 21:12:42 +0000 (22:12 +0100)
In the unlikely case were the firmware is new enough but the actual USB command
still fails make sure we set a random address and return.

Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/atusb.c

index fa3e8c34b26c95a4f57e1c419003a744fe43e4c0..67790f88908dabbd19c215002cd35ec58f5de10a 100644 (file)
@@ -737,8 +737,11 @@ static int atusb_set_extended_addr(struct atusb *atusb)
        ret = atusb_control_msg(atusb, usb_rcvctrlpipe(usb_dev, 0),
                                ATUSB_EUI64_READ, ATUSB_REQ_FROM_DEV, 0, 0,
                                buffer, IEEE802154_EXTENDED_ADDR_LEN, 1000);
-       if (ret < 0)
-               dev_err(&usb_dev->dev, "failed to fetch extended address\n");
+       if (ret < 0) {
+               dev_err(&usb_dev->dev, "failed to fetch extended address, random address set\n");
+               ieee802154_random_extended_addr(&atusb->hw->phy->perm_extended_addr);
+               return ret;
+       }
 
        memcpy(&extended_addr, buffer, IEEE802154_EXTENDED_ADDR_LEN);
        /* Check if read address is not empty and the unicast bit is set correctly */