1# Zephyr Bluetooth Controller configuration options
2
3# Copyright (c) 2016-2017 Nordic Semiconductor ASA
4# SPDX-License-Identifier: Apache-2.0
5
6if BT_LL_SW_SPLIT
7
8config BT_LLL_VENDOR_NORDIC
9	bool "Use Nordic LLL"
10	depends on SOC_COMPATIBLE_NRF
11	depends on !$(dt_nodelabel_enabled,timer0)
12	depends on !$(dt_nodelabel_enabled,rtc0)
13
14	select ENTROPY_NRF5_RNG if BT_CTLR_CRYPTO
15	select ENTROPY_NRF5_BIAS_CORRECTION if ENTROPY_NRF5_RNG
16
17	select BT_HAS_HCI_VS
18	select BT_CTLR_CRYPTO_SUPPORT if !SOC_COMPATIBLE_NRF54LX
19	select BT_CTLR_LE_ENC_SUPPORT if BT_CTLR_CRYPTO_SUPPORT && \
20					 !BT_CTLR_DATA_LENGTH_CLEAR && \
21					 !BT_CTLR_PHY_2M_NRF
22	select BT_CTLR_PRIVACY_SUPPORT if BT_CTLR_CRYPTO_SUPPORT && \
23					  !SOC_SERIES_NRF51X
24	select BT_CTLR_CONN_PARAM_REQ_SUPPORT
25	select BT_CTLR_EXT_REJ_IND_SUPPORT
26	select BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT
27	select BT_CTLR_DATA_LEN_UPDATE_SUPPORT if !BT_CTLR_LE_ENC_SUPPORT || \
28						  HAS_HW_NRF_CCM_LFLEN_8BIT || \
29						  BT_CTLR_DATA_LENGTH_CLEAR
30	select BT_CTLR_EXT_SCAN_FP_SUPPORT
31	select BT_CTLR_PHY_2M_SUPPORT if HAS_HW_NRF_RADIO_BLE_2M || \
32					 BT_CTLR_PHY_2M_NRF
33	select BT_CTLR_PHY_CODED_SUPPORT if HAS_HW_NRF_RADIO_BLE_CODED
34	select BT_CTLR_PHY_UPDATE_SUPPORT if BT_CTLR_PHY_2M_SUPPORT || \
35					     BT_CTLR_PHY_CODED_SUPPORT
36	select BT_CTLR_ADV_EXT_SUPPORT
37	select BT_CTLR_ADV_PERIODIC_SUPPORT
38	select BT_CTLR_SYNC_PERIODIC_SUPPORT
39	select BT_CTLR_ADV_ISO_SUPPORT
40	select BT_CTLR_SYNC_ISO_SUPPORT
41	select BT_CTLR_CENTRAL_ISO_SUPPORT
42	select BT_CTLR_PERIPHERAL_ISO_SUPPORT
43	select BT_CTLR_DF_SUPPORT if HAS_HW_NRF_RADIO_DFE
44	select BT_CTLR_CTEINLINE_SUPPORT if HAS_HW_NRF_RADIO_DFE
45	select BT_CTLR_CHAN_SEL_2_SUPPORT
46	select BT_CTLR_MIN_USED_CHAN_SUPPORT
47	select BT_CTLR_SCA_UPDATE_SUPPORT
48	select BT_CTLR_DTM_HCI_SUPPORT
49	select BT_CTLR_CONN_RSSI_SUPPORT
50
51	select BT_CTLR_XTAL_ADVANCED_SUPPORT
52	select BT_CTLR_SCHED_ADVANCED_SUPPORT
53	select BT_CTLR_TIFS_HW_SUPPORT
54	select BT_CTLR_ULL_LLL_PRIO_SUPPORT
55
56	select BT_TICKER_UPDATE if BT_BROADCASTER || BT_CONN || \
57				   (BT_OBSERVER && BT_CTLR_ADV_EXT)
58	select BT_TICKER_REMAINDER if BT_CTLR_CENTRAL_ISO
59	select BT_TICKER_REMAINDER_GET if BT_BROADCASTER && BT_CTLR_ADV_EXT
60	select BT_TICKER_LAZY_GET if BT_CTLR_ADV_PERIODIC || BT_CTLR_CENTRAL_ISO
61
62	select BT_TICKER_PREFER_START_BEFORE_STOP if BT_TICKER_SLOT_AGNOSTIC
63
64	default y
65	help
66	  Use Nordic Lower Link Layer implementation.
67
68config BT_LLL_VENDOR_OPENISA
69	bool "Use OpenISA LLL"
70	depends on SOC_OPENISA_RV32M1
71	select BT_HAS_HCI_VS
72	select BT_CTLR_CRYPTO_SUPPORT
73	select BT_CTLR_LE_ENC_SUPPORT if BT_CTLR_CRYPTO_SUPPORT && \
74					 !BT_CTLR_DATA_LENGTH_CLEAR
75	select BT_CTLR_PRIVACY_SUPPORT if BT_CTLR_CRYPTO_SUPPORT
76	select BT_CTLR_PHY_UPDATE_SUPPORT
77	select BT_CTLR_EXT_REJ_IND_SUPPORT
78
79	select BT_TICKER_UPDATE if BT_BROADCASTER || BT_CONN
80
81	default y
82	help
83	  Use OpenISA Lower Link Layer implementation.
84
85# BT_CTLR_DF_SUPPORT is a wrapper for all DF features. Here we select features that are supported by
86# Zephyr's BLE Controller.
87config BT_CTLR_DF_SUPPORT
88	depends on BT_LL_SW_SPLIT && !BT_CTLR_TIFS_HW
89	select BT_CTLR_DF_CTE_TX_SUPPORT
90	select BT_CTLR_DF_ANT_SWITCH_2US_SUPPORT
91	select BT_CTLR_DF_ANT_SWITCH_1US_SUPPORT
92	select BT_CTLR_DF_CTE_RX_SUPPORT
93	select BT_CTLR_DF_CTE_RX_SAMPLE_1US_SUPPORT
94
95config BT_CTLR_XTAL_ADVANCED_SUPPORT
96	bool
97
98config BT_CTLR_SCHED_ADVANCED_SUPPORT
99	bool
100
101config BT_CTLR_TIFS_HW_SUPPORT
102	bool
103
104config BT_CTLR_ULL_LLL_PRIO_SUPPORT
105	bool
106
107config BT_CTLR_RX_PRIO_STACK_SIZE
108	# Hidden, Controller's Co-Operative high priority Rx thread stack size.
109	int
110	default 448
111
112config BT_CTLR_RX_STACK_SIZE
113	# Hidden, Controller's Co-Operative Rx thread stack size.
114	int
115	default 768
116
117config BT_CTLR_SETTINGS
118	bool "Settings System"
119	depends on SETTINGS
120	help
121	  Enable use of settings system in controller.
122
123config BT_CTLR_VERSION_SETTINGS
124	bool "Version Settings"
125	depends on BT_CTLR_SETTINGS
126	help
127	  Make the controller's Company Id and Subversion Number configurable
128	  through settings system.
129
130config BT_CTLR_COMPANY_ID
131	hex "Controller Company Id"
132	default BT_COMPANY_ID
133	range 0x0000 0xFFFF
134	help
135	  Set the Bluetooth Company Identifier that will be used in
136	  the VERSION_IND PDU. Uses BT_COMPANY_ID by default, although
137	  silicon vendors and hardware manufacturers can set their own
138	  Company Identifier for the controller. The full list of Bluetooth
139	  Company Identifiers can be found here:
140	  https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
141
142config BT_CTLR_SUBVERSION_NUMBER
143	hex "Subversion Number"
144	default 0xFFFF
145	range 0x0000 0xFFFF
146	help
147	  Set the Subversion Number that will be used in VERSION_IND PDU.
148
149config BT_CTLR_AD_DATA_BACKUP
150	bool "Legacy AD Data backup"
151	depends on BT_PERIPHERAL || BT_CTLR_ADV_EXT
152	default y
153	help
154	  Backup Legacy Advertising Data when switching to Legacy Directed or
155	  to Extended Advertising mode, and restore it when switching back to
156	  Legacy Non-Directed Advertising mode.
157	  Application can disable this feature if not using Directed
158	  Advertising or switch between Legacy and Extended Advertising.
159
160config BT_CTLR_HCI_ADV_HANDLE_MAPPING
161	bool "Advertising set handle mapping between HCI and LL"
162	depends on BT_CTLR_ADV_EXT
163	default y if BT_HCI_RAW
164	help
165	  Enable mapping of advertising set handles between HCI and LL when
166	  using external host since it can use arbitrary numbers as set handles
167	  (as defined by Core specification) as opposed to LL which always uses
168	  zero-based numbering. When using with Zephyr host this option can be
169	  disabled to remove extra mapping logic.
170
171config BT_CTLR_MESH_SCAN_FILTERS
172	int "Number of Mesh scan filters"
173	depends on BT_HCI_MESH_EXT
174	default 1
175	range 1 15
176	help
177	  Set the number of unique Mesh Scan Filters available as part of
178	  the Intel Mesh Vendor Specific Extensions.
179
180config BT_CTLR_MESH_SF_PATTERNS
181	int "Number of Mesh scan filter patterns"
182	depends on BT_HCI_MESH_EXT
183	default 15
184	range 1 15
185	help
186	  Set the number of unique Mesh Scan Filter patterns available per
187	  Scan Filter as part of the Intel Mesh Vendor Specific Extensions.
188
189config BT_CTLR_CHECK_SAME_PEER_CONN
190	bool
191	depends on BT_CONN
192	default BT_MAX_CONN > 1 && !BT_CTLR_ALLOW_SAME_PEER_CONN
193
194if BT_CTLR_ADV_EXT
195
196config BT_CTLR_ADV_EXT_RX_PDU_LEN_MAX
197	int "Maximum Advertising Extensions Receive PDU Length"
198	depends on BT_OBSERVER
199	range $(UINT8_MAX) $(UINT8_MAX) if BT_HCI_RAW
200	range 31 $(UINT8_MAX)
201	default $(UINT8_MAX)
202	help
203	  Maximum Advertising Extensions Receive PDU Length.
204
205config BT_CTLR_SCAN_DATA_LEN_MAX
206	int "Maximum Extended Scanning Data Length"
207	depends on BT_OBSERVER
208	range 31 1650
209	help
210	  Maximum Extended Scanning Data Length.
211
212config BT_CTLR_CHECK_SAME_PEER_SYNC
213	# Hidden Kconfig to add same peer synchronization check
214	bool
215	depends on BT_CTLR_SYNC_PERIODIC
216	default BT_PER_ADV_SYNC_MAX > 1
217
218endif # BT_CTLR_ADV_EXT
219
220config BT_CTLR_ISOAL_LOG_DBG_VERBOSE
221	bool "ISO-AL verbose debug logging"
222	depends on BT_CTLR_ISOAL_LOG_LEVEL = 4
223	default n
224	help
225	  Use this option to enable ISO-AL verbose debug logging.
226
227config BT_CTLR_ISO_TX_SEG_PLAYLOAD_MIN
228	int "Minimum number of playload data bytes in a new segment"
229	depends on BT_CTLR_ADV_ISO || BT_CTLR_CONN_ISO
230	default 1
231	range 1 64
232	help
233	  Minimum number of payload bytes that would make inserting a new
234	  segment into a PDU worthwhile.
235
236config BT_CTLR_CONN_ISO_HCI_DATAPATH_SKIP_INVALID_DATA
237	bool "Do not pass invalid SDUs on HCI datapath"
238	depends on BT_CTLR_CONN_ISO
239	help
240	  This allows for applications to decide whether to
241	  forward invalid SDUs through HCI upwards.
242
243config BT_CTLR_CONN_ISO_AVOID_SEGMENTATION
244	bool "Avoid SDU fragmentation for framed mode"
245	depends on BT_CTLR_CENTRAL_ISO
246	help
247	  When creating a CIG, the Max_PDU size is calculated according to BT
248	  Core 5.4 Vol 6, Part G, Section 2.2. However, HAP specifies a need for
249	  avoiding segmentation by forcing the Max_PDU to the appropriate value.
250	  Since there is no way to control the Max_PDU using the non-test
251	  interface, the config provides a way to force the Max_PDU to Max_SDU +
252	  5 (header + offset).
253
254choice
255	prompt "CIS Creation Policy Selection"
256	default BT_CTLR_CONN_ISO_RELIABILITY_POLICY
257
258config BT_CTLR_CONN_ISO_RELIABILITY_POLICY
259	bool "CIS creation policy for reliability"
260	depends on BT_CTLR_CENTRAL_ISO
261	help
262	  Select this option to use reliability policy for CIS creation. This
263	  favors a CIS layout/configuration which utilizes the full range of the
264	  Max_Transmission_Latency for maximum retransmission and payload
265	  recovery.
266
267config BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY
268	bool "CIS creation policy for low latency"
269	depends on BT_CTLR_CENTRAL_ISO
270	help
271	  Select this option to use low latency policy for CIS creation. This
272	  favors a CIS layout/configuration which compacts payload transmission
273	  for lowest possible latency.
274endchoice
275
276config BT_CTLR_TEST
277	bool "Run in-system unit tests"
278	help
279	  Run in-system unit tests
280
281config BT_CTLR_ADVANCED_FEATURES
282	bool "Show advanced features"
283	help
284	  Makes advanced features visible to controller developers.
285
286menu "Advanced features"
287	visible if BT_CTLR_ADVANCED_FEATURES
288
289config BT_CTLR_SW_DEFERRED_PRIVACY
290	bool "LE Controller-based Software Privacy"
291	depends on BT_CTLR_PRIVACY
292	help
293	  Enable support for software based deferred privacy calculations.
294
295config BT_CTLR_RPA_CACHE_SIZE
296	int "LE Controller-based Software Privacy Resolving List size"
297	depends on BT_CTLR_SW_DEFERRED_PRIVACY
298	default 8
299	range 1 64
300	help
301	  Set the size of the Known Unknown Resolving List for LE
302	  Controller-based Software deferred Privacy.
303
304config BT_CTLR_TRPA_CACHE_SIZE
305	int "LE Controller-based Software Privacy target RPA cache size"
306	depends on BT_CTLR_SW_DEFERRED_PRIVACY
307	default 4
308	range 1 64
309	help
310	  Set the size of the Known Unknown Target RPA Resolving List for LE
311	  Controller-based Software deferred Privacy.
312
313config BT_CTLR_DATA_LENGTH_CLEAR
314	bool "Data Length Support (Cleartext only)"
315	depends on SOC_SERIES_NRF51X
316	help
317	  Enable support for Bluetooth v4.2 LE Data Length Update procedure, up to
318	  251 byte cleartext payloads in the Controller. Encrypted connections
319	  are not supported.
320
321
322config BT_CTLR_PHY_2M_NRF
323	bool "2Mbps Nordic Semiconductor PHY Support (Cleartext only)"
324	depends on SOC_SERIES_NRF51X
325	select BT_CTLR_PHY_2M
326	help
327	  Enable support for Nordic Semiconductor proprietary 2Mbps PHY in the
328	  Controller. Encrypted connections are not supported.
329
330config BT_CTLR_ADV_AUX_SET
331	int "LE Extended Advertising Auxiliary Sets"
332	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
333	range 0 BT_CTLR_ADV_SET
334	default BT_CTLR_ADV_SET
335	help
336	  Maximum supported advertising auxiliary channel sets.
337
338config BT_CTLR_ADV_SYNC_SET
339	int "LE Periodic Advertising Sets"
340	depends on BT_CTLR_ADV_PERIODIC
341	range 1 BT_CTLR_ADV_AUX_SET
342	default 1
343	help
344	  Maximum supported periodic advertising sets.
345
346config BT_CTLR_ADV_DATA_CHAIN
347	bool "Advertising Data chaining [EXPERIMENTAL]"
348	select EXPERIMENTAL
349	help
350	  Enable support for Advertising Data chaining in Extended
351	  (non-connectable) and Periodic Advertising. This will allow to have
352	  Advertising Data Length up to 1650 bytes.
353
354	  This is experimental and work in progress, does not implement
355	  recombining the AD Data and could return BT_HCI_ERR_PACKET_TOO_LONG
356	  when a chain PDU needs its AD data overflow into a new chain PDU.
357	  I.e. AD data in the last PDU could overflow due to the need to add
358	  Aux Pointer field, and if this overflow bytes plus the next AD data
359	  fragment length could be over 255 bytes needing additional chain PDU.
360	  This is not implemented.
361
362config BT_CTLR_ADV_PDU_LINK
363	# Enables extra space in each advertising PDU to allow linking PDUs.
364	# This is required to enable advertising data trains (i.e. transmission
365	# of AUX_CHAIN_IND).
366	bool
367
368config BT_CTLR_ADV_AUX_PDU_LINK
369	# Enable chaining in Extended Advertising
370	bool
371	select BT_CTLR_ADV_PDU_LINK
372
373config BT_CTLR_ADV_AUX_PDU_BACK2BACK
374	bool "Back-to-back transmission of extended advertising trains"
375	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
376	select BT_CTLR_ADV_AUX_PDU_LINK
377	default y if BT_CTLR_ADV_DATA_LEN_MAX > 191
378	help
379	  Enables transmission of AUX_CHAIN_IND in extended advertising train by
380	  sending each AUX_CHAIN_IND one after another back-to-back.
381
382config BT_CTLR_ADV_AUX_PDU_BACK2BACK_AFS
383	int "AUX Frame Space for back-to-back transmission of extended advertising trains"
384	depends on BT_CTLR_ADV_AUX_PDU_BACK2BACK
385	range 300 1000
386	default 300
387	help
388	  Specific AUX Frame Space to be used for back-to-back transmission of
389	  extended advertising trains. Time specified in microseconds.
390
391config BT_CTLR_ADV_SYNC_PDU_LINK
392	bool
393	depends on BT_CTLR_ADV_PERIODIC
394	select BT_CTLR_ADV_PDU_LINK
395
396config BT_CTLR_ADV_SYNC_PDU_BACK2BACK
397	bool "Back-to-back transmission of periodic advertising trains"
398	depends on BT_CTLR_ADV_PERIODIC
399	select BT_CTLR_ADV_SYNC_PDU_LINK
400	help
401	  Enables transmission of AUX_CHAIN_IND in periodic advertising train by
402	  sending each AUX_CHAIN_IND one after another back-to-back.
403	  Note, consecutive AUX_CHAIN_IND packets are not scheduled but sent at
404	  a constant offset on a best effort basis. This means advertising train can
405	  be preempted by other event at any time.
406
407config BT_CTLR_ADV_SYNC_PDU_BACK2BACK_AFS
408	int "AUX Frame Space for back-to-back transmission of periodic advertising trains"
409	depends on BT_CTLR_ADV_SYNC_PDU_BACK2BACK
410	range 300 1000
411	default 300
412	help
413	  Specific AUX Frame Space to be used for back-to-back transmission of
414	  periodic advertising trains. Time specified in microseconds.
415
416config BT_CTLR_ADV_RESERVE_MAX
417	bool "Use maximum Advertising PDU size time reservation"
418	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
419	default y
420	help
421	  Use the maximum advertising PDU size time reservation considering the
422	  Advertising Data could be updated from zero to maximum support size.
423	  If maximum time reservation is disabled then time reservation
424	  corresponding to the Advertising Data present at the time of the
425	  start/enable of Advertising is used.
426
427config BT_CTLR_ADV_ISO_RESERVE_MAX
428	bool "Use maximum Broadcast ISO event time reservation"
429	depends on BT_CTLR_ADV_ISO
430	default y
431	help
432	  Use maximum Broadcast ISO event time reservation. If disabled, then
433	  time reservation does not include the pre-transmissions of the last
434	  BIS and any Control subevents. This will allow extended or periodic
435	  advertising events to preempt the BIG events but allow higher radio
436	  utilizations by allowing larger BIG events when not overlapping with
437	  extended or periodic advertising.
438
439config BT_CTLR_ADV_AUX_SYNC_OFFSET
440	int "Pre-defined offset between AUX_ADV_IND and AUX_SYNC_IND"
441	depends on BT_CTLR_ADV_PERIODIC
442	range 0 4000000
443	default 0
444	help
445	  Define an offset between AUX_ADV_IND and AUX_SYNC_IND when using
446	  Advertising Interval for the Extended Advertising and Periodic
447	  Advertising that are same or multiple of each other, respectively.
448	  Note, to get advertising intervals that are same or multiple,
449	  the Periodic Advertising Interval shall be 10 millisecond more than
450	  the Extended Advertising Interval; this is because the AUX_ADV_IND
451	  PDUs are scheduled as periodic events of Extended Advertising
452	  Interval plus 10 milliseconds (Advertising Random Delay) as the
453	  periodic interval.
454	  The offset is in microseconds, limited to an experimental maximum
455	  value of 4 seconds.
456
457config BT_CTLR_ADV_DATA_BUF_MAX
458	int "Advertising Data Maximum Buffers"
459	depends on BT_BROADCASTER
460	range 1 64 if BT_CTLR_ADV_EXT
461	range 1 1 if !BT_CTLR_ADV_EXT
462	default 2 if BT_CTLR_ADV_PERIODIC
463	default 1
464	help
465	  Maximum number of buffered Advertising Data payload across enabled
466	  advertising sets.
467
468config BT_CTLR_ADV_EXT_PDU_EXTRA_DATA_MEMORY
469	bool
470	depends on BT_CTLR_ADV_EXT
471	help
472	  Add additional memory to advertising PDU storage. The memory is a
473	  general purpose storage for data that should be send from ULL to LLL.
474	  The data stored in the memory are in synchronization with content
475	  of PDU memory.
476
477	  For example, the extra data memory is used for storage for parameters
478	  to configure Radio peripheral to transmit CTE. The configuration data
479	  must be synchronized with CTEInfo field in extended advertising header
480	  that is part of PDU data.
481
482config BT_CTRL_ADV_ADI_IN_SCAN_RSP
483	bool "Include ADI in AUX_SCAN_RSP PDU"
484	depends on BT_BROADCASTER && BT_CTLR_ADV_EXT
485	help
486	  Enable ADI field in AUX_SCAN_RSP PDU
487
488config BT_CTLR_SCAN_AUX_SET
489	int "LE Extended Scanning Auxiliary Sets"
490	depends on BT_OBSERVER && BT_CTLR_ADV_EXT
491	range 1 64
492	default 1
493	help
494	  Maximum supported auxiliary channel scan sets.
495
496config BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN
497	bool "Use minimal Scan Auxiliary and Periodic Sync PDU time reservation"
498	depends on (BT_OBSERVER && BT_CTLR_ADV_EXT) || BT_CTLR_SYNC_PERIODIC
499	default y
500	help
501	  Use minimal time reservation for Auxiliary and Periodic Sync PDU
502	  reception. A peer device could scheduling multiple advertising sets
503	  in a short duration with small PDUs hence using the minimal time
504	  reservation would avoid skipping closely scheduled reception of
505	  multiple Auxiliary or Periodic Sync PDUs.
506
507config BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX
508	bool "Skip Periodic Sync event on overlap with Extended Scan Event"
509	depends on BT_CTLR_SYNC_PERIODIC
510	help
511	  When AUX_ADV_IND or AUX_CHAIN_IND auxiliary channel PDU scan radio
512	  event overlaps Periodic Sync radio event in unreserved time space,
513	  let the Periodic Sync radio event be aborted so that the auxiliary
514	  channel PDU can be received to generate Extended Advertising Reports.
515
516	  By default we want Periodic Advertising Sync Events to take priority
517	  over any overlapping Extended Advertising Primary and Auxiliary
518	  channel PDU reception in order to not skip Periodic Advertising Report
519	  generation.
520
521	  But under simultaneous multiple Periodic Advertising Sync support with
522	  small Periodic Advertising Intervals where there will be a lot of
523	  overlapping Periodic Advertising Sync events, it is desirable to
524	  permit Extended Advertising auxiliary PDU reception be allowed in a
525	  round robin scheduling to skip the overlapping Periodic Advertising
526	  Sync event. This permits new Periodic Advertising peers be discovered.
527
528config BT_CTLR_SYNC_ISO_RESERVE_MAX
529	bool "Use maximum ISO Synchronized Receiver event time reservation"
530	depends on BT_CTLR_SYNC_ISO
531	default y
532	help
533	  Use maximum ISO Synchronized Receiver event time reservation. If
534	  disabled, then time reservation does not include the pre-transmissions
535	  and any Control subevents.
536
537config BT_CTLR_ADV_ENABLE_STRICT
538	bool "Enforce Strict Advertising Enable/Disable"
539	depends on BT_BROADCASTER
540	help
541	  Enforce returning HCI Error Command Disallowed on enabling/disabling
542	  already enabled/disabled advertising.
543
544config BT_CTLR_SCAN_ENABLE_STRICT
545	bool "Enforce Strict Scan Enable/Disable"
546	depends on BT_OBSERVER
547	help
548	  Enforce returning HCI Error Command Disallowed on enabling/disabling
549	  already enabled/disabled scanning.
550
551config BT_CTLR_CIS_ACCEPT_MIN_OFFSET_STRICT
552	bool "Enforce Strict CIS Minimum Offset Check"
553	depends on BT_CTLR_PERIPHERAL_ISO
554	help
555	  Enforce strict check of CIS minimum offset accepted by the peripheral
556	  considering that there will be no overlap of ACL connection with the
557	  CIG events. Radio and CPU overheads for an ACL connection event is
558	  considered and checks the CIS minimum offset is greater than the time
559	  reservation for the ACL connection.
560
561config BT_CTLR_ISOAL_SN_STRICT
562	bool "Enforce Strict Tx ISO Data Sequence Number use"
563	depends on !BT_CTLR_ISOAL_PSN_IGNORE && (BT_CTLR_ADV_ISO || \
564						 BT_CTLR_CONN_ISO)
565	default y
566	help
567	  Enforce strict sequencing of released payloads based on the TX SDU's
568	  packet sequence number. This will be effective when fragmenting an
569	  SDU into unframed PDUs.
570
571	  When enabled, this could result in an SDU being fragmented into
572	  payload numbers that are expired (will be dropped), if the TX SDU
573	  packet sequence numbers do not increment according to the SDU interval
574	  and delivery of SDUs to the ISO-AL do not strictly follow the SDU
575	  interval.
576
577	  When disabled, TX SDUs could be shifted from their stream aligned
578	  position and fragmented into payloads that are less likely to be
579	  dropped. This will result in better delivery of data to the receiver
580	  but at the cost of creating skews in the received stream of SDUs.
581
582config BT_CTLR_ISOAL_PSN_IGNORE
583	bool "Ignore Tx ISO Data Packet Sequence Number use"
584	depends on BT_CTLR_ADV_ISO || BT_CTLR_CONN_ISO
585	help
586	  Ignore the use of Tx ISO Data Packet Sequence Number.
587
588config BT_CTLR_ZLI
589	bool "Use Zero Latency IRQs"
590	depends on ZERO_LATENCY_IRQS
591	default y
592	help
593	  Enable support for use of Zero Latency IRQ feature. Note, applications
594	  shall not use Zero Latency IRQ themselves when this option is selected,
595	  else will impact controller stability.
596
597config BT_CTLR_DYNAMIC_INTERRUPTS
598	bool "Use Dynamic Interrupts allocation only"
599	depends on DYNAMIC_INTERRUPTS
600	help
601	  Allocate all Controller required interrupts dynamically. This makes
602	  sure that interrupts are properly connected when the Controller is
603	  initialized and not only during the system startup. Thanks to that
604	  application is able to enable Controller and its ISR at runtime, and
605	  permit use of SoC's peripheral for custom use when Bluetooth is not
606	  enabled.
607
608choice
609	prompt "Optimization options"
610	depends on !LTO
611	default BT_CTLR_OPTIMIZE_FOR_SPEED
612
613config BT_CTLR_OPTIMIZE_FOR_APP_DEFAULT
614	bool "Optimize for application defaults"
615	help
616	  Optimize compilation of Controller for application's default.
617
618config BT_CTLR_OPTIMIZE_FOR_SIZE
619	bool "Optimize for space"
620	help
621	  Optimize compilation of Controller for code size.
622
623	  This is the Zephyr project default, but is overridden to use optimize
624	  for speed when compiling the Controller to reduce application's ISR
625	  and thread latencies.
626
627config BT_CTLR_OPTIMIZE_FOR_SPEED
628	bool "Optimize for Speed"
629	help
630	  Optimize compilation of Controller for execution speed. As the
631	  Controller's Upper Link Layer and Lower Link Layer execute in ISRs,
632	  use of speed optimizations reduces application's ISR and thread
633	  latencies.
634
635endchoice
636
637config BT_CTLR_XTAL_ADVANCED
638	bool "Advanced event preparation"
639	depends on BT_CTLR_XTAL_ADVANCED_SUPPORT
640	default y
641	help
642	  Enables advanced event preparation offset ahead of radio tx/rx, taking
643	  into account predictive processing time requirements in preparation to
644	  the event, like control procedure handling and CPU execution speeds.
645	  Crystal oscillator is retained between closely spaced consecutive
646	  radio events to reduce the overall number of crystal settling current
647	  consumptions.
648
649	  This feature maximizes radio utilization in an average role event
650	  timeslice when they are closely spaced by using a reduced offset
651	  between preparation and radio event.
652
653	  By disabling this feature, the controller will use a constant offset
654	  between the preparation and radio event. The controller will toggle
655	  crystal oscillator between two closely spaced radio events leading to
656	  higher average current due to increased number of crystal settling
657	  current consumptions.
658
659config BT_CTLR_XTAL_THRESHOLD
660	int "Crystal shutdown threshold in uS"
661	depends on BT_CTLR_XTAL_ADVANCED
662	default 1500
663	help
664	  Configure the optimal delta in micro seconds between two consecutive
665	  radio events, event done to next preparation, below which (active
666	  clock) crystal will be retained. This value is board dependent.
667
668config BT_CTLR_SCHED_ADVANCED
669	bool "Advanced scheduling"
670	depends on BT_CTLR_SCHED_ADVANCED_SUPPORT && \
671		   (BT_CONN || \
672		    (BT_CTLR_ADV_EXT && (BT_CTLR_ADV_AUX_SET > 0)) || \
673		    BT_CTLR_ADV_ISO)
674	select BT_TICKER_NEXT_SLOT_GET
675	default y if BT_CENTRAL || (BT_BROADCASTER && BT_CTLR_ADV_EXT) || BT_CTLR_ADV_ISO
676	help
677	  Enable non-overlapping placement of observer, initiator and central
678	  roles in timespace. Uses window offset in connection updates and uses
679	  connection parameter request in peripheral role to negotiate
680	  non-overlapping placement with active central roles to avoid peripheral
681	  roles drifting into active central roles in the local controller.
682
683	  This feature maximizes the average data transmission amongst active
684	  concurrent central and peripheral connections while other observer,
685	  initiator, central or peripheral roles are active in the local controller.
686
687	  Disabling this feature will lead to overlapping role in timespace
688	  leading to skipped events amongst active roles.
689
690config BT_CTLR_ASSERT_OVERHEAD_START
691	bool "Assert on Prepare Latency"
692	default y
693	help
694	  Assert on increased Radio Event Prepare callback latencies due to
695	  CPU usage overheads in the Controller implementation.
696
697	  Disabling this option permits the Controller to gracefully skip radio
698	  events that are delayed due to CPU usage latencies; as long as the
699	  radio event skips are not for every consecutive radio event interval,
700	  otherwise leading to remote supervision timeout and possible missing
701	  local disconnect events.
702
703config BT_CTLR_ASSERT_VENDOR
704	bool "Vendor Defined Assertion Information Handler"
705	help
706	  This option enables a vendor specific sink for the controller assertion
707	  mechanism, where parameter information is provided. This must be defined in
708	  vendor debug HAL interface as \"BT_ASSERT_VND(cond, param1, param2)\", and
709	  will be invoked whenever the controller code encounters an unrecoverable error
710	  with parameter information. Implementation shall include the equivalent of
711	  BT_ASSERT_DIE for halting the kernel.
712
713config BT_CTLR_CENTRAL_SPACING
714	int "Central Connection Spacing"
715	depends on BT_CTLR_SCHED_ADVANCED
716	default 0
717	range 0 $(UINT16_MAX)
718	help
719	  The preferred connection spacing between multiple simultaneous central
720	  roles in microseconds. The Controller will calculate the required time
721	  reservation using the data length and PHY currently in use. The
722	  greater of the preferred spacing and the calculated time reservation
723	  will be used.
724	  The precision is determined by the resolution of the platform
725	  dependent ticker clock.
726	  The upper range is a ceil value permitting any tuning of Controller's
727	  radio handling overheads and to allow Coded PHY S8 coding scheme PDU
728	  time, i.e. radio event overheads + 17040 (PDU Tx) + 150 (tIFS) + 4
729	  (active clock jitter) + 17040 (PDU rx) = (radio event overheads +
730	  34234) microseconds.
731
732config BT_CTLR_CENTRAL_RESERVE_MAX
733	bool "Use maximum data PDU size time reservation for Central"
734	depends on BT_CENTRAL
735	default y
736	help
737	  Use the maximum data PDU size time reservation considering the Data
738	  length could be updated from default 27 bytes to maximum support size.
739	  If maximum time reservation is disabled then time reservation
740	  corresponding to the default data length at the time of the
741	  start/enable of Central role is used.
742
743	  Note, currently this value is only used to space multiple central
744	  connections and not for actual ticker time reservations.
745
746config BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX
747	bool "Reserve maximum event overhead in time reservations"
748	default y
749	help
750	  Use radio event scheduling CPU time overhead in calculations of event
751	  time reservations.
752
753	  If this option is disabled, then Peripheral ACL and Peripheral ISO
754	  role will not include CPU time overhead. Other role will continue to
755	  use CPU overheads in their event time reservations.
756
757config BT_CTLR_SLOT_RESERVATION_UPDATE
758	bool "Update event length reservation after PHY or DLE update"
759	depends on (BT_CTLR_DATA_LENGTH || BT_CTLR_PHY)
760	default y
761	help
762	  Updates the event length reservation after a completed Data Length Update
763	  and/or PHY Update procedure to avoid overlap of radio events
764
765config BT_CTLR_LLL_PRIO
766	int "Lower Link Layer (Radio) IRQ priority" if (BT_CTLR_ULL_LLL_PRIO_SUPPORT && !BT_CTLR_ZLI)
767	range 0 3 if SOC_SERIES_NRF51X
768	range 0 6 if (SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X)
769	default 0
770	help
771	  The interrupt priority for event preparation and radio IRQ.
772
773config BT_CTLR_ULL_HIGH_PRIO
774	int "Upper Link Layer High IRQ priority" if BT_CTLR_ULL_LLL_PRIO_SUPPORT
775	range BT_CTLR_LLL_PRIO 3 if SOC_SERIES_NRF51X
776	range BT_CTLR_LLL_PRIO 6 if (SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X)
777	default BT_CTLR_LLL_PRIO if (!BT_CTLR_ULL_LLL_PRIO_SUPPORT || BT_CTLR_ZLI || BT_CTLR_LOW_LAT)
778	default 1
779	help
780	  The interrupt priority for Ticker's Worker IRQ and Upper Link Layer
781	  higher priority functions.
782
783config BT_CTLR_ULL_LOW_PRIO
784	int "Upper Link Layer Low IRQ priority" if BT_CTLR_ULL_LLL_PRIO_SUPPORT
785	range BT_CTLR_ULL_HIGH_PRIO 3 if SOC_SERIES_NRF51X
786	range BT_CTLR_ULL_HIGH_PRIO 6 if (SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X)
787	default BT_CTLR_ULL_HIGH_PRIO
788	help
789	  The interrupt priority for Ticker's Job IRQ and Upper Link Layer
790	  lower priority functions.
791
792config BT_CTLR_LOW_LAT
793	bool "Low latency non-negotiating event preemption"
794	select BT_CTLR_LOW_LAT_ULL_DONE
795	default y if SOC_SERIES_NRF51X
796	help
797	  Use low latency non-negotiating event preemption. This reduces
798	  Radio ISR latencies by the controller event scheduling framework.
799	  Consequently, this reduces on-air radio utilization due to redundant
800	  radio state switches.
801
802config BT_CTLR_LOW_LAT_ULL
803	prompt "Low latency ULL"
804	bool
805	depends on BT_CTLR_LOW_LAT
806	default y
807	help
808	  Low latency ULL implementation that uses tailchaining instead of while
809	  loop to demux rx messages from LLL.
810
811config BT_CTLR_LOW_LAT_ULL_DONE
812	prompt "Low latency ULL prepare dequeue"
813	bool
814	help
815	  Done events be processed and dequeued in ULL context.
816
817config BT_CTLR_CONN_META
818	prompt "Connection meta data extension"
819	bool
820	help
821	  Enables vendor specific per-connection meta data as part of the
822	  LLL connection object.
823
824config BT_CTLR_RX_PDU_META
825	prompt "RX pdu meta data"
826	bool
827
828config BT_CTLR_RADIO_ENABLE_FAST
829	bool "Use tTXEN/RXEN,FAST ramp-up"
830	depends on SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X
831	default y
832	help
833	  Enable use of fast radio ramp-up mode.
834
835config BT_CTLR_TIFS_HW
836	bool "H/w Accelerated tIFS Trx switching"
837	depends on !BT_CTLR_RADIO_ENABLE_FAST && BT_CTLR_TIFS_HW_SUPPORT
838	default y
839	help
840	  Enable use of hardware accelerated tIFS Trx switching.
841
842config BT_CTLR_SW_SWITCH_SINGLE_TIMER
843	bool "Single TIMER tIFS Trx SW switching"
844	depends on (!BT_CTLR_TIFS_HW) && (SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X)
845	help
846	  Implement the tIFS Trx SW switch with the same TIMER
847	  instance, as the one used for BLE event timing. Requires
848	  SW switching be enabled. Using a single TIMER:
849	  (+) frees up one TIMER instance
850	  (+) removes jitter for HCTO implementation
851	  (-) introduces drifting to the absolute time inside BLE
852	  events, that increases linearly with the number of
853	  packets exchanged in the event
854	  (-) makes it impossible to use most of the pre-programmed
855	  PPI channels for the controller, resulting in 4 channels
856	  less left for other uses
857
858config BT_CTLR_PARAM_CHECK
859	bool "HCI Command Parameter checking"
860	default y if BT_HCI_RAW
861	help
862	  Enable code checking HCI Command Parameters. This is not needed in
863	  combined host plus controller builds, saving some code space.
864
865if BT_CONN
866
867config BT_CTLR_LLCP_CONN
868	int "Number of connections with worst-case overlapping procedures"
869	default BT_MAX_CONN
870	range 1 BT_MAX_CONN
871	help
872	  Set the number connections for which worst-case buffer requirements
873	  for LLCP procedures must be met. Executing LLCP procedures on
874	  more than this number of connections simultaneously may cause
875	  instabilities.
876
877config BT_CTLR_LLCP_TX_PER_CONN_TX_CTRL_BUF_NUM_MAX
878	int
879	default 4
880	help
881	  The theoretical maximum number of tx ctrl buffers needed for any connection, is 4.
882	  two for active encryption procedure plus one for rejecting a remote request
883	  and one for a local terminate
884
885config BT_CTLR_LLCP_PER_CONN_TX_CTRL_BUF_NUM
886	int "Number of tx control buffers to be reserved per connection"
887	default BT_CTLR_LLCP_TX_PER_CONN_TX_CTRL_BUF_NUM_MAX
888	range 0 BT_CTLR_LLCP_TX_PER_CONN_TX_CTRL_BUF_NUM_MAX
889	help
890	  Set the number control buffers that is to be pre allocated per connection
891	  This defines the minimum number of buffers available for any connection
892	  Setting this to non zero will ensure a connection will always have access
893	  to buffer(s) for control procedure TX
894
895config BT_CTLR_LLCP_COMMON_TX_CTRL_BUF_NUM
896	int "Number of tx control buffers to be available across all connections"
897	default 0
898	range 0 $(UINT8_MAX)
899	help
900	  Set the number control buffers that is to be available for tx.
901	  This defines the size of the pool of tx buffers available
902	  for control procedure tx. This pool is shared across all
903	  procedures/connections with allocation through a fifo queue.
904	  Configure between 0 and (4 - BT_CTLR_LLCP_PER_CONN_TX_CTRL_BUF_NUM) * BT_CTLR_LLCP_CONN
905
906config BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM
907	int "Number of local control procedure contexts to be available across all connections"
908	default 6 if (BT_AUTO_PHY_UPDATE=y || BT_AUTO_DATA_LEN_UPDATE=y) && BT_CTLR_LLCP_CONN < 4
909	default 2 if BT_CTLR_LLCP_CONN = 1
910	default BT_CTLR_LLCP_CONN if BT_CTLR_LLCP_CONN > 1
911	range 2 $(UINT8_MAX)
912	help
913	  Set the number control procedure contexts that is to be available.
914	  This defines the size of the pool of control procedure contexts available
915	  for handling local initiated control procedures.
916	  This pool is shared across all connections, with allocation through a queue.
917
918config BT_CTLR_LLCP_REMOTE_PROC_CTX_BUF_NUM
919	int "Number of remote control procedure contexts to be available across all connections"
920	default BT_CTLR_LLCP_CONN
921	range 1 $(UINT8_MAX)
922	help
923	  Set the number control procedure contexts that is to be available.
924	  This defines the size of the pool of control procedure contexts available
925	  for handling remote initiated control procedures.
926	  This pool is shared across all connections, with allocation through a queue.
927
928config BT_CTLR_LLID_DATA_START_EMPTY
929	bool "Handle zero length L2CAP start frame"
930	default y if BT_HCI_RAW
931	help
932	  Handle zero length L2CAP start frame.
933
934config BT_CTLR_TX_RETRY_DISABLE
935	bool "Disable Tx Retry"
936	help
937	  Avoid retransmission of a PDU if peer device Nack-ed a transmission
938	  in the current connection event, close the connection event so as to
939	  save current consumption on retries (in case peer has no buffers to
940	  receive new PDUs).
941
942	  Enabling this will lower power consumption, but increase transmission
943	  latencies by one connection interval as the next attempt to send a PDU
944	  would happen in the next connection event instead of repeated retries
945	  in the current connection event.
946
947config BT_CTLR_THROUGHPUT
948	bool "Measure incoming Tx throughput"
949	help
950	  Measure incoming Tx throughput and log the results.
951
952config BT_CTLR_FORCE_MD_COUNT
953	int "Forced MD bit count" if !BT_CTLR_FORCE_MD_AUTO
954	depends on !BT_CTLR_LOW_LAT_ULL
955	range 0 $(UINT8_MAX)
956	default 1 if BT_CTLR_FORCE_MD_AUTO
957	default 0
958	help
959	  No. of times to force MD bit to be set in Tx PDU after a successful
960	  transmission of non-empty PDU.
961
962	  This will prolong the connection event to from being closed in cases
963	  where applications want to send data in same connection event but are
964	  slow in providing new Tx data.
965
966config BT_CTLR_FORCE_MD_AUTO
967	bool "Forced MD bit automatic calculation"
968	depends on !BT_CTLR_LOW_LAT_ULL
969	select BT_CTLR_THROUGHPUT
970	default y if BT_HCI_RAW
971	help
972	  Force MD bit in transmitted PDU based on runtime incoming transmit
973	  data throughput.
974
975config BT_CTLR_CONN_RANDOM_FORCE
976	bool "Random forced scheduling for peripheral on missed anchor point"
977	depends on BT_PERIPHERAL
978	default y
979	help
980	  When enabled, controller will have legacy behavior and randomly force
981	  priority at next ticker scheduling for peripheral role, if anchor point is
982	  missed.
983	  Two or more connections with similar interval on a device connected
984	  to a peer device having two or more connections at its end with same
985	  interval could lock to a round robin pattern where in neither of the central
986	  nor peripheral event would be in sync at either end. Randomness allows
987	  to break this locked round robin pattern permitting an anchor point sync.
988
989config BT_CTLR_CONN_RSSI_EVENT
990	bool "Connection RSSI event"
991	depends on BT_CTLR_CONN_RSSI
992	help
993	  Generate events for connection RSSI measurement.
994
995config BT_CTLR_ALLOW_SAME_PEER_CONN
996	bool "Allow connection requests from same peer"
997	depends on BT_MAX_CONN > 1
998	help
999	  Allow connection requests from the same peer. While the
1000	  Bluetooth specification does not allow multiple connections
1001	  with the same peer, allowing such connections is useful
1002	  while debugging multiple connections.
1003
1004	  WARNING: This option enables behavior that violates the Bluetooth
1005	  specification.
1006
1007endif # BT_CONN
1008
1009config BT_CTLR_ADV_INDICATION
1010	bool "Advertisement indications"
1011	depends on BT_BROADCASTER
1012	help
1013	  Generate events indicating on air advertisement events.
1014
1015config BT_CTLR_SCAN_REQ_NOTIFY
1016	bool "Scan Request Notifications"
1017	depends on BT_BROADCASTER
1018	help
1019	  Generate events notifying the on air scan requests received.
1020
1021config BT_CTLR_SCAN_REQ_RSSI
1022	bool "Measure Scan Request RSSI"
1023	depends on BT_CTLR_SCAN_REQ_NOTIFY
1024	help
1025	  Measure RSSI of the on air scan requests received.
1026
1027config BT_CTLR_SCAN_INDICATION
1028	bool "Scanner indications"
1029	depends on BT_OBSERVER
1030	help
1031	  Generate events indicating on air scanner events.
1032
1033config BT_CTLR_SCAN_UNRESERVED
1034	bool "Unreserved scan window"
1035	depends on BT_OBSERVER && !BT_CTLR_LOW_LAT
1036	default y if BT_MESH
1037	help
1038	  Scanner will not use time space reservation for scan window when in
1039	  continuous scan mode.
1040
1041config BT_CTLR_EARLY_ABORT_PREVIOUS_PREPARE
1042	bool "Early abort previous prepare"
1043	default y
1044	help
1045	  Early abort previous prepare present before a short prepare is
1046	  enqueued in the prepare pipeline.
1047
1048config BT_MAYFLY_YIELD_AFTER_CALL
1049	bool "Yield from mayfly thread after first call"
1050	default y
1051	help
1052	  Only process one mayfly callback per invocation (legacy behavior).
1053	  If set to 'n', all pending mayflies for callee are executed before
1054	  yielding
1055
1056config BT_TICKER_LOW_LAT
1057	bool "Ticker low latency mode"
1058	default y if SOC_SERIES_NRF51X
1059	help
1060	  This option enables legacy ticker scheduling which defers overlapping
1061	  ticker node timeouts and thereby prevents ticker interrupts during
1062	  radio RX/TX. Enabling this option disables the ticker priority- and
1063	  'must expire' features.
1064
1065config BT_TICKER_UPDATE
1066	bool "Ticker Update"
1067	help
1068	  This option enables Ticker Update interface.
1069
1070config BT_TICKER_REMAINDER
1071	bool "Ticker Remainder"
1072	help
1073	  This option enables Ticker Start interface remainder parameter for
1074	  first expire timeout.
1075
1076config BT_TICKER_JOB_IDLE_GET
1077	bool "Ticker Job Idle Get"
1078	default y if BT_TICKER_LOW_LAT
1079	help
1080	  This option enables the ticker interface to query the idle state of
1081	  the Ticker Job execution context. This interface is used to disable
1082	  Ticker Job execution once in idle state, no operations pending for the
1083	  Ticker Job to process.
1084
1085config BT_TICKER_NEXT_SLOT_GET
1086	bool "Ticker Next Slot Get"
1087	help
1088	  This option enables ticker interface to iterate through active
1089	  ticker nodes, returning tick to expire.
1090
1091config BT_TICKER_REMAINDER_GET
1092	bool "Ticker Next Slot Get with Remainder"
1093	select BT_TICKER_NEXT_SLOT_GET
1094	select BT_TICKER_NEXT_SLOT_GET_MATCH
1095	default y
1096	help
1097	  This option enables ticker interface to iterate through active
1098	  ticker nodes, returning tick to expire and remainder from a reference
1099	  tick.
1100
1101config BT_TICKER_LAZY_GET
1102	bool "Ticker Next Slot Get with Lazy"
1103	select BT_TICKER_NEXT_SLOT_GET
1104	select BT_TICKER_NEXT_SLOT_GET_MATCH
1105	help
1106	  This option enables ticker interface to iterate through active
1107	  ticker nodes, returning tick to expire and lazy count from a reference
1108	  tick.
1109
1110config BT_TICKER_NEXT_SLOT_GET_MATCH
1111	bool "Ticker Next Slot Get with match callback"
1112	depends on BT_TICKER_NEXT_SLOT_GET
1113	default y if BT_TICKER_SLOT_AGNOSTIC
1114	help
1115	  This option enables ticker interface to iterate through active
1116	  ticker nodes with a callback for every found ticker node. When
1117	  returning true in the callback, iteration will stop and the normal
1118	  operation callback invoked.
1119
1120config BT_TICKER_EXT
1121	bool "Ticker extensions"
1122	depends on !BT_TICKER_LOW_LAT
1123	default y if BT_BROADCASTER
1124	help
1125	  This option enables ticker extensions such as re-scheduling of
1126	  ticker nodes with slot_window set to non-zero. Ticker extensions
1127	  are invoked by using available '_ext' versions of ticker interface
1128	  functions.
1129
1130config BT_TICKER_EXT_SLOT_WINDOW_YIELD
1131	bool "Tickers with slot window always yields"
1132	depends on BT_TICKER_EXT
1133	default y if BT_MESH || BT_CTLR_ADV_ISO
1134	help
1135	  This options forces tickers with slot window extensions to yield to
1136	  normal tickers and be placed at the end of their slot window.
1137
1138config BT_TICKER_EXT_EXPIRE_INFO
1139	bool "Ticker timeout with other ticker's expire information"
1140	select BT_TICKER_EXT
1141	help
1142	  This option enables ticker to return expiration info. The extended
1143	  ticker interface) is used to ask for expiration information for
1144	  another ticker id to be returned in the ticker callback. This utilises
1145	  the extended ticker interface and a callback function with a different
1146	  context to keep the current ticker interface as unchanged as possible.
1147
1148config BT_TICKER_PRIORITY_SET
1149	bool "Tickers with priority based collision resolution"
1150	depends on BT_TICKER_EXT
1151	help
1152	  This option provide tickers with persistent priority value that will
1153	  be used in resolving collisions.
1154
1155	  The priority feature if enabled then a custom ULL is needed by vendors
1156	  to avoid repeated skipping of overlapping events as next_has_priority
1157	  check uses lazy value that would be always lazy_next > lazy_current as
1158	  currently skipped event becomes the next event with lazy value
1159	  incremented by 1. This repeated skip happens when all the time
1160	  between the event intervals are occupied continuously by overlapping
1161	  tickers.
1162
1163config BT_TICKER_SLOT_AGNOSTIC
1164	bool "Slot agnostic ticker mode"
1165	help
1166	  This option enables slot agnostic ticker mode, which ignores slot
1167	  reservations and collision handling, and operates as a simple
1168	  multi-instance programmable timer.
1169
1170config BT_TICKER_PREFER_START_BEFORE_STOP
1171	bool "Ticker prefer start before stop request"
1172	help
1173	  Under race conditions wherein for a given ticker node if a number of
1174	  start and stop operations are enqueued towards ticker_job by a said
1175	  user execution context, then start operations is preferred to be
1176	  processed before stop operations.
1177
1178	  Without this option, the default behavior is to defer all start
1179	  requests after all stop requests enqueued by all user context having
1180	  been processed. The rationale for default behavior being that under
1181	  race conditions, start followed by stop requests, or start before stop
1182	  requests, the said ticker node is always scheduled and at timeout the
1183	  execution context can take decision based on its execution state.
1184
1185config BT_CTLR_JIT_SCHEDULING
1186	bool "Just-in-Time Scheduling"
1187	select BT_TICKER_SLOT_AGNOSTIC
1188	help
1189	  This option enables the experimental 'Next Generation' scheduling
1190	  feature, which eliminates priorities and collision resolving in the
1191	  ticker, and instead relies on just-in-time ("lazy") resolution in
1192	  the link layer.
1193
1194config BT_CTLR_PERIPHERAL_ISO_EARLY_CIG_START
1195	bool "Early start of peripheral CIG event"
1196	depends on BT_CTLR_PERIPHERAL_ISO
1197	help
1198	  Start scheduling the Peripheral ISO CIG events one event in advance
1199	  and hence adjust CIG offset and reference point ahead one interval.
1200
1201config BT_CTLR_USER_EXT
1202	prompt "Proprietary extensions in Controller"
1203	bool
1204	help
1205	  Catch-all for enabling proprietary event types in Controller behavior.
1206
1207config BT_CTLR_USER_EVT_RANGE
1208	int "Range of event constants reserved for proprietary event types"
1209	depends on BT_CTLR_USER_EXT
1210	default 5
1211	range 0 10
1212	help
1213	  Number of event types reserved for proprietary use. The range
1214	  is typically used when BT_CTLR_USER_EXT is in use.
1215
1216config BT_CTLR_USER_TICKER_ID_RANGE
1217	int "Range of ticker id constants reserved for proprietary ticker nodes"
1218	depends on BT_CTLR_USER_EXT
1219	default 0
1220	range 0 10
1221	help
1222	  Number of ticker ids reserved for proprietary use. The range
1223	  is typically used when BT_CTLR_USER_EXT is in use.
1224
1225config BT_RX_USER_PDU_LEN
1226	int "Maximum supported proprietary PDU buffer length"
1227	depends on BT_CTLR_USER_EXT
1228	default 2
1229	range 2 $(UINT8_MAX)
1230	help
1231	  Maximum data size for each proprietary PDU. This size includes link layer
1232	  header and payload. It does not account for HCI event headers as these
1233	  PDUs are assumed to not go across HCI.
1234
1235config BT_CTLR_USER_CPR_INTERVAL_MIN
1236	bool "Proprietary Connection Parameter Request minimum interval"
1237	depends on BT_CTLR_USER_EXT
1238	help
1239	  When enabled, controller will accept Connection Parameter Request
1240	  intervals down to a proprietary minimum value.
1241
1242config BT_CTLR_USER_CPR_ANCHOR_POINT_MOVE
1243	bool "Proprietary handling of anchor point movement"
1244	depends on BT_CTLR_USER_EXT && BT_CTLR_CONN_PARAM_REQ && BT_PERIPHERAL
1245	help
1246	  When enabled, defer accept/reject of Connection Parameter Request with only
1247	  anchor point movement to proprietary logic.
1248	  Only applicable for peripheral.
1249
1250endmenu
1251
1252source "subsys/bluetooth/controller/coex/Kconfig"
1253
1254comment "BLE Controller debug configuration"
1255
1256config BT_CTLR_PROFILE_ISR
1257	bool "Profile radio ISR"
1258	help
1259	  Turn on measurement of radio ISR latency, CPU usage and generation of
1260	  controller event with these profiling data. The controller event
1261	  contains current, minimum and maximum ISR entry latencies; and
1262	  current, minimum and maximum ISR CPU use in micro-seconds.
1263
1264config BT_CTLR_DEBUG_PINS
1265	bool "Bluetooth Controller Debug Pins"
1266	depends on BOARD_NRF51DK_NRF51822 || BOARD_NRF52DK_NRF52832 || BOARD_NRF52DK_NRF52810 || BOARD_NRF52840DK_NRF52840 || BOARD_NRF52833DK_NRF52833 || BOARD_NRF5340DK_NRF5340_CPUNET || BOARD_RV32M1_VEGA
1267	help
1268	  Turn on debug GPIO toggling for the BLE Controller. This is useful
1269	  when debugging with a logic analyzer or profiling certain sections of
1270	  the code.
1271
1272endif # BT_LL_SW_SPLIT
1273