diff options
author | Stefan Schmidt <stefan@osg.samsung.com> | 2016-12-15 20:40:15 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-01-13 00:12:42 +0300 |
commit | 2fd2b550a5ed13b1d6640ff77630fc369636a544 (patch) | |
tree | 28ebdc1516ba90c731ef63fc01620b0a7c205803 /drivers | |
parent | 05a974efa4bdf6e2a150e3f27dc6fcf0a9ad5655 (diff) | |
download | linux-2fd2b550a5ed13b1d6640ff77630fc369636a544.tar.xz |
ieee802154: atusb: make sure we set a randaom extended address if fetching fails
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ieee802154/atusb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c index fa3e8c34b26c..67790f88908d 100644 --- a/drivers/net/ieee802154/atusb.c +++ b/drivers/net/ieee802154/atusb.c @@ -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 */ |