[RFC] bt control interface out from debugfs

From: Maxim Uvarov
Date: Tue Sep 28 2021 - 06:47:26 EST


Hello,

I think we need to move control for BT 6lowpan connection out of
kernel debugfs to user space tools. I.e. use hcitool or iproute2 and
add proper non debug kernel interface for the tools.
I would like to hear about some suggestions on what is the best interface here.

Currently commands to setup connection are:
echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
echo "connect 80:E1:26:1B:95:81 1" > /sys/kernel/debug/bluetooth/6lowpan_control

It looks logical to enable 6lowpan inside hcitool. I.e. extend current
AF_BLUETOOTH socket protocol:
dd = socket(AF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC, BTPROTO_HCI)
getsockopt(dd, SOL_HCI, HCI_FILTER, ..
add some HCI_6LOWPAN_ENABLE call.
What are your thoughts on that?

Then we have an IP stack on top of the BT layer, and hcitool does not
intend to setup ip connection. iproute2 might be more suitable for
this case. Something like:
ip link connect dev bt0 type bt 80:E1:26:1B:95:81 type local
(type 1- local, 2- public) .

But here is the problem that "ip link connect" is missing in current
tools. And usually we just set up a local connection and connect from
the app using a socket. With IP over BT connection is different -
we should be connected before.

If we implement "ip link connect" then it will be possible to reuse it
for all other pear to pear connections like vpn wireguard.

Any thoughts on an interface here?

Links: kernel: ./net/bluetooth/6lowpan.c line 1283

Best regards,
Maxim.