Commit 5547e48c authored by Jukka Rissanen's avatar Jukka Rissanen Committed by Marcel Holtmann

Bluetooth: 6LoWPAN: Create a kernel module

Instead of adding the 6LoWPAN functionality to Bluetooth module,
we create a separate kernel module for it.

Usage:

In the slave side do this:

$ modprobe bluetooth_6lowpan
$ echo 62 > /sys/kernel/debug/bluetooth/6lowpan_psm
$ hciconfig hci0 leadv

In the master side do this:

$ modprobe bluetooth_6lowpan
$ echo 62 > /sys/kernel/debug/bluetooth/6lowpan_psm
$ echo 'connect E0:06:E6:B7:2A:73 1' > \
                  /sys/kernel/debug/bluetooth/6lowpan_control

The 6LoWPAN functionality can be controlled by psm value. If it
is left to 0, then the module is disabled and all the 6LoWPAN
connections are dropped if there were any. In the above example,
the psm value is just an example and not a real value for
6LoWPAN service. The real psm value is yet to be defined in
Bluetooth specification.

The 6lowpan controlling interface is a temporary solution
until the specifications are ready.
Signed-off-by: default avatarJukka Rissanen <jukka.rissanen@linux.intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 6b8d4a6a
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/module.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <net/ipv6.h> #include <net/ipv6.h>
...@@ -1212,7 +1213,7 @@ static struct notifier_block bt_6lowpan_dev_notifier = { ...@@ -1212,7 +1213,7 @@ static struct notifier_block bt_6lowpan_dev_notifier = {
.notifier_call = device_event, .notifier_call = device_event,
}; };
int bt_6lowpan_init(void) static int __init bt_6lowpan_init(void)
{ {
lowpan_psm_debugfs = debugfs_create_file("6lowpan_psm", 0644, lowpan_psm_debugfs = debugfs_create_file("6lowpan_psm", 0644,
bt_debugfs, NULL, bt_debugfs, NULL,
...@@ -1224,7 +1225,7 @@ int bt_6lowpan_init(void) ...@@ -1224,7 +1225,7 @@ int bt_6lowpan_init(void)
return register_netdevice_notifier(&bt_6lowpan_dev_notifier); return register_netdevice_notifier(&bt_6lowpan_dev_notifier);
} }
void bt_6lowpan_exit(void) static void __exit bt_6lowpan_exit(void)
{ {
debugfs_remove(lowpan_psm_debugfs); debugfs_remove(lowpan_psm_debugfs);
debugfs_remove(lowpan_control_debugfs); debugfs_remove(lowpan_control_debugfs);
...@@ -1236,3 +1237,11 @@ void bt_6lowpan_exit(void) ...@@ -1236,3 +1237,11 @@ void bt_6lowpan_exit(void)
unregister_netdevice_notifier(&bt_6lowpan_dev_notifier); unregister_netdevice_notifier(&bt_6lowpan_dev_notifier);
} }
module_init(bt_6lowpan_init);
module_exit(bt_6lowpan_exit);
MODULE_AUTHOR("Jukka Rissanen <jukka.rissanen@linux.intel.com>");
MODULE_DESCRIPTION("Bluetooth 6LoWPAN");
MODULE_VERSION(VERSION);
MODULE_LICENSE("GPL");
...@@ -6,7 +6,6 @@ menuconfig BT ...@@ -6,7 +6,6 @@ menuconfig BT
tristate "Bluetooth subsystem support" tristate "Bluetooth subsystem support"
depends on NET && !S390 depends on NET && !S390
depends on RFKILL || !RFKILL depends on RFKILL || !RFKILL
select 6LOWPAN_IPHC if BT_6LOWPAN
select CRC16 select CRC16
select CRYPTO select CRYPTO
select CRYPTO_BLKCIPHER select CRYPTO_BLKCIPHER
...@@ -41,10 +40,11 @@ menuconfig BT ...@@ -41,10 +40,11 @@ menuconfig BT
more information, see <http://www.bluez.org/>. more information, see <http://www.bluez.org/>.
config BT_6LOWPAN config BT_6LOWPAN
bool "Bluetooth 6LoWPAN support" tristate "Bluetooth 6LoWPAN support"
depends on BT && IPV6 depends on BT && IPV6
select 6LOWPAN_IPHC if BT_6LOWPAN
help help
IPv6 compression over Bluetooth. IPv6 compression over Bluetooth Low Energy.
source "net/bluetooth/rfcomm/Kconfig" source "net/bluetooth/rfcomm/Kconfig"
......
...@@ -7,10 +7,12 @@ obj-$(CONFIG_BT_RFCOMM) += rfcomm/ ...@@ -7,10 +7,12 @@ obj-$(CONFIG_BT_RFCOMM) += rfcomm/
obj-$(CONFIG_BT_BNEP) += bnep/ obj-$(CONFIG_BT_BNEP) += bnep/
obj-$(CONFIG_BT_CMTP) += cmtp/ obj-$(CONFIG_BT_CMTP) += cmtp/
obj-$(CONFIG_BT_HIDP) += hidp/ obj-$(CONFIG_BT_HIDP) += hidp/
obj-$(CONFIG_BT_6LOWPAN) += bluetooth_6lowpan.o
bluetooth_6lowpan-y := 6lowpan.o
bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \ bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \
hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o sco.o lib.o \ hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o sco.o lib.o \
a2mp.o amp.o a2mp.o amp.o
bluetooth-$(CONFIG_BT_6LOWPAN) += 6lowpan.o
subdir-ccflags-y += -D__CHECK_ENDIAN__ subdir-ccflags-y += -D__CHECK_ENDIAN__
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment