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