| # IP stack config |
| |
| # Copyright (c) 2016 Intel Corporation. |
| # Copyright (c) 2021 Nordic Semiconductor |
| # Copyright (c) 2023 Arm Limited (or its affiliates). All rights reserved. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menu "IP stack" |
| |
| # Hidden option enabled whenever an IP stack is available. |
| config NET_IP |
| bool |
| default y if NET_IPV6 || NET_IPV4 |
| |
| # Hidden option selected by net connection based socket implementations |
| # to draw in all code required for connection infrastructure. |
| config NET_CONNECTION_SOCKETS |
| bool |
| |
| config NET_NATIVE |
| bool "Native network stack support" |
| default y |
| help |
| Enables Zephyr native IP stack. If you disable this, then |
| you need to enable the offloading support if you want to |
| have IP connectivity. |
| |
| # Hidden options for enabling native IPv6/IPv4. Using these options |
| # avoids having "defined(CONFIG_NET_IPV6) && defined(CONFIG_NET_NATIVE)" |
| # in the code as we can have "defined(CONFIG_NET_NATIVE_IPV6)" instead. |
| config NET_NATIVE_IPV6 |
| bool |
| depends on NET_NATIVE |
| default y if NET_IPV6 |
| |
| config NET_NATIVE_IPV4 |
| bool |
| depends on NET_NATIVE |
| default y if NET_IPV4 |
| |
| config NET_NATIVE_TCP |
| bool |
| depends on NET_NATIVE |
| default y if NET_TCP |
| |
| config NET_NATIVE_UDP |
| bool |
| depends on NET_NATIVE |
| default y if NET_UDP |
| |
| config NET_OFFLOAD |
| bool "Offload IP stack" |
| help |
| Enables TCP/IP stack to be offload to a co-processor. |
| |
| if NET_OFFLOAD |
| module = NET_OFFLOAD |
| module-dep = NET_LOG |
| module-str = Log level for offload layer |
| module-help = Enables offload layer to output debug messages. |
| source "subsys/net/Kconfig.template.log_config.net" |
| endif # NET_OFFLOAD |
| |
| config NET_RAW_MODE |
| bool |
| help |
| This is a very specific option used to built only the very minimal |
| part of the net stack in order to get network drivers working without |
| any net stack above: core, L2 etc... Basically this will build only |
| net_pkt part. It is currently used only by IEEE 802.15.4 drivers, |
| though any type of net drivers could use it. |
| |
| if !NET_RAW_MODE |
| |
| choice |
| prompt "Qemu networking" |
| default NET_QEMU_PPP if NET_PPP |
| default NET_QEMU_SLIP |
| depends on QEMU_TARGET |
| help |
| Can be used to select how the network connectivity is established |
| from inside qemu to host system. This can be done either via |
| serial connection (SLIP) or via Qemu ethernet driver. |
| |
| config NET_QEMU_SLIP |
| bool "SLIP" |
| help |
| Connect to host or to another Qemu via SLIP. |
| |
| config NET_QEMU_PPP |
| bool "PPP" |
| help |
| Connect to host via PPP. |
| |
| config NET_QEMU_ETHERNET |
| bool "Ethernet" |
| help |
| Connect to host system via Qemu ethernet driver support. One such |
| driver that Zephyr supports is Intel e1000 ethernet driver. |
| |
| config NET_QEMU_USER |
| bool "SLIRP" |
| help |
| Connect to host system via Qemu's built-in User Networking support. This |
| is implemented using "slirp", which provides a full TCP/IP stack within |
| QEMU and uses that stack to implement a virtual NAT'd network. |
| |
| endchoice |
| |
| config NET_QEMU_USER_EXTRA_ARGS |
| string "Qemu User Networking Args" |
| depends on NET_QEMU_USER |
| default "" |
| help |
| Extra arguments passed to QEMU when User Networking is enabled. This may |
| include host / guest port forwarding, device id, Network address |
| information etc. This string is appended to the QEMU "-net user" option. |
| |
| config NET_INIT_PRIO |
| int |
| default 90 |
| help |
| Network initialization priority level. This number tells how |
| early in the boot the network stack is initialized. |
| |
| config NET_IP_DSCP_ECN |
| bool "DSCP/ECN processing at IP layer" |
| depends on NET_IP |
| default y |
| help |
| Specify whether DSCP/ECN values are processed at IP layer. The values |
| are encoded within ToS field in IPv4 and TC field in IPv6. |
| |
| source "subsys/net/ip/Kconfig.ipv6" |
| |
| source "subsys/net/ip/Kconfig.ipv4" |
| |
| config NET_SHELL |
| bool "Network shell utilities" |
| select SHELL |
| help |
| Activate shell module that provides network commands like |
| ping to the console. |
| |
| config NET_SHELL_DYN_CMD_COMPLETION |
| bool "Network shell dynamic command completion" |
| depends on NET_SHELL |
| default y |
| help |
| Enable various net-shell command to support dynamic command |
| completion. This means that for example the nbr command can |
| automatically complete the neighboring IPv6 address and user |
| does not need to type it manually. |
| Please note that this uses more memory in order to save the |
| dynamic command strings. For example for nbr command the |
| increase is 320 bytes (8 neighbors * 40 bytes for IPv6 address |
| length) by default. Other dynamic completion commands in |
| net-shell require also some smaller amount of memory. |
| |
| config NET_TC_TX_COUNT |
| int "How many Tx traffic classes to have for each network device" |
| default 1 if USERSPACE || USB_DEVICE_NETWORK |
| default 0 |
| range 1 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 && USERSPACE |
| range 0 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 |
| range 1 8 if USERSPACE |
| range 0 8 |
| help |
| Define how many Tx traffic classes (queues) the system should have |
| when sending a network packet. The network packet priority can then |
| be mapped to this traffic class so that higher prioritized packets |
| can be processed before lower prioritized ones. Each queue is handled |
| by a separate thread which will need RAM for stack space. |
| Only increase the value from 1 if you really need this feature. |
| The default value is 1 which means that all the network traffic is |
| handled equally. In this implementation, the higher traffic class |
| value corresponds to lower thread priority. |
| If you select 0 here, then it means that all the network traffic |
| is pushed to the driver directly without any queues. |
| Note that if USERSPACE support is enabled, then currently we need to |
| enable at least 1 TX thread. |
| |
| config NET_TC_RX_COUNT |
| int "How many Rx traffic classes to have for each network device" |
| default 1 |
| range 1 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 && USERSPACE |
| range 0 NET_TC_NUM_PRIORITIES if NET_TC_NUM_PRIORITIES<=8 |
| range 1 8 if USERSPACE |
| range 0 8 |
| help |
| Define how many Rx traffic classes (queues) the system should have |
| when receiving a network packet. The network packet priority can then |
| be mapped to this traffic class so that higher prioritized packets |
| can be processed before lower prioritized ones. Each queue is handled |
| by a separate thread which will need RAM for stack space. |
| Only increase the value from 1 if you really need this feature. |
| The default value is 1 which means that all the network traffic is |
| handled equally. In this implementation, the higher traffic class |
| value corresponds to lower thread priority. |
| If you select 0 here, then it means that all the network traffic |
| is pushed from the driver to application thread without any |
| intermediate RX queue. There is always a receive socket queue between |
| device driver and application. Disabling RX thread means that the |
| network device driver, that is typically running in IRQ context, will |
| handle the packet all the way to the application. This might cause |
| other incoming packets to be lost if the RX processing takes long |
| time. |
| Note that if USERSPACE support is enabled, then currently we need to |
| enable at least 1 RX thread. |
| |
| config NET_TC_SKIP_FOR_HIGH_PRIO |
| bool "Push high priority packets directly to network driver" |
| help |
| If this is set, then high priority (NET_PRIORITY_CA) net_pkt will be |
| pushed directly to network driver and will skip the traffic class |
| queues. This is currently not enabled by default. |
| |
| choice NET_TC_THREAD_TYPE |
| prompt "How the network RX/TX threads should work" |
| help |
| Please select the RX/TX threads to be either pre-emptive or |
| co-operative. |
| |
| config NET_TC_THREAD_COOPERATIVE |
| bool "Use co-operative TX/RX threads" |
| depends on COOP_ENABLED |
| help |
| With co-operative threads, the thread cannot be pre-empted. |
| |
| config NET_TC_THREAD_PREEMPTIVE |
| bool "Use pre-emptive TX/RX threads [EXPERIMENTAL]" |
| depends on PREEMPT_ENABLED |
| select EXPERIMENTAL |
| help |
| With pre-emptive threads, the thread can be pre-empted. |
| |
| endchoice |
| |
| config NET_TC_NUM_PRIORITIES |
| int |
| default NUM_COOP_PRIORITIES if NET_TC_THREAD_COOPERATIVE |
| default NUM_PREEMPT_PRIORITIES if NET_TC_THREAD_PREEMPTIVE |
| |
| choice |
| prompt "Priority to traffic class mapping" |
| help |
| Select mapping to use to map network packet priorities to traffic |
| classes. |
| |
| config NET_TC_MAPPING_STRICT |
| bool "Strict priority mapping" |
| help |
| This is the recommended default priority to traffic class mapping. |
| Use it for implementations that do not support the credit-based |
| shaper transmission selection algorithm. |
| See 802.1Q, chapter 8.6.6 for more information. |
| |
| config NET_TC_MAPPING_SR_CLASS_A_AND_B |
| bool "SR class A and class B mapping" |
| depends on NET_TC_TX_COUNT >= 2 |
| depends on NET_TC_RX_COUNT >= 2 |
| help |
| This is the recommended priority to traffic class mapping for a |
| system that supports SR (Stream Reservation) class A and SR class B. |
| See 802.1Q, chapter 34.5 for more information. |
| |
| config NET_TC_MAPPING_SR_CLASS_B_ONLY |
| bool "SR class B only mapping" |
| depends on NET_TC_TX_COUNT >= 2 |
| depends on NET_TC_RX_COUNT >= 2 |
| help |
| This is the recommended priority to traffic class mapping for a |
| system that supports SR (Stream Reservation) class B only. |
| See 802.1Q, chapter 34.5 for more information. |
| endchoice |
| |
| config NET_TX_DEFAULT_PRIORITY |
| int "Default network TX packet priority if none have been set" |
| default 1 |
| range 0 7 |
| help |
| What is the default network packet priority if user has not specified |
| one. The value 0 means lowest priority and 7 is the highest. |
| |
| config NET_RX_DEFAULT_PRIORITY |
| int "Default network RX packet priority if none have been set" |
| default 0 |
| range 0 7 |
| help |
| What is the default network RX packet priority if user has not set |
| one. The value 0 means lowest priority and 7 is the highest. |
| |
| config NET_IP_ADDR_CHECK |
| bool "Check IP address validity before sending IP packet" |
| default y |
| help |
| Check that either the source or destination address is |
| correct before sending either IPv4 or IPv6 network packet. |
| |
| config NET_MAX_ROUTERS |
| int "How many routers are supported" |
| default 2 if NET_IPV4 && NET_IPV6 |
| default 1 if NET_IPV4 && !NET_IPV6 |
| default 1 if !NET_IPV4 && NET_IPV6 |
| range 1 254 |
| help |
| The value depends on your network needs. |
| |
| # Normally the route support is enabled by RPL or similar technology |
| # that needs to use the routing infrastructure. |
| config NET_ROUTE |
| bool |
| depends on NET_IPV6_NBR_CACHE |
| default y if NET_IPV6_NBR_CACHE |
| |
| # Temporarily hide the routing option as we do not have RPL in the system |
| # that used to populate the routing table. |
| config NET_ROUTING |
| bool |
| depends on NET_ROUTE |
| help |
| Allow IPv6 routing between different network interfaces and |
| technologies. Currently this has limited use as some entity |
| would need to populate the routing table. RPL used to do that |
| earlier but currently there is no RPL support in Zephyr. |
| |
| config NET_MAX_ROUTES |
| int "Max number of routing entries stored." |
| default NET_IPV6_MAX_NEIGHBORS |
| depends on NET_ROUTE |
| help |
| This determines how many entries can be stored in routing table. |
| |
| config NET_MAX_NEXTHOPS |
| int "Max number of next hop entries stored." |
| default NET_MAX_ROUTES |
| depends on NET_ROUTE |
| help |
| This determines how many entries can be stored in nexthop table. |
| |
| config NET_ROUTE_MCAST |
| bool "Multicast Routing / Forwarding" |
| depends on NET_ROUTE |
| help |
| Activates multicast routing/forwarding |
| |
| config NET_MAX_MCAST_ROUTES |
| int "Max number of multicast routing entries stored." |
| default 1 |
| depends on NET_ROUTE_MCAST |
| help |
| This determines how many entries can be stored in multicast |
| routing table. |
| |
| config NET_TCP |
| bool "TCP" |
| depends on NET_IP |
| help |
| The value depends on your network needs. |
| |
| config NET_TCP_CHECKSUM |
| bool "Check TCP checksum" |
| default y |
| depends on NET_TCP |
| help |
| Enables TCP handler to check TCP checksum. If the checksum is invalid, |
| then the packet is discarded. |
| |
| if NET_TCP |
| module = NET_TCP |
| module-dep = NET_LOG |
| module-str = Log level for TCP |
| module-help = Enables TCP handler output debug messages |
| source "subsys/net/Kconfig.template.log_config.net" |
| endif # NET_TCP |
| |
| config NET_TCP_TIME_WAIT_DELAY |
| int "How long to wait in TIME_WAIT state (in milliseconds)" |
| depends on NET_TCP |
| default 1500 |
| help |
| To avoid a (low-probability) issue when delayed packets from |
| previous connection get delivered to next connection reusing |
| the same local/remote ports, RFC 793 (TCP) suggests to keep |
| an old, closed connection in a special "TIME_WAIT" state for |
| the duration of 2*MSL (Maximum Segment Lifetime). The RFC |
| suggests to use MSL of 2 minutes, but notes "This is an |
| engineering choice, and may be changed if experience indicates |
| it is desirable to do so." For low-resource systems, having |
| large MSL may lead to quick resource exhaustion (and related |
| DoS attacks). At the same time, the issue of packet misdelivery |
| is largely alleviated in the modern TCP stacks by using random, |
| non-repeating port numbers and initial sequence numbers. Due |
| to this, Zephyr uses much lower value of 1500ms by default. |
| Value of 0 disables TIME_WAIT state completely. |
| |
| config NET_TCP_ACK_TIMEOUT |
| int "How long to wait for ACK (in milliseconds)" |
| depends on NET_TCP |
| default 1000 |
| range 1 2147483647 |
| help |
| This value affects the timeout when waiting ACK to arrive in |
| various TCP states. The value is in milliseconds. Note that |
| having a very low value here could prevent connectivity. |
| |
| config NET_TCP_INIT_RETRANSMISSION_TIMEOUT |
| int "Initial value of Retransmission Timeout (RTO) (in milliseconds)" |
| depends on NET_TCP |
| default 200 |
| range 100 60000 |
| help |
| This value affects the timeout between initial retransmission |
| of TCP data packets. The value is in milliseconds. |
| |
| config NET_TCP_RETRY_COUNT |
| int "Maximum number of TCP segment retransmissions" |
| depends on NET_TCP |
| default 9 |
| help |
| The following formula can be used to determine the time (in ms) |
| that a segment will be be buffered awaiting retransmission: |
| n=NET_TCP_RETRY_COUNT |
| Sum((1<<n) * NET_TCP_INIT_RETRANSMISSION_TIMEOUT) |
| n=0 |
| With the default value of 9, the IP stack will try to |
| retransmit for up to 1:42 minutes. This is as close as possible |
| to the minimum value recommended by RFC1122 (1:40 minutes). |
| Only 5 bits are dedicated for the retransmission count, so accepted |
| values are in the 0-31 range. It's highly recommended to not go |
| below 9, though. |
| Should a retransmission timeout occur, the receive callback is |
| called with -ECONNRESET error code and the context is dereferenced. |
| |
| config NET_TCP_RANDOMIZED_RTO |
| bool "Use a randomized retransmission time" |
| default y |
| depends on NET_TCP |
| help |
| It can happen that two similar stacks enter a retransmission cycle |
| due to a packet collision. If the transmission timeout is the same |
| both stacks will retry at the same moment resulting in another |
| collision. By introducing a randomized retry timeout, the chance of |
| a second collision is reduced and it reduces furter the more |
| retransmissions occur. |
| |
| config NET_TCP_FAST_RETRANSMIT |
| bool "Fast-retry algorithm based on the number of duplicated ACKs" |
| depends on NET_TCP |
| default y |
| help |
| When a packet is lost, the receiver will keep acknowledging the |
| sequence number of the last correctly received byte. Upon reception |
| of a sequence of acknowledgements for the same sequence number, |
| this can be deduced as that the packet afterwards must have been lost. |
| In that case a retransmission is triggerd to avoid having to wait for |
| the retransmit timer to elapse. |
| |
| config NET_TCP_MAX_SEND_WINDOW_SIZE |
| int "Maximum sending window size to use" |
| depends on NET_TCP |
| default 0 |
| range 0 65535 |
| help |
| This value affects how the TCP selects the maximum sending window |
| size. The default value 0 lets the TCP stack select the value |
| according to amount of network buffers configured in the system. |
| |
| config NET_TCP_MAX_RECV_WINDOW_SIZE |
| int "Maximum receive window size to use" |
| depends on NET_TCP |
| default 0 |
| range 0 65535 |
| help |
| This value defines the maximum TCP receive window size. Increasing |
| this value can improve connection throughput, but requires more |
| receive buffers available in the system for efficient operation. |
| The default value 0 lets the TCP stack select the value |
| according to amount of network buffers configured in the system. |
| |
| config NET_TCP_RECV_QUEUE_TIMEOUT |
| int "How long to queue received data (in ms)" |
| depends on NET_TCP |
| default 2000 |
| range 0 10000 |
| help |
| If we receive out-of-order TCP data, we queue it. This value tells |
| how long the data is kept before it is discarded if we have not been |
| able to pass the data to the application. If set to 0, then receive |
| queueing is not enabled. The value is in milliseconds. |
| Note that we only queue data sequentially in current version i.e., |
| there should be no holes in the queue. For example, if we receive |
| SEQs 5,4,3,6 and are waiting SEQ 2, the data in segments 3,4,5,6 is |
| queued (in this order), and then given to application when we receive |
| SEQ 2. But if we receive SEQs 5,4,3,7 then the SEQ 7 is discarded |
| because the list would not be sequential as number 6 is be missing. |
| |
| config NET_TCP_PKT_ALLOC_TIMEOUT |
| int "How long to wait for a TCP packet allocation (in ms)" |
| depends on NET_TCP |
| default 100 |
| range 10 1000 |
| help |
| The TCP network stack allocates packets from the buffers and the |
| allocation can take some time depending on the situation. |
| This value indicates how long the stack should wait for the packet to |
| be allocated, before returning an internal error and trying again. |
| |
| config NET_TCP_WORKQ_STACK_SIZE |
| int "TCP work queue thread stack size" |
| default 1024 |
| depends on NET_TCP |
| help |
| Set the TCP work queue thread stack size in bytes. |
| |
| config NET_TCP_ISN_RFC6528 |
| bool "Use ISN algorithm from RFC 6528" |
| default y |
| depends on NET_TCP |
| select MBEDTLS |
| select MBEDTLS_MD |
| select MBEDTLS_MAC_MD5_ENABLED |
| help |
| Implement Initial Sequence Number calculation as described in |
| RFC 6528 chapter 3. https://tools.ietf.org/html/rfc6528 |
| If this is not set, then sys_rand32_get() is used for ISN value. |
| |
| config NET_TEST_PROTOCOL |
| bool "JSON based test protocol (UDP)" |
| help |
| Enable JSON based test protocol (UDP). |
| |
| config NET_UDP |
| bool "UDP" |
| default y |
| depends on NET_IP |
| help |
| The value depends on your network needs. |
| |
| config NET_UDP_CHECKSUM |
| bool "Check UDP checksum" |
| default y |
| depends on NET_UDP |
| help |
| Enables UDP handler to check UDP checksum. If the checksum is invalid, |
| then the packet is discarded. |
| |
| config NET_UDP_MISSING_CHECKSUM |
| bool "Accept missing checksum (IPv4 only)" |
| default y |
| depends on NET_UDP && NET_IPV4 |
| help |
| RFC 768 states the possibility to have a missing checksum, for |
| debugging purposes for instance. That feature is however valid only |
| for IPv4 and on reception only, since Zephyr will always compute the |
| UDP checksum in transmission path. |
| |
| if NET_UDP |
| module = NET_UDP |
| module-dep = NET_LOG |
| module-str = Log level for UDP |
| module-help = Enables UDP handler output debug messages |
| source "subsys/net/Kconfig.template.log_config.net" |
| endif # NET_UDP |
| |
| config NET_MAX_CONN |
| int "How many network connections are supported" |
| depends on NET_UDP || NET_TCP || NET_SOCKETS_PACKET || NET_SOCKETS_CAN |
| default 8 if NET_IPV6 && NET_IPV4 |
| default 4 |
| help |
| The value depends on your network needs. The value |
| should include both UDP and TCP connections. |
| |
| config NET_MAX_CONTEXTS |
| int "Number of network contexts to allocate" |
| default 6 |
| help |
| Each network context is used to describe a network 5-tuple that |
| is used when listening or sending network traffic. This is very |
| similar as one could call a network socket in some other systems. |
| |
| config NET_CONTEXT_NET_PKT_POOL |
| bool "Net_buf TX pool / context" |
| default y if NET_TCP && NET_6LO |
| help |
| If enabled, then it is possible to fine-tune network packet pool |
| for each context when sending network data. If this setting is |
| enabled, then you should define the context pools in your application |
| using NET_PKT_TX_POOL_DEFINE() and NET_PKT_DATA_POOL_DEFINE() |
| macros and tie these pools to desired context using the |
| net_context_setup_pools() function. |
| |
| config NET_CONTEXT_SYNC_RECV |
| bool "Support synchronous functionality in net_context_recv() API" |
| default y |
| help |
| You can disable sync support to save some memory if you are calling |
| net_context_recv() in async way only when timeout is set to 0. |
| |
| config NET_CONTEXT_CHECK |
| bool "Check options when calling various net_context functions" |
| default y |
| help |
| If you know that the options passed to net_context...() functions |
| are ok, then you can disable the checks to save some memory. |
| |
| config NET_CONTEXT_PRIORITY |
| bool "Add priority support to net_context" |
| help |
| It is possible to prioritize network traffic. This requires |
| also traffic class support to work as expected. |
| |
| config NET_CONTEXT_TXTIME |
| bool "Add TXTIME support to net_context" |
| select NET_PKT_TXTIME |
| help |
| It is possible to add information when the outgoing network packet |
| should be sent. The TX time information should be placed into |
| ancillary data field in sendmsg call. |
| |
| config NET_CONTEXT_RCVTIMEO |
| bool "Add RCVTIMEO support to net_context" |
| help |
| It is possible to time out receiving a network packet. The timeout |
| time is configurable run-time in the application code. For network |
| sockets timeout is configured per socket with |
| setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, ...) function. |
| |
| config NET_CONTEXT_SNDTIMEO |
| bool "Add SNDTIMEO support to net_context" |
| help |
| It is possible to time out sending a network packet. The timeout |
| time is configurable run-time in the application code. For network |
| sockets timeout is configured per socket with |
| setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, ...) function. |
| |
| config NET_CONTEXT_RCVBUF |
| bool "Add RCVBUF support to net_context" |
| help |
| If is possible to define the maximum socket receive buffer per socket. |
| The default value is set by CONFIG_NET_TCP_MAX_RECV_WINDOW_SIZE. For |
| TCP sockets, the rcvbuf will determine the receive window size. |
| |
| config NET_CONTEXT_SNDBUF |
| bool "Add SNDBUF support to net_context" |
| help |
| It is possible to define the maximum socket send buffer per socket. |
| For TCP sockets, the sndbuf will determine the total size of queued |
| data in the TCP layer. |
| |
| config NET_CONTEXT_DSCP_ECN |
| bool "Add support for setting DSCP/ECN IP properties on net_context" |
| depends on NET_IP_DSCP_ECN |
| default y |
| help |
| Allow to set Differentiated Services and Explicit Congestion |
| Notification values on net_context. Those values are then used in |
| IPv4/IPv6 header when sending packets over net_context. |
| |
| config NET_TEST |
| bool "Network Testing" |
| help |
| Used for self-contained networking tests that do not require a |
| network device. |
| |
| config NET_SLIP_TAP |
| bool "TAP SLIP driver" |
| depends on NET_QEMU_SLIP |
| depends on NET_NATIVE |
| select SLIP |
| select UART_PIPE |
| select UART_INTERRUPT_DRIVEN |
| select SLIP_TAP |
| default y if (QEMU_TARGET && !NET_TEST && !NET_L2_BT) |
| help |
| SLIP TAP support is necessary when testing with QEMU. The host |
| needs to have tunslip6 with TAP support running in order to |
| communicate via the SLIP driver. See net-tools project at |
| https://github.com/zephyrproject-rtos/net-tools for more details. |
| |
| config NET_TRICKLE |
| bool "Trickle library" |
| help |
| Normally this is enabled automatically if needed, |
| so say 'n' if unsure. |
| |
| if NET_TRICKLE |
| module = NET_TRICKLE |
| module-dep = NET_LOG |
| module-str = Log level for Trickle algorithm |
| module-help = Enables Trickle library output debug messages |
| source "subsys/net/Kconfig.template.log_config.net" |
| endif # NET_TRICKLE |
| |
| endif # NET_RAW_MODE |
| |
| config NET_PKT_RX_COUNT |
| int "How many packet receives can be pending at the same time" |
| default 14 if NET_L2_ETHERNET |
| default 4 |
| help |
| Each RX buffer will occupy smallish amount of memory. |
| See include/net/net_pkt.h and the sizeof(struct net_pkt) |
| |
| config NET_PKT_TX_COUNT |
| int "How many packet sends can be pending at the same time" |
| default 14 if NET_L2_ETHERNET |
| default 4 |
| help |
| Each TX buffer will occupy smallish amount of memory. |
| See include/net/net_pkt.h and the sizeof(struct net_pkt) |
| |
| config NET_BUF_RX_COUNT |
| int "How many network buffers are allocated for receiving data" |
| default 36 if NET_L2_ETHERNET |
| default 16 |
| help |
| Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish |
| header (sizeof(struct net_buf)) amount of data. |
| |
| config NET_BUF_TX_COUNT |
| int "How many network buffers are allocated for sending data" |
| default 36 if NET_L2_ETHERNET |
| default 16 |
| help |
| Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish |
| header (sizeof(struct net_buf)) amount of data. |
| |
| choice |
| prompt "Network packet data allocator type" |
| default NET_BUF_FIXED_DATA_SIZE |
| help |
| Select the memory allocator for the network buffers that hold the |
| packet data. |
| |
| config NET_BUF_FIXED_DATA_SIZE |
| bool "Fixed data size buffer" |
| help |
| Each buffer comes with a built time configured size. If runtime |
| requested is bigger than that, it will allocate as many net_buf |
| as necessary to reach that request. |
| |
| config NET_BUF_VARIABLE_DATA_SIZE |
| bool "Variable data size buffer [EXPERIMENTAL]" |
| select EXPERIMENTAL |
| help |
| The buffer is dynamically allocated from runtime requested size. |
| |
| endchoice |
| |
| config NET_BUF_DATA_SIZE |
| int "Size of each network data fragment" |
| default 128 |
| depends on NET_BUF_FIXED_DATA_SIZE |
| help |
| This value tells what is the fixed size of each network buffer. |
| |
| config NET_BUF_DATA_POOL_SIZE |
| int "Size of the memory pool where buffers are allocated from" |
| default 4096 if NET_L2_ETHERNET |
| default 2048 |
| depends on NET_BUF_VARIABLE_DATA_SIZE |
| help |
| This value tell what is the size of the memory pool where each |
| network buffer is allocated from. |
| |
| config NET_PKT_BUF_USER_DATA_SIZE |
| int "Size of user_data available in rx and tx network buffers" |
| default BT_CONN_TX_USER_DATA_SIZE if NET_L2_BT |
| default 4 |
| range BT_CONN_TX_USER_DATA_SIZE 16 if NET_L2_BT |
| range 4 16 |
| help |
| User data size used in rx and tx network buffers. |
| |
| config NET_HEADERS_ALWAYS_CONTIGUOUS |
| bool |
| help |
| This a hidden option, which one should use with a lot of care. |
| NO bug reports will be accepted if that option is enabled! |
| You are warned. |
| If you are 100% sure the headers memory space is always in a |
| contiguous space, this will save stack usage and ROM in net core. |
| This is a possible case when using IPv4 only, with |
| NET_BUF_FIXED_DATA_SIZE enabled and NET_BUF_DATA_SIZE of 128 for |
| instance. |
| |
| choice |
| prompt "Default Network Interface" |
| default NET_DEFAULT_IF_FIRST |
| help |
| If system has multiple interfaces enabled, then user shall be able |
| to choose default interface. Otherwise first interface will be the |
| default interface. |
| |
| config NET_DEFAULT_IF_FIRST |
| bool "First available interface" |
| |
| config NET_DEFAULT_IF_UP |
| bool "First interface which is up" |
| |
| config NET_DEFAULT_IF_ETHERNET |
| bool "Ethernet" |
| depends on NET_L2_ETHERNET |
| |
| config NET_DEFAULT_IF_BLUETOOTH |
| bool "Bluetooth" |
| depends on NET_L2_BT |
| |
| config NET_DEFAULT_IF_IEEE802154 |
| bool "IEEE 802.15.4" |
| depends on NET_L2_IEEE802154 |
| |
| config NET_DEFAULT_IF_OFFLOAD |
| bool "Offloaded interface" |
| depends on NET_OFFLOAD |
| |
| config NET_DEFAULT_IF_DUMMY |
| bool "Dummy testing interface" |
| depends on NET_L2_DUMMY |
| |
| config NET_DEFAULT_IF_CANBUS_RAW |
| bool "Socket CAN interface" |
| depends on NET_L2_CANBUS_RAW |
| |
| config NET_DEFAULT_IF_PPP |
| bool "PPP interface" |
| depends on NET_L2_PPP |
| |
| endchoice |
| |
| config NET_PKT_TIMESTAMP |
| bool "Network packet timestamp support" |
| help |
| Enable network packet timestamp support. This is needed for |
| example in gPTP which needs to know how long it takes to send |
| a network packet. |
| |
| config NET_PKT_TIMESTAMP_THREAD |
| bool "Create TX timestamp thread" |
| default y if NET_L2_PTP |
| depends on NET_PKT_TIMESTAMP |
| help |
| Create a TX timestamp thread that will pass the timestamped network |
| packets to some other module like gPTP for further processing. |
| If you just want to timestamp network packets and get information |
| how long the network packets flow in the system, you can disable |
| the thread support. |
| |
| config NET_PKT_TIMESTAMP_STACK_SIZE |
| int "Timestamp thread stack size" |
| default 1024 |
| depends on NET_PKT_TIMESTAMP_THREAD |
| help |
| Set the timestamp thread stack size in bytes. The timestamp |
| thread waits for timestamped TX frames and calls registered |
| callbacks. |
| |
| config NET_PKT_TXTIME |
| bool "Network packet TX time support" |
| help |
| Enable network packet TX time support. This is needed for |
| when the application wants to set the exact time when the network |
| packet should be sent. |
| |
| config NET_PKT_RXTIME_STATS |
| bool "Network packet RX time statistics" |
| select NET_PKT_TIMESTAMP |
| select NET_STATISTICS |
| depends on (NET_UDP || NET_TCP || NET_SOCKETS_PACKET) && NET_NATIVE |
| help |
| Enable network packet RX time statistics support. This is used to |
| calculate how long on average it takes for a packet to travel from |
| device driver to just before it is given to application. The RX |
| timing information can then be seen in network interface statistics |
| in net-shell. |
| The RX statistics are only calculated for UDP and TCP packets. |
| |
| config NET_PKT_RXTIME_STATS_DETAIL |
| bool "Get extra receive detail statistics in RX path" |
| depends on NET_PKT_RXTIME_STATS |
| help |
| Store receive statistics detail information in certain key points |
| in RX path. This is very special configuration and will increase |
| the size of net_pkt so in typical cases you should not enable it. |
| The extra statistics can be seen in net-shell using "net stats" |
| command. |
| |
| config NET_PKT_TXTIME_STATS |
| bool "Network packet TX time statistics" |
| select NET_PKT_TIMESTAMP |
| select NET_STATISTICS |
| depends on (NET_UDP || NET_TCP || NET_SOCKETS_PACKET) && NET_NATIVE |
| help |
| Enable network packet TX time statistics support. This is used to |
| calculate how long on average it takes for a packet to travel from |
| application to just before it is sent to network. The TX timing |
| information can then be seen in network interface statistics in |
| net-shell. |
| The RX calculation is done only for UDP, TCP or RAW packets, |
| but for TX we do not know the protocol so the TX packet timing is |
| done for all network protocol packets. |
| |
| config NET_PKT_TXTIME_STATS_DETAIL |
| bool "Get extra transmit detail statistics in TX path" |
| depends on NET_PKT_TXTIME_STATS |
| help |
| Store receive statistics detail information in certain key points |
| in TX path. This is very special configuration and will increase |
| the size of net_pkt so in typical cases you should not enable it. |
| The extra statistics can be seen in net-shell using "net stats" |
| command. |
| |
| config NET_PROMISCUOUS_MODE |
| bool "Promiscuous mode support" |
| select NET_MGMT |
| select NET_MGMT_EVENT |
| select NET_L2_ETHERNET_MGMT if NET_L2_ETHERNET |
| help |
| Enable promiscuous mode support. This only works if the network |
| device driver supports promiscuous mode. The user application |
| also needs to read the promiscuous mode data. |
| |
| if NET_PROMISCUOUS_MODE |
| module = NET_PROMISC |
| module-dep = NET_LOG |
| module-str = Log level for promiscuous mode |
| module-help = Enables promiscuous mode to output debug messages. |
| source "subsys/net/Kconfig.template.log_config.net" |
| endif # NET_PROMISCUOUS_MODE |
| |
| config NET_DISABLE_ICMP_DESTINATION_UNREACHABLE |
| bool "Disable destination unreachable ICMP errors" |
| help |
| Suppress the generation of ICMP destination unreachable errors |
| when ports that are not in a listening state receive packets. |
| |
| source "subsys/net/ip/Kconfig.stack" |
| |
| source "subsys/net/ip/Kconfig.mgmt" |
| |
| source "subsys/net/ip/Kconfig.stats" |
| |
| source "subsys/net/ip/Kconfig.debug" |
| |
| endmenu |