1# SPDX-License-Identifier: GPL-2.0-only
2#
3# Bluetooth subsystem configuration
4#
5
6menuconfig BT
7	tristate "Bluetooth subsystem support"
8	depends on !S390
9	depends on RFKILL || !RFKILL
10	select CRC16
11	select CRYPTO
12	select CRYPTO_SKCIPHER
13	select CRYPTO_LIB_AES
14	imply CRYPTO_AES
15	select CRYPTO_CMAC
16	select CRYPTO_ECB
17	select CRYPTO_SHA256
18	select CRYPTO_ECDH
19	help
20	  Bluetooth is low-cost, low-power, short-range wireless technology.
21	  It was designed as a replacement for cables and other short-range
22	  technologies like IrDA.  Bluetooth operates in personal area range
23	  that typically extends up to 10 meters.  More information about
24	  Bluetooth can be found at <https://www.bluetooth.com/>.
25
26	  Linux Bluetooth subsystem consist of several layers:
27	     Bluetooth Core
28		HCI device and connection manager, scheduler
29		SCO audio links
30		L2CAP (Logical Link Control and Adaptation Protocol)
31		SMP (Security Manager Protocol) on LE (Low Energy) links
32		ISO isochronous links
33	     HCI Device drivers (Interface to the hardware)
34	     RFCOMM Module (RFCOMM Protocol)  
35	     BNEP Module (Bluetooth Network Encapsulation Protocol)
36	     CMTP Module (CAPI Message Transport Protocol)
37	     HIDP Module (Human Interface Device Protocol)
38
39	  Say Y here to compile Bluetooth support into the kernel or say M to
40	  compile it as module (bluetooth).
41
42	  To use Linux Bluetooth subsystem, you will need several user-space
43	  utilities like hciconfig and bluetoothd.  These utilities and updates
44	  to Bluetooth kernel modules are provided in the BlueZ packages.  For
45	  more information, see <http://www.bluez.org/>.
46
47config BT_BREDR
48	bool "Bluetooth Classic (BR/EDR) features"
49	depends on BT
50	default y
51	help
52	  Bluetooth Classic includes support for Basic Rate (BR)
53	  available with Bluetooth version 1.0b or later and support
54	  for Enhanced Data Rate (EDR) available with Bluetooth
55	  version 2.0 or later.
56
57source "net/bluetooth/rfcomm/Kconfig"
58
59source "net/bluetooth/bnep/Kconfig"
60
61source "net/bluetooth/cmtp/Kconfig"
62
63source "net/bluetooth/hidp/Kconfig"
64
65config BT_LE
66	bool "Bluetooth Low Energy (LE) features"
67	depends on BT
68	default y
69	help
70	  Bluetooth Low Energy includes support low-energy physical
71	  layer available with Bluetooth version 4.0 or later.
72
73config BT_LE_L2CAP_ECRED
74	bool "Bluetooth L2CAP Enhanced Credit Flow Control"
75	depends on BT_LE
76	default y
77	help
78	  Bluetooth Low Energy L2CAP Enhanced Credit Flow Control available with
79	  Bluetooth version 5.2 or later.
80
81	  This can be overridden by passing bluetooth.enable_ecred=[1|0]
82	  on the kernel commandline.
83
84config BT_6LOWPAN
85	tristate "Bluetooth 6LoWPAN support"
86	depends on BT_LE && 6LOWPAN
87	help
88	  IPv6 compression over Bluetooth Low Energy.
89
90config BT_LEDS
91	bool "Enable LED triggers"
92	depends on BT
93	depends on LEDS_CLASS
94	select LEDS_TRIGGERS
95	help
96	  This option selects a few LED triggers for different
97	  Bluetooth events.
98
99config BT_MSFTEXT
100	bool "Enable Microsoft extensions"
101	depends on BT
102	help
103	  This options enables support for the Microsoft defined HCI
104	  vendor extensions.
105
106config BT_AOSPEXT
107	bool "Enable Android Open Source Project extensions"
108	depends on BT
109	help
110	  This options enables support for the Android Open Source
111	  Project defined HCI vendor extensions.
112
113config BT_DEBUGFS
114	bool "Export Bluetooth internals in debugfs"
115	depends on BT && DEBUG_FS
116	default y
117	help
118	  Provide extensive information about internal Bluetooth states
119	  in debugfs.
120
121config BT_SELFTEST
122	bool "Bluetooth self testing support"
123	depends on BT && DEBUG_KERNEL
124	help
125	  Run self tests when initializing the Bluetooth subsystem.  This
126	  is a developer option and can cause significant delay when booting
127	  the system.
128
129	  When the Bluetooth subsystem is built as module, then the test
130	  cases are run first thing at module load time.  When the Bluetooth
131	  subsystem is compiled into the kernel image, then the test cases
132	  are run late in the initcall hierarchy.
133
134config BT_SELFTEST_ECDH
135	bool "ECDH test cases"
136	depends on BT_LE && BT_SELFTEST
137	help
138	  Run test cases for ECDH cryptographic functionality used by the
139	  Bluetooth Low Energy Secure Connections feature.
140
141config BT_SELFTEST_SMP
142	bool "SMP test cases"
143	depends on BT_LE && BT_SELFTEST
144	help
145	  Run test cases for SMP cryptographic functionality, including both
146	  legacy SMP as well as the Secure Connections features.
147
148config BT_FEATURE_DEBUG
149	bool "Enable runtime option for debugging statements"
150	depends on BT && !DYNAMIC_DEBUG
151	help
152	  This provides an option to enable/disable debugging statements
153	  at runtime via the experimental features interface.
154
155source "drivers/bluetooth/Kconfig"
156