From patchwork Sat May 12 13:59:21 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: alex.bluesman.smirnov@gmail.com X-Patchwork-Id: 158747 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B33CFB702E for ; Sun, 13 May 2012 00:00:45 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756306Ab2ELOAm (ORCPT ); Sat, 12 May 2012 10:00:42 -0400 Received: from mail-wi0-f178.google.com ([209.85.212.178]:56521 "EHLO mail-wi0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756077Ab2ELOAX (ORCPT ); Sat, 12 May 2012 10:00:23 -0400 Received: by wibhn6 with SMTP id hn6so1098482wib.1 for ; Sat, 12 May 2012 07:00:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=y3GDqtXGLW7fUQGi5QmUgdHzUh0JEYhn4sGbxeZdQyg=; b=rNPQQQ8+T1TOKTLNeg8Uzui/llnT0d8+gORu57I9ZfoDcJL77dEpopqvJVKIJ7c6H7 s5Vhty0pYm+ilSYkp00H+f+Ao8Fwdms1dIOPSdBBHQm/lkSU8+NYhogBxgnBFaL+U/+N 3wpbK2JBVH1Lxs5Ore+++FwVunzxjX5ye5PPpANUJL4ZNQ4pK9BiRzJiAHyW7RCL+3t9 fAVFy9J/94UV+6uc6h7qbEMP2PjVia2rXQsaimBdNWKftL28R3RCNKpbSVICFvySp9/x woIv6G5U6n84FHMH3LlTgklM4N2gDRXWyiSQA6+BrJpe4tUtWbchLXx5rwPgJ3awwIih C/+A== Received: by 10.180.78.164 with SMTP id c4mr4546585wix.10.1336831222166; Sat, 12 May 2012 07:00:22 -0700 (PDT) Received: from localhost.localdomain ([91.213.169.4]) by mx.google.com with ESMTPS id bn9sm19099868wib.5.2012.05.12.07.00.20 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 12 May 2012 07:00:21 -0700 (PDT) From: Alexander Smirnov To: davem@davemloft.net Cc: netdev@vger.kernel.org, dbaryshkov@gmail.com, Alexander Smirnov Subject: [PATCH net-next v4 09/13] ieee802154: interface type to be added Date: Sat, 12 May 2012 17:59:21 +0400 Message-Id: <1336831165-23944-10-git-send-email-alex.bluesman.smirnov@gmail.com> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: <1336831165-23944-1-git-send-email-alex.bluesman.smirnov@gmail.com> References: <1336831165-23944-1-git-send-email-alex.bluesman.smirnov@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This stack implementation supports several types of slaves interfaces. Another parameter to 'add_iface_ function is added to clarify the interface type is going to be registered. Signed-off-by: Alexander Smirnov --- include/linux/nl802154.h | 6 ++++++ include/net/wpan-phy.h | 2 +- net/ieee802154/nl-phy.c | 9 ++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/linux/nl802154.h b/include/linux/nl802154.h index 33d9f51..2015ad2 100644 --- a/include/linux/nl802154.h +++ b/include/linux/nl802154.h @@ -68,6 +68,7 @@ enum { IEEE802154_ATTR_CHANNEL_PAGE_LIST, IEEE802154_ATTR_PHY_NAME, + IEEE802154_ATTR_DEV_TYPE, __IEEE802154_ATTR_MAX, }; @@ -126,4 +127,9 @@ enum { #define IEEE802154_CMD_MAX (__IEEE802154_CMD_MAX - 1) +enum { + __IEEE802154_DEV_INVALID = -1, + __IEEE802154_DEV_MAX, +}; + #endif diff --git a/include/net/wpan-phy.h b/include/net/wpan-phy.h index ff27f1b..efd6749 100644 --- a/include/net/wpan-phy.h +++ b/include/net/wpan-phy.h @@ -43,7 +43,7 @@ struct wpan_phy { int idx; struct net_device *(*add_iface)(struct wpan_phy *phy, - const char *name); + const char *name, int type); void (*del_iface)(struct wpan_phy *phy, struct net_device *dev); char priv[0] __attribute__((__aligned__(NETDEV_ALIGN))); diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c index 3bdc430..eed2916 100644 --- a/net/ieee802154/nl-phy.c +++ b/net/ieee802154/nl-phy.c @@ -179,6 +179,7 @@ static int ieee802154_add_iface(struct sk_buff *skb, const char *devname; int rc = -ENOBUFS; struct net_device *dev; + int type = __IEEE802154_DEV_INVALID; pr_debug("%s\n", __func__); @@ -221,7 +222,13 @@ static int ieee802154_add_iface(struct sk_buff *skb, goto nla_put_failure; } - dev = phy->add_iface(phy, devname); + if (info->attrs[IEEE802154_ATTR_DEV_TYPE]) { + type = nla_get_u8(info->attrs[IEEE802154_ATTR_DEV_TYPE]); + if (type >= __IEEE802154_DEV_MAX) + return -EINVAL; + } + + dev = phy->add_iface(phy, devname, type); if (IS_ERR(dev)) { rc = PTR_ERR(dev); goto nla_put_failure;