# TCP options

# 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

menuconfig NET_TCP
	bool "TCP"
	depends on NET_IP
	help
	  The value depends on your network needs.

if NET_TCP

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_WORKQ_STACK_SIZE
	int "TCP work queue thread stack size"
	default 1200 if X86
	default 1024
	depends on NET_TCP
	help
	  Set the TCP work queue thread stack size in bytes.

config NET_TCP_WORKER_PRIO
	int "Priority of the TCP work queue"
	default 2
	depends on NET_TCP
	help
	  Set the priority of the TCP worker queue, that handles all
	  transmission and maintenance within the TCP stack.
	  Value 0 = highest priortity.
	  When CONFIG_NET_TC_THREAD_COOPERATIVE = y, lowest priority is
	  CONFIG_NUM_COOP_PRIORITIES-1 else lowest priority is
	  CONFIG_NUM_PREEMPT_PRIORITIES-1.
	  Make sure the priority is lower than lower layer TX threads to
	  avoid the TCP stack consume all net_bufs before transferring
	  execution to the lower layer network stack, with a high risk of
	  running out of net_bufs.

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 "[DEPRECATED] How long to wait for ACK (in milliseconds)"
	depends on NET_TCP
	default 1000
	range 1 $(INT32_MAX)
	help
	  Deprecated. Use CONFIG_NET_TCP_INIT_RETRANSMISSION_TIMEOUT and
	  CONFIG_NET_TCP_RETRY_COUNT to control the total timeout at the TCP
	  level.

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_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 further the more
	  retransmissions occur.

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 -ETIMEDOUT error code and the context is dereferenced.

config NET_TCP_MAX_SEND_WINDOW_SIZE
	int "Maximum sending window size to use"
	depends on NET_TCP
	default 0
	range 0 $(UINT16_MAX)
	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 $(UINT16_MAX)
	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_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_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 triggered to avoid having to wait for
	  the retransmit timer to elapse.

config NET_TCP_CONGESTION_AVOIDANCE
	bool "Implement a congestion avoidance algorithm in TCP"
	depends on NET_TCP
	default y
	help
	  To avoid overstressing a link reduce the transmission rate as soon as
	  packets are starting to drop.

config NET_TCP_KEEPALIVE
	bool "TCP keep-alive support"
	depends on NET_TCP
	help
	  Enabling this option allows the TCP stack to send periodic TCP
	  keep-alive probes. Enables SO_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL
	  and TCP_KEEPCNT options processing.

config NET_TCP_KEEPIDLE_DEFAULT
	int "TCP_KEEPIDLE default value"
	depends on NET_TCP_KEEPALIVE
	default 7200
	help
	  The time (in seconds) the connection needs to remain idle before TCP
	  starts sending keepalive probes, if the socket option SO_KEEPALIVE has
	  been set on this socket.

config NET_TCP_KEEPINTVL_DEFAULT
	int "TCP_KEEPINTVL default value"
	depends on NET_TCP_KEEPALIVE
	default 75
	help
	  The time (in seconds) between individual keepalive probes.

config NET_TCP_KEEPCNT_DEFAULT
	int "TCP_KEEPCNT default value"
	depends on NET_TCP_KEEPALIVE
	default 9
	help
	  The maximum number of keepalive probes TCP should send before dropping
	  the connection.

config NET_TCP_ISN_RFC6528
	bool "Use ISN algorithm from RFC 6528"
	default y
	depends on NET_TCP
	depends on PSA_WANT_ALG_SHA_256
	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_TCP_REJECT_CONN_WITH_RST
	bool "Reject connection attempts on unbound TCP ports with RST"
	default y
	help
	  If enabled, TCP stack will reject connection attempts on unbound ports
	  with TCP RST packet.

config NET_TCP_IPV6_ND_REACHABILITY_HINT
	bool "Provide a reachability hint for IPv6 Neighbor Discovery"
	depends on NET_TCP
	depends on NET_IPV6_ND
	help
	  If enabled, TCP stack will inform the IPv6 Neighbor Discovery process
	  about the active link to a specific neighbor by signaling recent
	  "forward progress" event as described in RFC 4861.

endif # NET_TCP
