blob: 0b8a9d1ae4a13ee0c3844874f052e308c47b998e [file] [log] [blame]
# 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_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
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_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_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) * 200)
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_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_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_BT
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"
endmenu