mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-next' of git://git2.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan
This commit is contained in:
commit
aea54bce01
|
@ -1,3 +1 @@
|
||||||
obj-$(CONFIG_IEEE802154_FAKEHARD) += fakehard.o
|
obj-$(CONFIG_IEEE802154_FAKEHARD) += fakehard.o
|
||||||
|
|
||||||
ccflags-y := -DDEBUG -DCONFIG_FFD
|
|
||||||
|
|
|
@ -370,8 +370,6 @@ static int __devinit ieee802154fake_probe(struct platform_device *pdev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
phy->dev.platform_data = dev;
|
|
||||||
|
|
||||||
memcpy(dev->dev_addr, "\xba\xbe\xca\xfe\xde\xad\xbe\xef",
|
memcpy(dev->dev_addr, "\xba\xbe\xca\xfe\xde\xad\xbe\xef",
|
||||||
dev->addr_len);
|
dev->addr_len);
|
||||||
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
|
memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
|
||||||
|
|
|
@ -302,7 +302,7 @@ static int ieee802154_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||||
struct packet_type *pt, struct net_device *orig_dev)
|
struct packet_type *pt, struct net_device *orig_dev)
|
||||||
{
|
{
|
||||||
if (!netif_running(dev))
|
if (!netif_running(dev))
|
||||||
return -ENODEV;
|
goto drop;
|
||||||
pr_debug("got frame, type %d, dev %p\n", dev->type, dev);
|
pr_debug("got frame, type %d, dev %p\n", dev->type, dev);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
print_hex_dump_bytes("ieee802154_rcv ", DUMP_PREFIX_NONE, skb->data, skb->len);
|
print_hex_dump_bytes("ieee802154_rcv ", DUMP_PREFIX_NONE, skb->data, skb->len);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* ZigBee socket interface
|
* IEEE 802.15.4 dgram socket interface
|
||||||
*
|
*
|
||||||
* Copyright 2007, 2008 Siemens AG
|
* Copyright 2007, 2008 Siemens AG
|
||||||
*
|
*
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/if_arp.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
#include <net/wpan-phy.h>
|
#include <net/wpan-phy.h>
|
||||||
|
@ -213,12 +214,37 @@ static int ieee802154_add_iface(struct sk_buff *skb,
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (info->attrs[IEEE802154_ATTR_HW_ADDR] &&
|
||||||
|
nla_len(info->attrs[IEEE802154_ATTR_HW_ADDR]) !=
|
||||||
|
IEEE802154_ADDR_LEN) {
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto nla_put_failure;
|
||||||
|
}
|
||||||
|
|
||||||
dev = phy->add_iface(phy, devname);
|
dev = phy->add_iface(phy, devname);
|
||||||
if (IS_ERR(dev)) {
|
if (IS_ERR(dev)) {
|
||||||
rc = PTR_ERR(dev);
|
rc = PTR_ERR(dev);
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (info->attrs[IEEE802154_ATTR_HW_ADDR]) {
|
||||||
|
struct sockaddr addr;
|
||||||
|
|
||||||
|
addr.sa_family = ARPHRD_IEEE802154;
|
||||||
|
nla_memcpy(&addr.sa_data, info->attrs[IEEE802154_ATTR_HW_ADDR],
|
||||||
|
IEEE802154_ADDR_LEN);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* strangely enough, some callbacks (inetdev_event) from
|
||||||
|
* dev_set_mac_address require RTNL_LOCK
|
||||||
|
*/
|
||||||
|
rtnl_lock();
|
||||||
|
rc = dev_set_mac_address(dev, &addr);
|
||||||
|
rtnl_unlock();
|
||||||
|
if (rc)
|
||||||
|
goto dev_unregister;
|
||||||
|
}
|
||||||
|
|
||||||
NLA_PUT_STRING(msg, IEEE802154_ATTR_PHY_NAME, wpan_phy_name(phy));
|
NLA_PUT_STRING(msg, IEEE802154_ATTR_PHY_NAME, wpan_phy_name(phy));
|
||||||
NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
|
NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
|
||||||
|
|
||||||
|
@ -228,6 +254,11 @@ static int ieee802154_add_iface(struct sk_buff *skb,
|
||||||
|
|
||||||
return ieee802154_nl_reply(msg, info);
|
return ieee802154_nl_reply(msg, info);
|
||||||
|
|
||||||
|
dev_unregister:
|
||||||
|
rtnl_lock(); /* del_iface must be called with RTNL lock */
|
||||||
|
phy->del_iface(phy, dev);
|
||||||
|
dev_put(dev);
|
||||||
|
rtnl_unlock();
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
nlmsg_free(msg);
|
nlmsg_free(msg);
|
||||||
out_dev:
|
out_dev:
|
||||||
|
|
Loading…
Reference in New Issue