From: Stefan Schmidt <stefan@osg.samsung.com>
To: Alexander Aring <alex.aring@gmail.com>, linux-wpan@vger.kernel.org
Cc: linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org,
kernel@pengutronix.de, mcr@sandelman.ca,
lukasz.duda@nordicsemi.no, martin.gergeleit@hs-rm.de
Subject: Re: [RFCv3 bluetooth-next 1/4] 6lowpan: add lowpan dev register helpers
Date: Tue, 1 Dec 2015 21:38:26 +0100 [thread overview]
Message-ID: <565E0542.7010001@osg.samsung.com> (raw)
In-Reply-To: <1448796882-316-2-git-send-email-alex.aring@gmail.com>
Hello.
On 29/11/15 12:34, Alexander Aring wrote:
> This patch introduces register and unregister functionality for lowpan
> interfaces. While register a lowpan interface there are several things
> which need to be initialize by the 6lowpan subsystem. Upcoming
> functionality need to register/unregister per interface components e.g.
> debugfs entry.
>
> Signed-off-by: Alexander Aring <alex.aring@gmail.com>
> ---
> include/net/6lowpan.h | 7 ++++++-
> net/6lowpan/core.c | 33 +++++++++++++++++++++++++++++++--
> net/bluetooth/6lowpan.c | 8 +++-----
> net/ieee802154/6lowpan/core.c | 6 ++----
> 4 files changed, 42 insertions(+), 12 deletions(-)
>
> diff --git a/include/net/6lowpan.h b/include/net/6lowpan.h
> index cf3bc56..730211f 100644
> --- a/include/net/6lowpan.h
> +++ b/include/net/6lowpan.h
> @@ -185,7 +185,12 @@ static inline void lowpan_push_hc_data(u8 **hc_ptr, const void *data,
> *hc_ptr += len;
> }
>
> -void lowpan_netdev_setup(struct net_device *dev, enum lowpan_lltypes lltype);
> +int lowpan_register_netdevice(struct net_device *dev,
> + enum lowpan_lltypes lltype);
> +int lowpan_register_netdev(struct net_device *dev,
> + enum lowpan_lltypes lltype);
> +void lowpan_unregister_netdevice(struct net_device *dev);
> +void lowpan_unregister_netdev(struct net_device *dev);
>
> /**
> * lowpan_header_decompress - replace 6LoWPAN header with IPv6 header
> diff --git a/net/6lowpan/core.c b/net/6lowpan/core.c
> index 83b19e0..80fc509 100644
> --- a/net/6lowpan/core.c
> +++ b/net/6lowpan/core.c
> @@ -15,7 +15,8 @@
>
> #include <net/6lowpan.h>
>
> -void lowpan_netdev_setup(struct net_device *dev, enum lowpan_lltypes lltype)
> +int lowpan_register_netdevice(struct net_device *dev,
> + enum lowpan_lltypes lltype)
> {
> dev->addr_len = EUI64_ADDR_LEN;
> dev->type = ARPHRD_6LOWPAN;
> @@ -23,8 +24,36 @@ void lowpan_netdev_setup(struct net_device *dev, enum lowpan_lltypes lltype)
> dev->priv_flags |= IFF_NO_QUEUE;
>
> lowpan_priv(dev)->lltype = lltype;
> +
> + return register_netdevice(dev);
> +}
> +EXPORT_SYMBOL(lowpan_register_netdevice);
> +
> +int lowpan_register_netdev(struct net_device *dev,
> + enum lowpan_lltypes lltype)
> +{
> + int ret;
> +
> + rtnl_lock();
> + ret = lowpan_register_netdevice(dev, lltype);
> + rtnl_unlock();
> + return ret;
> +}
> +EXPORT_SYMBOL(lowpan_register_netdev);
> +
> +void lowpan_unregister_netdevice(struct net_device *dev)
> +{
> + unregister_netdevice(dev);
> +}
> +EXPORT_SYMBOL(lowpan_unregister_netdevice);
> +
> +void lowpan_unregister_netdev(struct net_device *dev)
> +{
> + rtnl_lock();
> + lowpan_unregister_netdevice(dev);
> + rtnl_unlock();
> }
> -EXPORT_SYMBOL(lowpan_netdev_setup);
> +EXPORT_SYMBOL(lowpan_unregister_netdev);
>
> static int __init lowpan_module_init(void)
> {
> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> index 9e9cca3..d040365 100644
> --- a/net/bluetooth/6lowpan.c
> +++ b/net/bluetooth/6lowpan.c
> @@ -825,9 +825,7 @@ static int setup_netdev(struct l2cap_chan *chan, struct lowpan_dev **dev)
> list_add_rcu(&(*dev)->list, &bt_6lowpan_devices);
> spin_unlock(&devices_lock);
>
> - lowpan_netdev_setup(netdev, LOWPAN_LLTYPE_BTLE);
> -
> - err = register_netdev(netdev);
> + err = lowpan_register_netdev(netdev, LOWPAN_LLTYPE_BTLE);
> if (err < 0) {
> BT_INFO("register_netdev failed %d", err);
> spin_lock(&devices_lock);
> @@ -890,7 +888,7 @@ static void delete_netdev(struct work_struct *work)
> struct lowpan_dev *entry = container_of(work, struct lowpan_dev,
> delete_netdev);
>
> - unregister_netdev(entry->netdev);
> + lowpan_unregister_netdev(entry->netdev);
>
> /* The entry pointer is deleted by the netdev destructor. */
> }
> @@ -1348,7 +1346,7 @@ static void disconnect_devices(void)
> ifdown(entry->netdev);
> BT_DBG("Unregistering netdev %s %p",
> entry->netdev->name, entry->netdev);
> - unregister_netdev(entry->netdev);
> + lowpan_unregister_netdev(entry->netdev);
> kfree(entry);
> }
> }
> diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
> index 20c49c7..737c87a 100644
> --- a/net/ieee802154/6lowpan/core.c
> +++ b/net/ieee802154/6lowpan/core.c
> @@ -161,9 +161,7 @@ static int lowpan_newlink(struct net *src_net, struct net_device *ldev,
> wdev->needed_headroom;
> ldev->needed_tailroom = wdev->needed_tailroom;
>
> - lowpan_netdev_setup(ldev, LOWPAN_LLTYPE_IEEE802154);
> -
> - ret = register_netdevice(ldev);
> + ret = lowpan_register_netdevice(ldev, LOWPAN_LLTYPE_IEEE802154);
> if (ret < 0) {
> dev_put(wdev);
> return ret;
> @@ -180,7 +178,7 @@ static void lowpan_dellink(struct net_device *ldev, struct list_head *head)
> ASSERT_RTNL();
>
> wdev->ieee802154_ptr->lowpan_dev = NULL;
> - unregister_netdevice(ldev);
> + lowpan_unregister_netdevice(ldev);
> dev_put(wdev);
> }
>
That is better compared to what you had in v2. I think this one is ready
for a real PATCH and applying.
Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
regards
Stefan Schmidt
next prev parent reply other threads:[~2015-12-01 20:38 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-29 11:34 [RFCv3 bluetooth-next 0/4] 6lowpan: debugfs and stateful compression support Alexander Aring
2015-11-29 11:34 ` Alexander Aring
2015-11-29 11:34 ` [RFCv3 bluetooth-next 1/4] 6lowpan: add lowpan dev register helpers Alexander Aring
2015-11-29 11:34 ` Alexander Aring
2015-12-01 20:38 ` Stefan Schmidt [this message]
2015-11-29 11:34 ` [RFCv3 bluetooth-next 2/4] 6lowpan: add debugfs support Alexander Aring
2015-11-29 11:34 ` Alexander Aring
2015-12-01 20:50 ` Stefan Schmidt
2015-12-01 20:50 ` Stefan Schmidt
2015-11-29 11:34 ` [RFCv3 bluetooth-next 3/4] ipv6: add ipv6_addr_prefix_copy Alexander Aring
2015-11-29 11:34 ` Alexander Aring
2015-12-01 10:56 ` Hannes Frederic Sowa
2015-12-01 10:56 ` Hannes Frederic Sowa
2015-12-01 11:17 ` YOSHIFUJI Hideaki/吉藤英明
2015-12-01 11:38 ` Stefan Schmidt
2015-12-01 11:38 ` Stefan Schmidt
2015-12-01 11:51 ` Duda, Lukasz
2015-11-29 11:34 ` [RFCv3 bluetooth-next 4/4] 6lowpan: iphc: add support for stateful compression Alexander Aring
2015-11-29 11:34 ` Alexander Aring
2015-12-02 14:18 ` Stefan Schmidt
2015-12-03 14:22 ` Alexander Aring
2015-12-03 14:22 ` Alexander Aring
2015-12-04 12:13 ` Stefan Schmidt
2015-12-04 12:13 ` Stefan Schmidt
2015-12-11 17:05 ` Alexander Aring
2015-12-11 17:13 ` Alexander Aring
2015-12-11 17:13 ` Alexander Aring
2015-12-11 19:11 ` Stefan Schmidt
2015-12-11 19:49 ` Alexander Aring
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=565E0542.7010001@osg.samsung.com \
--to=stefan@osg.samsung.com \
--cc=alex.aring@gmail.com \
--cc=kernel@pengutronix.de \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-wpan@vger.kernel.org \
--cc=lukasz.duda@nordicsemi.no \
--cc=martin.gergeleit@hs-rm.de \
--cc=mcr@sandelman.ca \
--cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.