Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-next' of git://git2.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan

+33 -6
-2
drivers/ieee802154/Makefile
··· 1 1 obj-$(CONFIG_IEEE802154_FAKEHARD) += fakehard.o 2 - 3 - ccflags-y := -DDEBUG -DCONFIG_FFD
-2
drivers/ieee802154/fakehard.c
··· 370 370 return -ENOMEM; 371 371 } 372 372 373 - phy->dev.platform_data = dev; 374 - 375 373 memcpy(dev->dev_addr, "\xba\xbe\xca\xfe\xde\xad\xbe\xef", 376 374 dev->addr_len); 377 375 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
+1 -1
net/ieee802154/af_ieee802154.c
··· 302 302 struct packet_type *pt, struct net_device *orig_dev) 303 303 { 304 304 if (!netif_running(dev)) 305 - return -ENODEV; 305 + goto drop; 306 306 pr_debug("got frame, type %d, dev %p\n", dev->type, dev); 307 307 #ifdef DEBUG 308 308 print_hex_dump_bytes("ieee802154_rcv ", DUMP_PREFIX_NONE, skb->data, skb->len);
+1 -1
net/ieee802154/dgram.c
··· 1 1 /* 2 - * ZigBee socket interface 2 + * IEEE 802.15.4 dgram socket interface 3 3 * 4 4 * Copyright 2007, 2008 Siemens AG 5 5 *
+31
net/ieee802154/nl-phy.c
··· 24 24 25 25 #include <linux/kernel.h> 26 26 #include <linux/slab.h> 27 + #include <linux/if_arp.h> 27 28 #include <net/netlink.h> 28 29 #include <net/genetlink.h> 29 30 #include <net/wpan-phy.h> ··· 214 213 goto nla_put_failure; 215 214 } 216 215 216 + if (info->attrs[IEEE802154_ATTR_HW_ADDR] && 217 + nla_len(info->attrs[IEEE802154_ATTR_HW_ADDR]) != 218 + IEEE802154_ADDR_LEN) { 219 + rc = -EINVAL; 220 + goto nla_put_failure; 221 + } 222 + 217 223 dev = phy->add_iface(phy, devname); 218 224 if (IS_ERR(dev)) { 219 225 rc = PTR_ERR(dev); 220 226 goto nla_put_failure; 227 + } 228 + 229 + if (info->attrs[IEEE802154_ATTR_HW_ADDR]) { 230 + struct sockaddr addr; 231 + 232 + addr.sa_family = ARPHRD_IEEE802154; 233 + nla_memcpy(&addr.sa_data, info->attrs[IEEE802154_ATTR_HW_ADDR], 234 + IEEE802154_ADDR_LEN); 235 + 236 + /* 237 + * strangely enough, some callbacks (inetdev_event) from 238 + * dev_set_mac_address require RTNL_LOCK 239 + */ 240 + rtnl_lock(); 241 + rc = dev_set_mac_address(dev, &addr); 242 + rtnl_unlock(); 243 + if (rc) 244 + goto dev_unregister; 221 245 } 222 246 223 247 NLA_PUT_STRING(msg, IEEE802154_ATTR_PHY_NAME, wpan_phy_name(phy)); ··· 254 228 255 229 return ieee802154_nl_reply(msg, info); 256 230 231 + dev_unregister: 232 + rtnl_lock(); /* del_iface must be called with RTNL lock */ 233 + phy->del_iface(phy, dev); 234 + dev_put(dev); 235 + rtnl_unlock(); 257 236 nla_put_failure: 258 237 nlmsg_free(msg); 259 238 out_dev: