1# OpenThread driver configuration options 2 3# Copyright (c) 2018 Nordic Semiconductor ASA 4# SPDX-License-Identifier: Apache-2.0 5menuconfig NET_L2_OPENTHREAD 6 bool "OpenThread L2" 7 depends on NETWORKING 8 9choice NET_L2_OPENTHREAD_IMPLEMENTATION 10 prompt "OpenThread L2 implementation" 11 depends on NET_L2_OPENTHREAD 12 13config NET_L2_OPENTHREAD_IMPLEMENTATION_ZEPHYR 14 bool "Zephyr's OpenThread L2 implementation" 15 select NET_L2_PHY_IEEE802154 16 select OPENTHREAD 17 18 imply FLASH 19 imply FLASH_MAP 20 imply MPU_ALLOW_FLASH_WRITE 21 22 select SETTINGS if FLASH 23 select OPENTHREAD_SETTINGS_RAM if !FLASH 24 select CPP 25 select REBOOT 26 select ENTROPY_GENERATOR 27 28 imply NET_UDP 29 imply NET_IPV6 30 imply NET_CONFIG_NEED_IPV6 31 help 32 Use Zephyr's implementation of the OpenThread L2. 33 34endchoice # NET_L2_OPENTHREAD_IMPLEMENTATION 35 36if NET_L2_OPENTHREAD_IMPLEMENTATION_ZEPHYR 37 38choice OPENTHREAD_IMPLEMENTATION 39 prompt "OpenThread origin selection" 40 help 41 Select OpenThread stack to use for build. Custom OpenThread implementations 42 can be added to the application Kconfig. 43 44config OPENTHREAD_SOURCES 45 bool "OpenThread from sources" 46 help 47 Build Zephyr's OpenThread port from sources. 48 49endchoice 50 51config OPENTHREAD_MANUAL_START 52 bool "Start OpenThread stack manually" 53 help 54 If enabled, OpenThread stack will have to be configured and 55 started manually, with respective API calls or CLI/NCP commands. 56 Otherwise, OpenThread will configure the network parameters and try to 57 join the Thread network automatically during initialization (using 58 credentials stored in persistent storage, obtained during 59 commissioning or pre-commissioned with other Kconfig options, 60 depending on configuration used). 61 62menu "Logging" 63 64menuconfig OPENTHREAD_DEBUG 65 bool "OpenThread stack logging support" 66 depends on NET_L2_OPENTHREAD 67 help 68 This option enables logging support for OpenThread. 69 70choice OPENTHREAD_LOG_LEVEL_CHOICE 71 prompt "OpenThread stack log level" 72 depends on OPENTHREAD_DEBUG 73 help 74 This option selects log level for OpenThread stack. 75 76config OPENTHREAD_LOG_LEVEL_CRIT 77 bool "Critical" 78config OPENTHREAD_LOG_LEVEL_WARN 79 bool "Warning" 80config OPENTHREAD_LOG_LEVEL_NOTE 81 bool "Notice" 82config OPENTHREAD_LOG_LEVEL_INFO 83 bool "Informational" 84config OPENTHREAD_LOG_LEVEL_DEBG 85 bool "Debug" 86endchoice # OPENTHREAD_LOG_LEVEL_CHOICE 87 88config OPENTHREAD_LOG_LEVEL 89 int 90 default 1 if OPENTHREAD_LOG_LEVEL_CRIT 91 default 2 if OPENTHREAD_LOG_LEVEL_WARN 92 default 3 if OPENTHREAD_LOG_LEVEL_NOTE 93 default 4 if OPENTHREAD_LOG_LEVEL_INFO 94 default 5 if OPENTHREAD_LOG_LEVEL_DEBG 95 default 0 96 help 97 Log level for OpenThread stack. 98 99config OPENTHREAD_PLATFORM_LOG_LEVEL 100 int 101 default 1 if OPENTHREAD_LOG_LEVEL_CRIT 102 default 2 if OPENTHREAD_LOG_LEVEL_WARN 103 default 3 if OPENTHREAD_LOG_LEVEL_NOTE || OPENTHREAD_LOG_LEVEL_INFO 104 default 4 if OPENTHREAD_LOG_LEVEL_DEBG 105 default 0 106 help 107 Log level for OpenThread Zephyr platform. 108 109menuconfig OPENTHREAD_L2_DEBUG 110 bool "OpenThread L2 log support" 111 help 112 This option enables log support for OpenThread. 113 114if OPENTHREAD_L2_DEBUG 115 116config OPENTHREAD_L2_DEBUG_DUMP_15_4 117 bool "Dump 802.15.4 packets" 118 help 119 This option enables dumping of 802.15.4 packets. 120 121config OPENTHREAD_L2_DEBUG_DUMP_IPV6 122 bool "Dump IPv6 packets" 123 help 124 This option enables dumping of IPv6 packets. 125 126endif # OPENTHREAD_L2_DEBUG 127 128module = OPENTHREAD_L2 129module-dep = NET_LOG 130module-str = Log level for OpenThread driver 131module-help = Enables OpenThread driver to output debug messages. 132source "subsys/net/Kconfig.template.log_config.net" 133 134endmenu # "Logging" 135 136menu "Zephyr optimizations" 137 138config OPENTHREAD_THREAD_PREEMPTIVE 139 bool "Set Openthread thread to be preemptive" 140 141config OPENTHREAD_THREAD_PRIORITY 142 int "OpenThread thread priority" 143 default 0 if OPENTHREAD_THREAD_PREEMPTIVE 144 default 8 145 146config OPENTHREAD_THREAD_STACK_SIZE 147 int "OpenThread thread stack size" 148 default 6144 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 149 default 6240 if (OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER) && MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M 150 default 3168 if MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M 151 default 3072 152 153 154config OPENTHREAD_PKT_LIST_SIZE 155 int "List size for IPv6 packet buffering" 156 default 10 157 158config OPENTHREAD_RADIO_WORKQUEUE_STACK_SIZE 159 int "OpenThread radio transmit workqueue stack size" 160 default 608 if MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M 161 default 512 162 163endmenu # "Zephyr optimizations" 164 165config OPENTHREAD_SHELL 166 bool "OpenThread shell" 167 depends on SHELL 168 169config MBEDTLS_PROMPTLESS 170 bool 171 default y if !CUSTOM_OPENTHREAD_SECURITY 172 173choice OPENTHREAD_SECURITY 174 prompt "OpenThread security" 175 default OPENTHREAD_MBEDTLS_CHOICE 176 177config CUSTOM_OPENTHREAD_SECURITY 178 bool "Custom" 179 help 180 Security settings will be controlled directly by the user. 181 Enabling this setting will give access to full control of mbed TLS 182 configuration. 183 184config OPENTHREAD_MBEDTLS_CHOICE 185 bool "mbed TLS built-in" 186 select OPENTHREAD_MBEDTLS 187 help 188 Use the OpenThread mbed TLS configuration pre-defined security scheme. 189 190endchoice 191 192config OPENTHREAD_MBEDTLS 193 bool 194 select MBEDTLS 195 select MBEDTLS_ENABLE_HEAP 196 select MBEDTLS_CIPHER_AES_ENABLED 197 select MBEDTLS_CIPHER_CCM_ENABLED 198 select MBEDTLS_SHA256 199 select MBEDTLS_ENTROPY_C 200 select MBEDTLS_CMAC 201 select MBEDTLS_CIPHER 202 select MBEDTLS_MD 203 select MBEDTLS_TLS_VERSION_1_2 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 204 select MBEDTLS_DTLS if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 205 select MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 206 select MBEDTLS_ECJPAKE_C if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 207 select MBEDTLS_ECP_DP_SECP256R1_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || \ 208 OPENTHREAD_SRP_CLIENT || OPENTHREAD_SRP_SERVER 209 select MBEDTLS_ECP_NIST_OPTIM if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 210 select MBEDTLS_CTR_DRBG_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER 211 select MBEDTLS_HMAC_DRBG_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || \ 212 OPENTHREAD_SRP_CLIENT || OPENTHREAD_SRP_SERVER 213 select MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED if OPENTHREAD_ECDSA 214 select MBEDTLS_ECDH_C if OPENTHREAD_ECDSA 215 select MBEDTLS_ECDSA_C if OPENTHREAD_ECDSA 216 select MBEDTLS_ECDSA_DETERMINISTIC if OPENTHREAD_ECDSA 217 select MBEDTLS_PK_WRITE_C if OPENTHREAD_ECDSA 218 select MBEDTLS_ECP_C if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || OPENTHREAD_ECDSA 219 220 221config OPENTHREAD_MBEDTLS_LIB_NAME 222 string "mbedtls lib name" 223 default "mbedTLS" 224 help 225 This option allows to specify one or more mbedtls library files to be 226 linked with OpenThread. Separate multiple values with space " ". 227 228config OPENTHREAD_COPROCESSOR 229 bool "OpenThread Co-Processor" 230 select OPENTHREAD_MANUAL_START 231 select RING_BUFFER 232 select UART_INTERRUPT_DRIVEN 233 help 234 Enable Co-Processor in OpenThread stack. 235 236if OPENTHREAD_COPROCESSOR 237 238choice OPENTHREAD_COPROCESSOR_CHOICE 239 prompt "OpenThread Co-Processor type" 240 help 241 This option selects Thread network co-processor type 242 243config OPENTHREAD_COPROCESSOR_NCP 244 bool "NCP - Network Co-Processor" 245config OPENTHREAD_COPROCESSOR_RCP 246 bool "RCP - Radio Co-Processor" 247endchoice # OPENTHREAD_COPROCESSOR_CHOICE 248 249config OPENTHREAD_COPROCESSOR_UART_RING_BUFFER_SIZE 250 int "Set Co-Processor UART ring buffer size" 251 default 4096 252 help 253 TX buffer size for the OpenThread Co-Processor UART. 254 255config OPENTHREAD_COPROCESSOR_VENDOR_HOOK_SOURCE 256 string "Path to vendor hook source file" 257 help 258 Provides path to compile vendor hook file. 259 260endif # OPENTHREAD_COPROCESSOR 261 262config OPENTHREAD_PLATFORM_INFO 263 string "Platform information for OpenThread" 264 default "ZEPHYR" 265 help 266 Platform information for OpenThread 267 268config OPENTHREAD_CUSTOM_PARAMETERS 269 string "Custom Parameters to pass to OpenThread build system" 270 default "" 271 help 272 This option is intended for advanced users only. 273 Pass additional parameters that do not have corresponding Kconfig 274 options to the OpenThread build system. Separate multiple values with 275 space " ", for example: 276 "OPENTHREAD_CONFIG_JOINER_ENABLE=1 OPENTHREAD_CONFIG_JOINER_MAX_CANDIDATES=3" 277 278config OPENTHREAD_NUM_MESSAGE_BUFFERS 279 int "The number of message buffers in the buffer pool" 280 default 128 281 help 282 "The number of message buffers in the buffer pool." 283 284config OPENTHREAD_MESSAGE_BUFFER_SIZE 285 int "The size of a message buffer in bytes" 286 default 128 287 help 288 "The size of a message buffer in bytes" 289 290config OPENTHREAD_PLATFORM_MESSAGE_MANAGEMENT 291 bool "Use platform message management" 292 help 293 The message pool is managed by platform defined logic. 294 295config OPENTHREAD_MAX_STATECHANGE_HANDLERS 296 int "The maximum number of state-changed callback handlers" 297 default 2 298 help 299 The maximum number of state-changed callback handlers 300 set using otSetStateChangedCallback. 301 302config OPENTHREAD_TMF_ADDRESS_CACHE_ENTRIES 303 int "The number of EID-to-RLOC cache entries" 304 default 20 305 help 306 The number of EID-to-RLOC cache entries. 307 308config OPENTHREAD_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES 309 int "The maximum number of EID-to-RLOC cache entries" 310 default 2 311 help 312 The maximum number of EID-to-RLOC cache entries that can be used for 313 "snoop optimization" where an entry is created by inspecting a received 314 message. 315 316config OPENTHREAD_LOG_PREPEND_LEVEL_ENABLE 317 bool "Prepending the log level to all OpenThread log messages" 318 help 319 When enabled the OpenThread logs will be prepended with the appropriate 320 log level prefix i.e. [CRIT], [WARN], [NOTE], [INFO], [DEBG]. 321 322config OPENTHREAD_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE 323 bool "Software ACK timeout logic" 324 default y 325 help 326 Set y if the radio supports AckTime event 327 328config OPENTHREAD_MAC_SOFTWARE_RETRANSMIT_ENABLE 329 bool "Software retransmission logic" 330 default y 331 help 332 Set y if the radio supports tx retry logic with collision avoidance (CSMA) 333 334config OPENTHREAD_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE 335 bool "Software CSMA backoff logic" 336 default y 337 help 338 Set y to enable software CSMA backoff. The option can be disabled if 339 the radio has hardware support for this feature (IEEE802154_HW_CSMA). 340 341config OPENTHREAD_CRYPTO_PSA 342 bool "ARM PSA crypto API" 343 depends on MBEDTLS_PSA_CRYPTO_CLIENT 344 select OPENTHREAD_PLATFORM_KEY_REF if !OPENTHREAD_COPROCESSOR_RCP 345 imply OPENTHREAD_PLATFORM_KEYS_EXPORTABLE_ENABLE 346 help 347 Enable crypto backend library implementation based on ARM PSA crypto 348 API instead of the default, using mbedTLS. 349 350config OPENTHREAD_PLATFORM_KEYS_EXPORTABLE_ENABLE 351 bool "Make MAC keys exportable" 352 depends on OPENTHREAD_PLATFORM_KEY_REF 353 help 354 Enable the creation of exportable MAC keys in the OpenThread Key Manager. 355 356endif # NET_L2_OPENTHREAD_IMPLEMENTATION_ZEPHYR 357