diff options
Diffstat (limited to 'net/ieee802154/6lowpan.c')
-rw-r--r-- | net/ieee802154/6lowpan.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c index c85e71e0c7ff..ff41b4d60d30 100644 --- a/net/ieee802154/6lowpan.c +++ b/net/ieee802154/6lowpan.c | |||
@@ -1372,6 +1372,8 @@ static int lowpan_newlink(struct net *src_net, struct net_device *dev, | |||
1372 | real_dev = dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK])); | 1372 | real_dev = dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK])); |
1373 | if (!real_dev) | 1373 | if (!real_dev) |
1374 | return -ENODEV; | 1374 | return -ENODEV; |
1375 | if (real_dev->type != ARPHRD_IEEE802154) | ||
1376 | return -EINVAL; | ||
1375 | 1377 | ||
1376 | lowpan_dev_info(dev)->real_dev = real_dev; | 1378 | lowpan_dev_info(dev)->real_dev = real_dev; |
1377 | lowpan_dev_info(dev)->fragment_tag = 0; | 1379 | lowpan_dev_info(dev)->fragment_tag = 0; |
@@ -1386,6 +1388,9 @@ static int lowpan_newlink(struct net *src_net, struct net_device *dev, | |||
1386 | 1388 | ||
1387 | entry->ldev = dev; | 1389 | entry->ldev = dev; |
1388 | 1390 | ||
1391 | /* Set the lowpan harware address to the wpan hardware address. */ | ||
1392 | memcpy(dev->dev_addr, real_dev->dev_addr, IEEE802154_ADDR_LEN); | ||
1393 | |||
1389 | mutex_lock(&lowpan_dev_info(dev)->dev_list_mtx); | 1394 | mutex_lock(&lowpan_dev_info(dev)->dev_list_mtx); |
1390 | INIT_LIST_HEAD(&entry->list); | 1395 | INIT_LIST_HEAD(&entry->list); |
1391 | list_add_tail(&entry->list, &lowpan_devices); | 1396 | list_add_tail(&entry->list, &lowpan_devices); |