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