# 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_L2_RAW_CHANNEL bool default n if !NET_L2_RAW_CHANNEL 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_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_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_DEBUG_TCP bool "Debug TCP" default n depends on NET_TCP && NET_LOG help Enables TCP handler output debug messages config NET_TCP_TIME_WAIT bool "Enable TCP TIME_WAIT timeouts" depends on NET_TCP default n help Officially, the TCP standard requires a 4 minute timeout on connection close before that particular port pair can be used again. This requires that the net_context and net_tcp structs persist for the full duration, so has non-trivial memory costs and is optional. Modern systems with well-randomized sequence numbers don't need this, but it is present for specification compliance where needed. config NET_TCP_2MSL_TIME int "How long to wait in TIME_WAIT (in seconds)" depends on NET_TCP_TIME_WAIT default 240 help The value is in seconds. config NET_UDP bool "Enable UDP" default y help The value depends on your network needs. 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. choice prompt "Use SLIP connectivity with QEMU" optional default NET_SLIP_TUN help The SLIP support is only used when the application is run inside QEMU and the network peer is run in your host. The SLIP support is only used when the application is run inside QEMU and the network peer is run in your host. The host needs to have tunslip running in order to receive and send network packets via the SLIP driver. The SLIP driver Kconfig options can be tweaked in drivers section. Options are provided to communicate with QEMU via a TUN driver, the default, as it requires less configuration in the host side, or via a TAP driver. config NET_SLIP_TUN bool "TUN SLIP driver" select SLIP select UART_PIPE select UART_INTERRUPT_DRIVEN select NET_L2_DUMMY help The host needs to have tunslip running in order to receive and send network packets via the SLIP driver. Choose this if unsure. config NET_SLIP_TAP bool "TAP SLIP driver" select SLIP select UART_PIPE select UART_INTERRUPT_DRIVEN select SLIP_TAP help SLIP TAP support is necessary when testing IPv4/ARP. The host needs to have tunslip with TAP support running in order to communicate via the SLIP driver. endchoice 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_L2_RAW_CHANNEL config NET_PKT_RX_COUNT int "How many packet receives can be pending at the same time" 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 2 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 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 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. config NET_BUF_USER_DATA_SIZE int "Size of user_data reserved" default 0 default 4 if NET_L2_BLUETOOTH help This is for drivers to set how much user_data shall be included in each network data fragment. Example: For Bluetooth, the user_data shall be at least 4 bytes as that is used for identifying the type of data they are carrying. 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" source "subsys/net/ip/Kconfig.app" endmenu