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

Reply via email to