Hello, Prajosh. Please in future also send a cover letter containing a description of your changes and a summary of patchset (check git request-pull for a sample message format).
On 24/02/12 13:02, Prajosh Premdas wrote: > mlme reset functionality has been added for netlink socket interface > attributes mentioned are as per the IEEE 802.15.4 - 2006 specification > > Tested on SAM9G20-EK board NAK. See below. > > Signed-off-by: Prajosh Premdas <premdas.praj...@gmail.com> > --- > include/linux/nl802154.h | 2 + > include/net/ieee802154_netdev.h | 2 + > include/net/nl802154.h | 9 ++++++ > net/ieee802154/nl-mac.c | 57 +++++++++++++++++++++++++++++++++++++- > net/ieee802154/nl_policy.c | 2 + > 5 files changed, 70 insertions(+), 2 deletions(-) > > diff --git a/include/linux/nl802154.h b/include/linux/nl802154.h > index fbd0fdf..69fe03a 100644 > --- a/include/linux/nl802154.h > +++ b/include/linux/nl802154.h > @@ -70,6 +70,8 @@ enum { > IEEE802154_ATTR_PHY_NAME, > IEEE802154_ATTR_DEV_TYPE, > > + IEEE802154_ATTR_SET_DEFAULT_PIB, > + > __IEEE802154_ATTR_MAX, > }; > > diff --git a/include/net/ieee802154_netdev.h b/include/net/ieee802154_netdev.h > index b27730e..25cb045 100644 > --- a/include/net/ieee802154_netdev.h > +++ b/include/net/ieee802154_netdev.h > @@ -92,6 +92,8 @@ struct wpan_phy; > * So 2 sets of mlme operations are needed > */ > struct ieee802154_mlme_ops { > + int (*reset_req)(struct net_device *dev, > + u8 SetDefaultPIB); > int (*assoc_req)(struct net_device *dev, > struct ieee802154_addr *addr, > u8 channel, u8 page, u8 cap); > diff --git a/include/net/nl802154.h b/include/net/nl802154.h > index 99d2ba1..23c2302 100644 > --- a/include/net/nl802154.h > +++ b/include/net/nl802154.h > @@ -123,4 +123,13 @@ int ieee802154_nl_beacon_indic(struct net_device *dev, > u16 panid, > */ > int ieee802154_nl_start_confirm(struct net_device *dev, u8 status); > > +/** > + * ieee802154_reset_confirm - Notify userland of completion of reset. > + * @dev: The device which was instructed to scan. > + * @status: The status of the scan operation. > + * > + * Note: This is in section 7.1.9.2 of the IEEE 802.15.4 document. > + */ > +int ieee802154_reset_confirm(struct net_device *dev, u8 status); > + > #endif > diff --git a/net/ieee802154/nl-mac.c b/net/ieee802154/nl-mac.c > index adaf462..2ace28b 100644 > --- a/net/ieee802154/nl-mac.c > +++ b/net/ieee802154/nl-mac.c > @@ -1,8 +1,6 @@ > /* > * Netlink inteface for IEEE 802.15.4 stack > * > - * Copyright 2007, 2008 Siemens AG > - * Please never ever remove copyrights from the code. You can add your own (be it yours or your employers), but you cannot remove copyrights. > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License version 2 > * as published by the Free Software Foundation. > @@ -20,6 +18,8 @@ > * Sergey Lapin <sla...@ossfans.org> > * Dmitry Eremin-Solenikov <dbarysh...@gmail.com> > * Maxim Osipov <maxim.osi...@siemens.com> > + * Felix Varghese <felix.vargh...@atmel.com> > + * Prajosh Premdas <prajosh.prem...@atmel.com> > */ > > #include <linux/gfp.h> > @@ -519,6 +519,58 @@ static int ieee802154_scan_req(struct sk_buff *skb, > struct genl_info *info) > return ret; > } > > +static int ieee802154_reset_req(struct sk_buff *skb, struct genl_info *info) > +{ > + struct net_device *dev; > + u8 SetDefaultPIB; NoCamelCaseInKernelForEver. > + int ret = -EINVAL; > + > + if (!info->attrs[IEEE802154_ATTR_SET_DEFAULT_PIB]) > + return -EINVAL; > + > + dev = ieee802154_nl_get_dev(info); > + if (!dev) > + return -ENODEV; > + > + if (nla_get_u8(info->attrs[IEEE802154_ATTR_SET_DEFAULT_PIB])) > + SetDefaultPIB = 1; > + else > + SetDefaultPIB = 0; > + > + ret = ieee802154_mlme_ops(dev)->reset_req(dev, SetDefaultPIB); > + > + if (ret == 0) > + ieee802154_reset_confirm(dev, IEEE802154_SUCCESS); > + else > + ieee802154_reset_confirm(dev, IEEE802154_INVALID_PARAMETER); > + > + dev_put(dev); > + return ret; > +} > + > +int ieee802154_reset_confirm(struct net_device *dev, u8 status) > +{ > + struct sk_buff *msg; > + > + msg = ieee802154_nl_create(0, IEEE802154_RESET_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_mcast(msg, ieee802154_coord_mcgrp.id); > + > +nla_put_failure: > + nlmsg_free(msg); > + return -ENOBUFS; > +} > +EXPORT_SYMBOL(ieee802154_reset_confirm); > + > static int ieee802154_list_iface(struct sk_buff *skb, > struct genl_info *info) > { > @@ -581,6 +633,7 @@ cont: > } > > static struct genl_ops ieee802154_coordinator_ops[] = { > + IEEE802154_OP(IEEE802154_RESET_REQ, ieee802154_reset_req), > IEEE802154_OP(IEEE802154_ASSOCIATE_REQ, ieee802154_associate_req), > IEEE802154_OP(IEEE802154_ASSOCIATE_RESP, ieee802154_associate_resp), > IEEE802154_OP(IEEE802154_DISASSOCIATE_REQ, ieee802154_disassociate_req), > diff --git a/net/ieee802154/nl_policy.c b/net/ieee802154/nl_policy.c > index 6adda4d..9da1d72 100644 > --- a/net/ieee802154/nl_policy.c > +++ b/net/ieee802154/nl_policy.c > @@ -52,5 +52,7 @@ const struct nla_policy > ieee802154_policy[IEEE802154_ATTR_MAX + 1] = { > [IEEE802154_ATTR_DURATION] = { .type = NLA_U8, }, > [IEEE802154_ATTR_ED_LIST] = { .len = 27 }, > [IEEE802154_ATTR_CHANNEL_PAGE_LIST] = { .len = 32 * 4, }, > + > + [IEEE802154_ATTR_SET_DEFAULT_PIB] = { .type = NLA_U8, }, > }; > ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Linux-zigbee-devel mailing list Linux-zigbee-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel