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