947 lines
31 KiB
Plaintext
947 lines
31 KiB
Plaintext
# 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)"
|
|
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
|