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