| # Kconfig - IP stack config |
| |
| # |
| # Copyright (c) 2016 Intel Corporation. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| |
| menu "IP stack" |
| depends on NETWORKING |
| |
| # Hidden option |
| config NET_RAW_MODE |
| bool |
| default n |
| 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 |
| |
| 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. |
| |
| source "subsys/net/ip/Kconfig.debug" |
| |
| source "subsys/net/ip/Kconfig.ipv6" |
| |
| source "subsys/net/ip/Kconfig.ipv4" |
| |
| config NET_SHELL |
| bool "Enable network shell utilities" |
| default n |
| select CONSOLE_SHELL |
| help |
| Activate shell module that provides network commands like |
| ping to the console. |
| |
| config NET_TC_TX_COUNT |
| int "How many Tx traffic classes to have for each network device" |
| default 1 |
| range 1 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. |
| |
| config NET_TC_RX_COUNT |
| int "How many Rx traffic classes to have for each network device" |
| default 1 |
| range 1 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. |
| |
| config NET_TX_DEFAULT_PRIORITY |
| int "Default network 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_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 n |
| default y if NET_IPV6_NBR_CACHE |
| |
| config NET_ROUTING |
| bool "IP routing between interfaces" |
| default n |
| depends on NET_ROUTE |
| help |
| Allow IPv6 routing between different network interfaces and |
| technologies. |
| |
| 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 |
| depends on NET_ROUTE |
| default n |
| |
| 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 "Enable TCP" |
| default n |
| 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. |
| |
| config NET_DEBUG_TCP |
| bool "Debug TCP" |
| default n |
| depends on NET_TCP && NET_LOG |
| help |
| Enables TCP handler output debug messages |
| |
| config NET_TCP_BACKLOG_SIZE |
| int "Number of simultaneous incoming TCP connections" |
| depends on NET_TCP |
| default 1 |
| range 1 128 |
| help |
| The number of simultaneous TCP connection attempts, i.e. outstanding |
| TCP connections waiting for initial ACK. |
| |
| config NET_TCP_TIME_WAIT_DELAY |
| int "How long to wait in TIME_WAIT state (in milliseconds)" |
| depends on NET_TCP |
| default 250 |
| 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 mis-delivery |
| 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 250ms 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_UDP |
| bool "Enable UDP" |
| default y |
| 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_DEBUG_UDP |
| bool "Debug UDP" |
| default n |
| depends on NET_UDP && NET_LOG |
| help |
| Enables UDP handler output debug messages |
| |
| config NET_MAX_CONN |
| int "How many network connections are supported" |
| depends on NET_UDP || NET_TCP |
| default 4 |
| default 8 if NET_IPV6 && NET_IPV4 |
| help |
| The value depends on your network needs. The value |
| should include both UDP and TCP connections. |
| |
| config NET_CONN_CACHE |
| bool "Cache network connections" |
| depends on NET_UDP || NET_TCP |
| default n |
| help |
| Caching takes slight more memory but will speedup connection |
| handling of 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 "Enable net_buf TX pool / context" |
| default n |
| 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" |
| default n |
| help |
| It is possible to prioritize network traffic. This requires |
| also traffic class support to work as expected. |
| |
| config NET_TEST |
| bool "Network Testing" |
| default n |
| help |
| Used for self-contained networking tests that do not require a |
| network device. |
| |
| config NET_SLIP_TAP |
| bool "TAP SLIP driver" |
| select SLIP |
| select UART_PIPE |
| select UART_INTERRUPT_DRIVEN |
| select SLIP_TAP |
| default n |
| 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 "Enable Trickle library" |
| default n |
| help |
| Normally this is enabled automatically if needed, |
| so say 'n' if unsure. |
| |
| config NET_DEBUG_TRICKLE |
| bool "Debug Trickle algorithm" |
| default n |
| depends on NET_TRICKLE && NET_LOG |
| help |
| Enables Trickle library output debug messages |
| |
| endif # NET_RAW_MODE |
| |
| config NET_PKT_RX_COUNT |
| int "How many packet receives can be pending at the same time" |
| default 4 |
| default 14 if NET_L2_ETHERNET |
| 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 4 |
| default 14 if NET_L2_ETHERNET |
| 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 16 |
| default 36 if NET_L2_ETHERNET |
| 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 16 |
| default 36 if NET_L2_ETHERNET |
| help |
| Each data buffer will occupy CONFIG_NET_BUF_DATA_SIZE + smallish |
| header (sizeof(struct net_buf)) amount of data. |
| |
| config NET_BUF_DATA_SIZE |
| int "Size of each network data fragment" |
| default 128 |
| default 125 if NET_L2_IEEE802154 |
| help |
| This value tells what is the size of the data fragment that is |
| received from the network. |
| Example: For IEEE 802.15.4, the network packet is 127 bytes long, |
| which leaves in worst case 81 bytes for user data (MTU). |
| In order to be able to receive at least full IPv6 packet which |
| has a size of 1280 bytes, the one should allocate 16 fragments here. |
| |
| 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_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_L2_OFFLOAD |
| |
| config NET_DEFAULT_IF_DUMMY |
| bool "Dummy testing interface" |
| depends on NET_L2_DUMMY |
| |
| endchoice |
| |
| source "subsys/net/ip/Kconfig.stack" |
| |
| source "subsys/net/ip/l2/Kconfig" |
| |
| source "subsys/net/ip/Kconfig.mgmt" |
| |
| source "subsys/net/ip/Kconfig.rpl" |
| |
| source "subsys/net/ip/Kconfig.stats" |
| |
| endmenu |