* [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling
@ 2015-03-18 9:10 Johan Hedberg
2015-03-18 9:10 ` [PATCH 2/2] Bluetooth: Add proper cleanup path for bt_6lowpan_init() Johan Hedberg
2015-03-18 12:47 ` [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Jukka Rissanen
0 siblings, 2 replies; 3+ messages in thread
From: Johan Hedberg @ 2015-03-18 9:10 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
This patch defines a new HCI channel for 6LoWPAN usage and registers a
command handler table for it in the 6lowpan module.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
include/net/bluetooth/hci_sock.h | 1 +
net/bluetooth/6lowpan.c | 21 ++++++++++++++++++++-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/include/net/bluetooth/hci_sock.h b/include/net/bluetooth/hci_sock.h
index 9a46d665c1b5..6be6120e1bc9 100644
--- a/include/net/bluetooth/hci_sock.h
+++ b/include/net/bluetooth/hci_sock.h
@@ -45,6 +45,7 @@ struct sockaddr_hci {
#define HCI_CHANNEL_USER 1
#define HCI_CHANNEL_MONITOR 2
#define HCI_CHANNEL_CONTROL 3
+#define HCI_CHANNEL_6LOWPAN 4
struct hci_filter {
unsigned long type_mask;
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index 1742b849fcff..524218aeea6f 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -25,6 +25,7 @@
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
+#include <net/bluetooth/hci_sock.h>
#include <net/bluetooth/l2cap.h>
#include <net/6lowpan.h> /* for the compression support */
@@ -1433,8 +1434,20 @@ static struct notifier_block bt_6lowpan_dev_notifier = {
.notifier_call = device_event,
};
+static const struct hci_mgmt_handler bt_6lowpan_handlers[] = {
+ { NULL }, /* 0x0000 (no command) */
+};
+
+static struct hci_mgmt_chan bt_6lowpan_chan = {
+ .channel = HCI_CHANNEL_6LOWPAN,
+ .handler_count = ARRAY_SIZE(bt_6lowpan_handlers),
+ .handlers = bt_6lowpan_handlers,
+};
+
static int __init bt_6lowpan_init(void)
{
+ int err;
+
lowpan_enable_debugfs = debugfs_create_file("6lowpan_enable", 0644,
bt_debugfs, NULL,
&lowpan_enable_fops);
@@ -1442,11 +1455,17 @@ static int __init bt_6lowpan_init(void)
bt_debugfs, NULL,
&lowpan_control_fops);
- return register_netdevice_notifier(&bt_6lowpan_dev_notifier);
+ err = register_netdevice_notifier(&bt_6lowpan_dev_notifier);
+ if (err)
+ return err;
+
+ return hci_mgmt_chan_register(&bt_6lowpan_chan);
}
static void __exit bt_6lowpan_exit(void)
{
+ hci_mgmt_chan_unregister(&bt_6lowpan_chan);
+
debugfs_remove(lowpan_enable_debugfs);
debugfs_remove(lowpan_control_debugfs);
--
2.1.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] Bluetooth: Add proper cleanup path for bt_6lowpan_init()
2015-03-18 9:10 [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Johan Hedberg
@ 2015-03-18 9:10 ` Johan Hedberg
2015-03-18 12:47 ` [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Jukka Rissanen
1 sibling, 0 replies; 3+ messages in thread
From: Johan Hedberg @ 2015-03-18 9:10 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
In case part of the bt_6lowpan_init() fails we should undo any
operations that succeeded before the failure. This patch add the
necessary cleanup path to the function.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/6lowpan.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index 524218aeea6f..6e3c208820b8 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -1457,9 +1457,20 @@ static int __init bt_6lowpan_init(void)
err = register_netdevice_notifier(&bt_6lowpan_dev_notifier);
if (err)
- return err;
+ goto failed;
- return hci_mgmt_chan_register(&bt_6lowpan_chan);
+ err = hci_mgmt_chan_register(&bt_6lowpan_chan);
+ if (err) {
+ unregister_netdevice_notifier(&bt_6lowpan_dev_notifier);
+ goto failed;
+ }
+
+ return 0;
+
+failed:
+ debugfs_remove(lowpan_enable_debugfs);
+ debugfs_remove(lowpan_control_debugfs);
+ return err;
}
static void __exit bt_6lowpan_exit(void)
--
2.1.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling
2015-03-18 9:10 [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Johan Hedberg
2015-03-18 9:10 ` [PATCH 2/2] Bluetooth: Add proper cleanup path for bt_6lowpan_init() Johan Hedberg
@ 2015-03-18 12:47 ` Jukka Rissanen
1 sibling, 0 replies; 3+ messages in thread
From: Jukka Rissanen @ 2015-03-18 12:47 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
Hi Johan,
On ke, 2015-03-18 at 11:10 +0200, Johan Hedberg wrote:
> From: Johan Hedberg <johan.hedberg@intel.com>
>
> This patch defines a new HCI channel for 6LoWPAN usage and registers a
> command handler table for it in the 6lowpan module.
>
> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Looks good to me.
Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
> ---
> include/net/bluetooth/hci_sock.h | 1 +
> net/bluetooth/6lowpan.c | 21 ++++++++++++++++++++-
> 2 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/bluetooth/hci_sock.h b/include/net/bluetooth/hci_sock.h
> index 9a46d665c1b5..6be6120e1bc9 100644
> --- a/include/net/bluetooth/hci_sock.h
> +++ b/include/net/bluetooth/hci_sock.h
> @@ -45,6 +45,7 @@ struct sockaddr_hci {
> #define HCI_CHANNEL_USER 1
> #define HCI_CHANNEL_MONITOR 2
> #define HCI_CHANNEL_CONTROL 3
> +#define HCI_CHANNEL_6LOWPAN 4
>
> struct hci_filter {
> unsigned long type_mask;
> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> index 1742b849fcff..524218aeea6f 100644
> --- a/net/bluetooth/6lowpan.c
> +++ b/net/bluetooth/6lowpan.c
> @@ -25,6 +25,7 @@
>
> #include <net/bluetooth/bluetooth.h>
> #include <net/bluetooth/hci_core.h>
> +#include <net/bluetooth/hci_sock.h>
> #include <net/bluetooth/l2cap.h>
>
> #include <net/6lowpan.h> /* for the compression support */
> @@ -1433,8 +1434,20 @@ static struct notifier_block bt_6lowpan_dev_notifier = {
> .notifier_call = device_event,
> };
>
> +static const struct hci_mgmt_handler bt_6lowpan_handlers[] = {
> + { NULL }, /* 0x0000 (no command) */
> +};
> +
> +static struct hci_mgmt_chan bt_6lowpan_chan = {
> + .channel = HCI_CHANNEL_6LOWPAN,
> + .handler_count = ARRAY_SIZE(bt_6lowpan_handlers),
> + .handlers = bt_6lowpan_handlers,
> +};
> +
> static int __init bt_6lowpan_init(void)
> {
> + int err;
> +
> lowpan_enable_debugfs = debugfs_create_file("6lowpan_enable", 0644,
> bt_debugfs, NULL,
> &lowpan_enable_fops);
> @@ -1442,11 +1455,17 @@ static int __init bt_6lowpan_init(void)
> bt_debugfs, NULL,
> &lowpan_control_fops);
>
> - return register_netdevice_notifier(&bt_6lowpan_dev_notifier);
> + err = register_netdevice_notifier(&bt_6lowpan_dev_notifier);
> + if (err)
> + return err;
> +
> + return hci_mgmt_chan_register(&bt_6lowpan_chan);
> }
>
> static void __exit bt_6lowpan_exit(void)
> {
> + hci_mgmt_chan_unregister(&bt_6lowpan_chan);
> +
> debugfs_remove(lowpan_enable_debugfs);
> debugfs_remove(lowpan_control_debugfs);
>
Cheers,
Jukka
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-03-18 12:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-18 9:10 [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Johan Hedberg
2015-03-18 9:10 ` [PATCH 2/2] Bluetooth: Add proper cleanup path for bt_6lowpan_init() Johan Hedberg
2015-03-18 12:47 ` [PATCH 1/2] Bluetooth: Add skeleton for 6LoWPAN mgmt command handling Jukka Rissanen
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.