Updates for the IEEE 802.15.4 stack
Subsystems (4)
Please pull in the following updates:
* confirmation for START command
* configurable ACK requests
* other small fixes
PATCH 1/10 af_ieee802154: drop IEEE802154_SIOC_ADD_SLAVE declaration
IEEE802154_SIOC_ADD_SLAVE was used to allocate 802.15.4 interfaces on the top of radio. It's not used anymore, drop it.
--- include/net/af_ieee802154.h | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-)
include/net/af_ieee802154.h +0 -3
@@ -54,7 +54,4 @@ struct sockaddr_ieee802154 { struct ieee802154_addr addr; }; -/* master device */ -#define IEEE802154_SIOC_ADD_SLAVE (SIOCDEVPRIVATE + 0) -#endif
Signature · 1 line
1.6.3.3
PATCH 2/10 af_ieee802154: fix ioctl processing
fix two errors in ioctl processing:
1) if the ioctl isn't supported one should return -ENOIOCTLCMD
2) don't call ndo_do_ioctl if the device doesn't provide it
--- net/ieee802154/af_ieee802154.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
net/ieee802154/af_ieee802154.c +5 -3
@@ -136,7 +136,7 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg, unsigned int cmd) {struct ifreq ifr; -int ret = -EINVAL ; +int ret = -ENOIOCTLCMD ;struct net_device *dev;if (copy_from_user (&ifr, arg,sizeof (struct ifreq )))
@@ -146,8 +146,10 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,dev_load (sock_net (sk), ifr.ifr_name); dev =dev_get_by_name (sock_net (sk), ifr.ifr_name); -if (dev->type ==ARPHRD_IEEE802154 || - dev->type ==ARPHRD_IEEE802154_PHY ) + +if ((dev->type ==ARPHRD_IEEE802154 || + dev->type ==ARPHRD_IEEE802154_PHY ) && + dev->netdev_ops->ndo_do_ioctl) ret = dev->netdev_ops->ndo_do_ioctl (dev, &ifr, cmd);if (!ret &©_to_user (arg, &ifr,sizeof (struct ifreq )))
Signature · 1 line
1.6.3.3
PATCH 3/10 nl802154: make ieee802154_policy constant
--- include/linux/nl802154.h | 2 +- net/ieee802154/nl_policy.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-)
include/linux/nl802154.h +1 -1
@@ -69,7 +69,7 @@ enum {#define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1) -extern struct nla_policy ieee802154_policy[]; +extern const struct nla_policy ieee802154_policy[];/* commands */ /* REQ should be responded with CONF
net/ieee802154/nl_policy.c +2 -1
@@ -24,7 +24,7 @@#define NLA_HW_ADDR NLA_U64 -struct nla_policy ieee802154_policy[IEEE802154_ATTR_MAX +1 ] = { +const struct nla_policy ieee802154_policy[IEEE802154_ATTR_MAX +1 ] = { [IEEE802154_ATTR_DEV_NAME ] = { .type =NLA_STRING , }, [IEEE802154_ATTR_DEV_INDEX ] = { .type =NLA_U32 , },
@@ -50,3 +50,4 @@ struct nla_policy ieee802154_policy[IEEE802154_ATTR_MAX + 1] = { [IEEE802154_ATTR_DURATION] = { .type = NLA_U8, }, [IEEE802154_ATTR_ED_LIST] = { .len = 27 }, }; +
Signature · 1 line
1.6.3.3
PATCH 4/10 documentation: fix wrt. headers rename
--- Documentation/networking/ieee802154.txt | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-)
Documentation/networking/ieee802154.txt +4 -5
@@ -22,7 +22,7 @@ int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0); ..... The address family, socket addresses etc. are defined in the -include/net/ieee802154/af_ieee802154.h header or in the special header +include/net/af_ieee802154.h header or in the special header in our userspace package (see either linux-zigbee sourceforge download page or git tree at git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee).
@@ -33,7 +33,7 @@ MLME - MAC Level Management ============================ Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands. -See the include/net/ieee802154/nl802154.h header. Our userspace tools package +See the include/net/nl802154.h header. Our userspace tools package (see above) provides CLI configuration utility for radio interfaces and simple coordinator for IEEE 802.15.4 networks as an example users of MLME protocol.
@@ -54,7 +54,7 @@ Those types of devices require different approach to be hooked into Linux kernel HardMAC ======= -See the header include/net/ieee802154/netdevice.h. You have to implement Linux +See the header include/net/ieee802154_netdev.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. The control block of sk_buffs will contain additional info as described in the struct ieee802154_mac_cb.
@@ -72,5 +72,4 @@ SoftMAC We are going to provide intermediate layer implementing IEEE 802.15.4 MAC in software. This is currently WIP. -See header include/net/ieee802154/mac802154.h and several drivers in -drivers/ieee802154/ +See header include/net/mac802154.h and several drivers in drivers/ieee802154/.
Signature · 1 line
1.6.3.3
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-5-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 5/10 nl802154: add support for dumping WPAN interface information
--- include/linux/nl802154.h | 2 + net/ieee802154/netlink.c | 106 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 2 deletions(-)
include/linux/nl802154.h +2 -0
@@ -111,6 +111,8 @@ enum {IEEE802154_RX_ENABLE_REQ ,/* Not supported yet */ IEEE802154_RX_ENABLE_CONF ,/* Not supported yet */ +IEEE802154_LIST_IFACE , + __IEEE802154_CMD_MAX, };
net/ieee802154/netlink.c +104 -2
154 lines not on this page · raw message
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-6-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 6/10 af_ieee802154: provide dummy get/setsockopt
Provide dummt get/setsockopt implementations to stop these syscalls from oopsing on our sockets.
--- net/ieee802154/dgram.c | 14 ++++++++++++++ net/ieee802154/raw.c | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 0 deletions(-)
net/ieee802154/dgram.c +14 -0
@@ -377,6 +377,18 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)return ret; } +static int dgram_getsockopt (struct sock *sk,int level,int optname, +char __user *optval,int __user *optlen) +{ +return -EOPNOTSUPP ; +} + +static int dgram_setsockopt (struct sock *sk,int level,int optname, +char __user *optval,int __user optlen) +{ +return -EOPNOTSUPP ; +} +struct proto ieee802154_dgram_prot = { .name ="IEEE-802.15.4-MAC" , .owner =THIS_MODULE ,
@@ -391,5 +403,7 @@ struct proto ieee802154_dgram_prot = { .connect = dgram_connect, .disconnect = dgram_disconnect, .ioctl = dgram_ioctl, + .getsockopt = dgram_getsockopt, + .setsockopt = dgram_setsockopt, };
net/ieee802154/raw.c +14 -0
@@ -238,6 +238,18 @@ void ieee802154_raw_deliver(struct net_device *dev, struct sk_buff *skb)read_unlock (&raw_lock); } +static int raw_getsockopt (struct sock *sk,int level,int optname, +char __user *optval,int __user *optlen) +{ +return -EOPNOTSUPP ; +} + +static int raw_setsockopt (struct sock *sk,int level,int optname, +char __user *optval,int __user optlen) +{ +return -EOPNOTSUPP ; +} +struct proto ieee802154_raw_prot = { .name ="IEEE-802.15.4-RAW" , .owner =THIS_MODULE ,
@@ -250,5 +262,7 @@ struct proto ieee802154_raw_prot = { .unhash = raw_unhash, .connect = raw_connect, .disconnect = raw_disconnect, + .getsockopt = raw_getsockopt, + .setsockopt = raw_setsockopt, };
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-7-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 7/10 af_ieee802154: minor cleanup in dgram_bind
1) fix ro->bound protection by socket lock
2) make ro->bound bit instead of int
--- net/ieee802154/dgram.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
net/ieee802154/dgram.c +8 -6
@@ -40,9 +40,10 @@ static DEFINE_RWLOCK(dgram_lock);struct dgram_sock {struct sock sk; -int bound;struct ieee802154_addr src_addr;struct ieee802154_addr dst_addr; + +unsigned bound:1 ; };static inline struct dgram_sock *dgram_sk (const struct sock *sk)
@@ -86,18 +87,18 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len) {struct sockaddr_ieee802154 *addr = (struct sockaddr_ieee802154 *)uaddr;struct dgram_sock *ro =dgram_sk (sk); -int err =0 ; +int err = -EINVAL ;struct net_device *dev; +lock_sock (sk); + ro->bound =0 ;if (len <sizeof (*addr)) -return -EINVAL ; + goto out;if (addr->family !=AF_IEEE802154 ) -return -EINVAL ; - -lock_sock (sk); + goto out; dev =ieee802154_get_dev (sock_net (sk), &addr->addr);if (!dev) {
@@ -113,6 +114,7 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len)memcpy (&ro->src_addr, &addr->addr,sizeof (struct ieee802154_addr )); ro->bound =1 ; + err =0 ; out_put:dev_put (dev); out:
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-8-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 8/10 af_ieee802154: add support for WANT_ACK socket option
--- include/net/af_ieee802154.h | 5 +++ net/ieee802154/dgram.c | 58 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 59 insertions(+), 4 deletions(-)
include/net/af_ieee802154.h +5 -0
@@ -54,4 +54,9 @@ struct sockaddr_ieee802154 { struct ieee802154_addr addr; }; +/* get/setsockopt */ +#define SOL_IEEE802154 0 + +#define WPAN_WANTACK 0 +#endif
net/ieee802154/dgram.c +54 -4
93 lines not on this page · raw message
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-9-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 9/10 nl802154: support START-CONFIRM primitive
--- include/net/nl802154.h | 9 +++++++++ net/ieee802154/netlink.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 0 deletions(-)
include/net/nl802154.h +9 -0
@@ -114,4 +114,13 @@ int ieee802154_nl_scan_confirm(struct net_device *dev,int ieee802154_nl_beacon_indic (struct net_device *dev,u16 panid,u16 coord_addr); +/** +* ieee802154_nl_start_confirm - Notify userland of completion of start. +* @dev: The device which was instructed to scan. +* @status: The status of the scan operation. +* +* Note: This is in section 7.1.14 of the IEEE 802.15.4 document. +*/ +int ieee802154_nl_start_confirm (struct net_device *dev,u8 status); +#endif
net/ieee802154/netlink.c +32 -0
@@ -31,6 +31,7 @@#include <linux/nl802154.h> #include <net/af_ieee802154.h> #include <net/nl802154.h> +#include <net/ieee802154.h> #include <net/ieee802154_netdev.h> static unsigned int ieee802154_seq_num;
@@ -262,6 +263,31 @@ nla_put_failure: }EXPORT_SYMBOL (ieee802154_nl_scan_confirm); +int ieee802154_nl_start_confirm (struct net_device *dev,u8 status) +{ +struct sk_buff *msg; + +pr_debug ("%s\n" , __func__); + + msg =ieee802154_nl_create (0 ,IEEE802154_START_CONF ); +if (!msg) +return -ENOBUFS ; + +NLA_PUT_STRING (msg,IEEE802154_ATTR_DEV_NAME , dev->name); +NLA_PUT_U32 (msg,IEEE802154_ATTR_DEV_INDEX , dev->ifindex); +NLA_PUT (msg,IEEE802154_ATTR_HW_ADDR ,IEEE802154_ADDR_LEN , + dev->dev_addr); + +NLA_PUT_U8 (msg,IEEE802154_ATTR_STATUS , status); + +return ieee802154_nl_finish (msg); + +nla_put_failure: +nlmsg_free (msg); +return -ENOBUFS ; +} +EXPORT_SYMBOL (ieee802154_nl_start_confirm); +static int ieee802154_nl_fill_iface (struct sk_buff *msg,u32 pid,u32 seq,int flags,struct net_device *dev) {
@@ -462,6 +488,12 @@ static int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info) blx =nla_get_u8 (info->attrs[IEEE802154_ATTR_BAT_EXT ]); coord_realign =nla_get_u8 (info->attrs[IEEE802154_ATTR_COORD_REALIGN ]); +if (addr.short_addr ==IEEE802154_ADDR_BROADCAST ) { +ieee802154_nl_start_confirm (dev,IEEE802154_NO_SHORT_ADDRESS ); +dev_put (dev); +return -EINVAL ; + } + ret =ieee802154_mlme_ops (dev)->start_req (dev, &addr, channel, bcn_ord, sf_ord, pan_coord, blx, coord_realign);
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
A message that is not in the archive (sent off-list or not yet received): 1249649925-11996-10-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
PATCH 10/10 fakehard: use START-CONFIRM primitive to report START failure
--- drivers/ieee802154/fakehard.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-)
drivers/ieee802154/fakehard.c +2 -6
@@ -177,18 +177,14 @@ static int fake_disassoc_req(struct net_device *dev,* * Note: This is in section 7.5.2.3 of the IEEE 802.15.4-2006 * document, with 7.3.8 describing coordinator realignment. -* -* Note: There is currently no way to notify the coordinator userland -* program of whether or not the PAN has started successfully. As -* such, the coordinator program cannot know when the MAC has -* completed starting the network and will simply have to assume -* completeness based on some form of time delay. */ static int fake_start_req (struct net_device *dev,struct ieee802154_addr *addr,u8 channel,u8 bcn_ord,u8 sf_ord,u8 pan_coord,u8 blx,u8 coord_realign) { +/* We don't emulate beacons here at all, so START should fail */ +ieee802154_nl_start_confirm (dev,IEEE802154_INVALID_PARAMETER );return 0 ; }
Signature · 8 lines
1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
Re: [PATCH 09/10] nl802154: support START-CONFIRM primitive
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:44 +0400
Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
David Miller
maintainerRe: [PATCH 09/10] nl802154: support START-CONFIRM primitive
From: David Miller <[email protected]>
Date: Wed, 12 Aug 2009 20:52:56 -0700 (PDT)
Quoted 6 lines
From: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:44 +0400Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>Applied to net-next-2.6
Patch #10 is applied too, I don't have a copy in my inbox for some reason to apply explicitly to it, sorry.
Re: [PATCH 08/10] af_ieee802154: add support for WANT_ACK socket option
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:43 +0400
Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
Re: [PATCH 07/10] af_ieee802154: minor cleanup in dgram_bind
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:42 +0400
Quoted 4 lines
1) fix
ro->boundprotection by socket lock
2) makero->boundbit instead of intSigned-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
David Miller
maintainerRe: [PATCH 06/10] af_ieee802154: provide dummy get/setsockopt
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:41 +0400
Quoted 4 lines
Provide dummt get/setsockopt implementations to stop these syscalls from oopsing on our sockets.
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
No need for me to apply this, already in the tree.
Re: [PATCH 05/10] nl802154: add support for dumping WPAN interface information
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:40 +0400
Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
Re: [PATCH 04/10] documentation: fix wrt. headers rename
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:39 +0400
Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
Re: [PATCH 03/10] nl802154: make ieee802154_policy constant
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:38 +0400
Quoted 1 line
Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6
David Miller
maintainerRe: [PATCH 02/10] af_ieee802154: fix ioctl processing
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:37 +0400
Quoted 5 lines
fix two errors in ioctl processing:
1) if the ioctl isn't supported one should return-ENOIOCTLCMD
2) don't callndo_do_ioctlif the device doesn't provide itSigned-off-by Dmitry Eremin-Solenikov <[email protected]>
This change is already in net-2.6, so submitting it for net-next-2.6 is superfluous. It shows up when I merge net-2.6 into net-next-2.6, which I keep doing periodically.
If you have dependencies with net-2.6 changes, simply tell me that I need to merge net-2.6 into net-next-2.6 before applying your net-next-2.6 patches
Re: [PATCH 01/10] af_ieee802154: drop IEEE802154_SIOC_ADD_SLAVE declaration
In reply to Dmitry Eremin-SolenikovFrom: Dmitry Eremin-Solenikov <[email protected]>
Date: Fri, 7 Aug 2009 16:58:36 +0400
Quoted 4 lines
IEEE802154_SIOC_ADD_SLAVEwas used to allocate 802.15.4 interfaces on the top of radio. It's not used anymore, drop it.Signed-off-by Dmitry Eremin-Solenikov <[email protected]>
Applied to net-next-2.6