aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ieee802154
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@osg.samsung.com>2016-12-15 18:40:15 +0100
committerMarcel Holtmann <marcel@holtmann.org>2017-01-12 22:12:42 +0100
commit2fd2b550a5ed13b1d6640ff77630fc369636a544 (patch)
tree28ebdc1516ba90c731ef63fc01620b0a7c205803 /drivers/net/ieee802154
parentieee802154: atusb: do not use the stack for buffers to make them DMA able (diff)
downloadlinux-dev-2fd2b550a5ed13b1d6640ff77630fc369636a544.tar.xz
linux-dev-2fd2b550a5ed13b1d6640ff77630fc369636a544.zip
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/net/ieee802154')
-rw-r--r--drivers/net/ieee802154/atusb.c7
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 */