netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: David Miller <davem@davemloft.net>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, sfr@canb.auug.org.au,
	slapin@ossfans.org
Subject: Re: [PATCH 4/6] net: add NL802154 interface for configuration of 802.15.4 devices
Date: Wed, 03 Jun 2009 13:05:10 +0200	[thread overview]
Message-ID: <1244027110.1693.9.camel@johannes.local> (raw)
In-Reply-To: <20090603105256.GB20508@doriath.ww600.siemens.net>

[-- Attachment #1: Type: text/plain, Size: 3885 bytes --]

On Wed, 2009-06-03 at 14:52 +0400, Dmitry Eremin-Solenikov wrote:

> +	IEEE802154_ATTR_CAPABILITY, /* FIXME: this is association */

Fix what?

> +#define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1)
> +#define NLA_HW_ADDR	NLA_U64
> +#define NLA_GET_HW_ADDR(attr, addr) do { u64 _temp = nla_get_u64(attr); memcpy(addr, &_temp, 8); } while (0)
> +#define NLA_PUT_HW_ADDR(msg, attr, addr) do { u64 _temp; memcpy(&_temp, addr, 8); NLA_PUT_U64(msg, attr, _temp); } while (0)

I really don't like this namespace pollution.

> +#ifdef IEEE802154_NL_WANT_POLICY
> +static struct nla_policy ieee802154_policy[IEEE802154_ATTR_MAX + 1] = {

Ho humm. This shouldn't be in a header file. Not even with an #ifdef
that exactly one C file then sets.

> +	[IEEE802154_ATTR_DURATION] = { .type = NLA_U8, },
> +#ifdef __KERNEL__
> +	[IEEE802154_ATTR_ED_LIST] = { .len = 27 },
> +#else

Ick.

> +/* commands */
> +/* REQ should be responded with CONF
> + * and INDIC with RESP
> + */
> +enum {

kernel-doc explaining the commands would be immensely helpful.


> +	IEEE802154_GTS_REQ, /* Not supported yet */
> +	IEEE802154_GTS_INDIC, /* Not supported yet */
> +	IEEE802154_GTS_CONF, /* Not supported yet */
> +	IEEE802154_RX_ENABLE_REQ, /* Not supported yet */
> +	IEEE802154_RX_ENABLE_CONF, /* Not supported yet */

Just leave it out then. You're fixing ABI here.

> +#ifdef __KERNEL__
> +struct net_device;
> +
> +int ieee802154_nl_assoc_indic(struct net_device *dev, struct ieee802154_addr *addr, u8 cap);
> +int ieee802154_nl_assoc_confirm(struct net_device *dev, u16 short_addr, u8 status);
> +int ieee802154_nl_disassoc_indic(struct net_device *dev, struct ieee802154_addr *addr, u8 reason);
> +int ieee802154_nl_disassoc_confirm(struct net_device *dev, u8 status);
> +int ieee802154_nl_scan_confirm(struct net_device *dev, u8 status, u8 scan_type, u32 unscanned,
> +		u8 *edl/*, struct list_head *pan_desc_list */);
> +int ieee802154_nl_beacon_indic(struct net_device *dev, u16 panid, u16 coord_addr); /* TODO */
> +#endif

Why not just use two header files, one in net/ and one in linux/?

> -obj-$(CONFIG_IEEE802154) +=	af_802154.o
> +obj-$(CONFIG_IEEE802154) +=	nl802154.o af_802154.o
> +nl802154-objs		:= netlink.o

That doesn't make any sense. Why the indirection?

> +#include <net/ieee802154/af_ieee802154.h>
> +#define IEEE802154_NL_WANT_POLICY
> +#include <net/ieee802154/nl802154.h>

Like I thought. That's ugly.

> +static int ieee802154_nl_put_failure(struct sk_buff *msg)
> +{
> +	void *hdr = genlmsg_data(NLMSG_DATA(msg->data)); /* XXX: nlh is right at the start of msg */
> +	genlmsg_cancel(msg, hdr);
> +	nlmsg_free(msg);
> +	return -ENOBUFS;
> +}

This seems weird.

> +int ieee802154_nl_assoc_indic(struct net_device *dev, struct ieee802154_addr *addr, u8 cap)
> +{
> +	struct sk_buff *msg;
> +
> +	pr_debug("%s\n", __func__);
> +
> +	msg = ieee802154_nl_create(/* flags*/ 0, IEEE802154_ASSOCIATE_INDIC);
> +	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_HW_ADDR(msg, IEEE802154_ATTR_HW_ADDR, dev->dev_addr);
> +
> +	/* FIXME: check that we really received hw address */
> +	NLA_PUT_HW_ADDR(msg, IEEE802154_ATTR_SRC_HW_ADDR, addr->hwaddr);

?


> +static int ieee802154_associate_req(struct sk_buff *skb, struct genl_info *info)
> +{
> +	struct net_device *dev;
> +	struct ieee802154_addr addr;
> +	int ret = -EINVAL;
> +
> +	if (!info->attrs[IEEE802154_ATTR_CHANNEL]
> +	 || !info->attrs[IEEE802154_ATTR_COORD_PAN_ID]
> +	 || (!info->attrs[IEEE802154_ATTR_COORD_HW_ADDR] && !info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR])
> +	 || !info->attrs[IEEE802154_ATTR_CAPABILITY])
> +		return -EINVAL;

That's some odd coding style.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  reply	other threads:[~2009-06-03 11:05 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-03  9:33 [MERGE REQUEST] IEEE 802.15.4 stack: generic parts Dmitry Eremin-Solenikov
2009-06-03  9:33 ` [PATCH 1/6] crc-itu-t: add bit-reversed calculation Dmitry Eremin-Solenikov
2009-06-03  9:33   ` [PATCH 2/6] Add constants for the ieee 802.15.4/ZigBee stack Dmitry Eremin-Solenikov
2009-06-03  9:33     ` [PATCH 3/6] net: add IEEE 802.15.4 socket family implementation Dmitry Eremin-Solenikov
     [not found]       ` <1244021629-18409-4-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-06-03  9:33         ` [PATCH 4/6] net: add NL802154 interface for configuration of 802.15.4 devices Dmitry Eremin-Solenikov
     [not found]           ` <1244021629-18409-5-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-06-03  9:33             ` [PATCH 5/6] ieee802154: add documentation about our stack Dmitry Eremin-Solenikov
     [not found]               ` <1244021629-18409-6-git-send-email-dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-06-03  9:33                 ` [PATCH 6/6] ieee802154: add simple HardMAC driver sample Dmitry Eremin-Solenikov
2009-06-03  9:39           ` [PATCH 4/6] net: add NL802154 interface for configuration of 802.15.4 devices Johannes Berg
     [not found]             ` <1244021964.10665.5.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
2009-06-03 10:09               ` David Miller
2009-06-03 10:52                 ` Dmitry Eremin-Solenikov
2009-06-03 11:05                   ` Johannes Berg [this message]
     [not found]                     ` <1244027110.1693.9.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
2009-06-03 12:27                       ` Dmitry Eremin-Solenikov
2009-06-04 14:12                         ` Johannes Berg
     [not found]                           ` <1244124749.22576.71.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
2009-06-04 14:51                             ` Dmitry Eremin-Solenikov
     [not found]                               ` <bc64b4640906040751i3c64c317i4eedb7d53307092a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-04 15:12                                 ` Patrick McHardy
     [not found]                                   ` <4A27E448.3040305-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org>
2009-06-04 15:14                                     ` Dmitry Eremin-Solenikov
     [not found]                                       ` <bc64b4640906040814m1756ea13s19e20592ecf90e9b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-06-04 15:15                                         ` Patrick McHardy
2009-06-03 12:55                     ` Sergey Lapin
2009-06-03 14:21                       ` Patrick McHardy
2009-06-03 23:12                     ` Dmitry Eremin-Solenikov
2009-06-03 10:08     ` [PATCH 2/6] Add constants for the ieee 802.15.4/ZigBee stack David Miller
     [not found]       ` <20090603.030826.03512651.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2009-06-03 10:51         ` Dmitry Eremin-Solenikov
2009-06-03 21:19           ` David Miller
     [not found]             ` <20090603.141919.261921857.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2009-06-03 23:15               ` Dmitry Eremin-Solenikov
2009-06-04  0:49                 ` David Miller
2009-06-03 12:43   ` [PATCH 1/6] crc-itu-t: add bit-reversed calculation Ben Hutchings
2009-06-03 12:48     ` Dmitry Eremin-Solenikov
2009-06-04  0:49     ` Dmitry Eremin-Solenikov
2009-06-21  8:29     ` Dmitry Eremin-Solenikov
     [not found]       ` <20090621082921.GA12749-nIupHZaCssqR2kOLt6zJ8ErlnG4Plg33XqFh9Ls21Oc@public.gmane.org>
2009-06-21 10:18         ` Ivo van Doorn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1244027110.1693.9.camel@johannes.local \
    --to=johannes@sipsolutions.net \
    --cc=davem@davemloft.net \
    --cc=dbaryshkov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=slapin@ossfans.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).