Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64274518 authored by Gustavo Padovan's avatar Gustavo Padovan
Browse files

Bluetooth: Merge L2CAP and SCO modules into bluetooth.ko



Actually doesn't make sense have these modules built separately.
The L2CAP layer is needed by almost all Bluetooth protocols and profiles.
There isn't any real use case without having L2CAP loaded.
SCO is only essential for Audio transfers, but it is so small that we can
have it loaded always in bluetooth.ko without problems.
If you really doesn't want it you can disable SCO in the kernel config.

Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent c4c896e1
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -205,4 +205,32 @@ extern void bt_sysfs_cleanup(void);

extern struct dentry *bt_debugfs;

#ifdef CONFIG_BT_L2CAP
int l2cap_init(void);
void l2cap_exit(void);
#else
static inline int l2cap_init(void)
{
	return 0;
}

static inline void l2cap_exit(void)
{
}
#endif

#ifdef CONFIG_BT_SCO
int sco_init(void);
void sco_exit(void);
#else
static inline int sco_init(void)
{
	return 0;
}

static inline void sco_exit(void)
{
}
#endif

#endif /* __BLUETOOTH_H */
+2 −8
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ menuconfig BT
	  more information, see <http://www.bluez.org/>.

config BT_L2CAP
	tristate "L2CAP protocol support"
	bool "L2CAP protocol support"
	depends on BT
	select CRC16
	help
@@ -40,19 +40,13 @@ config BT_L2CAP
	  connection oriented and connection-less data transport.  L2CAP
	  support is required for most Bluetooth applications.

	  Say Y here to compile L2CAP support into the kernel or say M to
	  compile it as module (l2cap).

config BT_SCO
	tristate "SCO links support"
	bool "SCO links support"
	depends on BT
	help
	  SCO link provides voice transport over Bluetooth.  SCO support is
	  required for voice applications like Headset and Audio.

	  Say Y here to compile SCO support into the kernel or say M to
	  compile it as module (sco).

source "net/bluetooth/rfcomm/Kconfig"

source "net/bluetooth/bnep/Kconfig"
+2 −3
Original line number Diff line number Diff line
@@ -3,12 +3,11 @@
#

obj-$(CONFIG_BT)	+= bluetooth.o
obj-$(CONFIG_BT_L2CAP)	+= l2cap.o
obj-$(CONFIG_BT_SCO)	+= sco.o
obj-$(CONFIG_BT_RFCOMM)	+= rfcomm/
obj-$(CONFIG_BT_BNEP)	+= bnep/
obj-$(CONFIG_BT_CMTP)	+= cmtp/
obj-$(CONFIG_BT_HIDP)	+= hidp/

bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o hci_sock.o hci_sysfs.o lib.o
l2cap-y := l2cap_core.o l2cap_sock.o
bluetooth-$(CONFIG_BT_L2CAP)	+= l2cap_core.o l2cap_sock.o
bluetooth-$(CONFIG_BT_SCO)	+= sco.o
+30 −2
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@

#include <net/bluetooth/bluetooth.h>

#define VERSION "2.15"
#define VERSION "2.16"

/* Bluetooth sockets */
#define BT_MAX_PROTO	8
@@ -545,13 +545,41 @@ static int __init bt_init(void)

	BT_INFO("HCI device and connection manager initialized");

	hci_sock_init();
	err = hci_sock_init();
	if (err < 0)
		goto error;

	err = l2cap_init();
	if (err < 0) {
		hci_sock_cleanup();
		goto sock_err;
	}

	err = sco_init();
	if (err < 0) {
		l2cap_exit();
		goto sock_err;
	}

	return 0;

sock_err:
	hci_sock_cleanup();

error:
	sock_unregister(PF_BLUETOOTH);
	bt_sysfs_cleanup();

	return err;
}

static void __exit bt_exit(void)
{

	sco_exit();

	l2cap_exit();

	hci_sock_cleanup();

	sock_unregister(PF_BLUETOOTH);
+2 −14
Original line number Diff line number Diff line
@@ -55,8 +55,6 @@
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/l2cap.h>

#define VERSION "2.15"

int disable_ertm;

static u32 l2cap_feat_mask = L2CAP_FEAT_FIXED_CHAN;
@@ -3806,7 +3804,7 @@ static struct hci_proto l2cap_hci_proto = {
	.recv_acldata	= l2cap_recv_acldata
};

static int __init l2cap_init(void)
int __init l2cap_init(void)
{
	int err;

@@ -3834,7 +3832,6 @@ static int __init l2cap_init(void)
			BT_ERR("Failed to create L2CAP debug file");
	}

	BT_INFO("L2CAP ver %s", VERSION);
	BT_INFO("L2CAP socket layer initialized");

	return 0;
@@ -3845,7 +3842,7 @@ static int __init l2cap_init(void)
	return err;
}

static void __exit l2cap_exit(void)
void l2cap_exit(void)
{
	debugfs_remove(l2cap_debugfs);

@@ -3866,14 +3863,5 @@ void l2cap_load(void)
}
EXPORT_SYMBOL(l2cap_load);

module_init(l2cap_init);
module_exit(l2cap_exit);

module_param(disable_ertm, bool, 0644);
MODULE_PARM_DESC(disable_ertm, "Disable enhanced retransmission mode");

MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
MODULE_DESCRIPTION("Bluetooth L2CAP ver " VERSION);
MODULE_VERSION(VERSION);
MODULE_LICENSE("GPL");
MODULE_ALIAS("bt-proto-0");
Loading