nuttx/net/tcp
chao an 64dd7e6376 net/tcp: add Selective-ACK support
Reference:
https://datatracker.ietf.org/doc/html/rfc2018

Iperf2 client/server test on esp32c3:

Drop(1/50):
CONFIG_NET_TCP_DEBUG_DROP_SEND=y
CONFIG_NET_TCP_DEBUG_DROP_SEND_PROBABILITY=50  // Drop probability: 1/50
CONFIG_NET_TCP_DEBUG_DROP_RECV=y
CONFIG_NET_TCP_DEBUG_DROP_RECV_PROBABILITY=50  // Drop probability: 1/50

Drop(1/50) + OFO/SACK:
CONFIG_NET_TCP_DEBUG_DROP_SEND=y
CONFIG_NET_TCP_DEBUG_DROP_SEND_PROBABILITY=50  // Drop probability: 1/50
CONFIG_NET_TCP_DEBUG_DROP_RECV=y
CONFIG_NET_TCP_DEBUG_DROP_RECV_PROBABILITY=50  // Drop probability: 1/50

CONFIG_NET_TCP_OUT_OF_ORDER=y
CONFIG_NET_TCP_SELECTIVE_ACK=y

---------------------------------------------------------
|  TCP Config            | Server | Client |            |
|-------------------------------------------------------|
|  Original              |   12   |     9  |  Mbits/sec |
|  Drop(1/50)            |  0.6   |   0.3  |  Mbits/sec |
|  Drop(1/50) + OFO/SACK |    8   |     8  |  Mbits/sec |
---------------------------------------------------------

Signed-off-by: chao an <anchao@xiaomi.com>
2023-01-18 16:24:09 +08:00
..
Kconfig net/tcp: add Selective-ACK support 2023-01-18 16:24:09 +08:00
Make.defs net: fix the build when CONFIG_NET_TCP_WRITE_BUFFERS is not enabled 2022-05-18 07:54:17 +09:00
tcp_accept.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_appsend.c net/tcp: fix regression of invalid update the rexmit_seq in buffer mode 2022-07-12 11:04:39 +03:00
tcp_backlog.c libc: Move queue.h from include to include/nuttx 2022-09-26 08:04:58 +02:00
tcp_callback.c net/tcp: add out-of-order segment support 2023-01-18 16:24:09 +08:00
tcp_close.c net/tcp: correct behavior of SO_LINGER 2023-01-18 02:47:12 +08:00
tcp_conn.c net/tcp: add out-of-order segment support 2023-01-18 16:24:09 +08:00
tcp_connect.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_devpoll.c net/devif_poll: optimize device buffer alloc in txpoll 2023-01-13 16:41:10 +08:00
tcp_dump.c net: cleanup pvconn reference to avoid confuse 2022-08-26 20:58:11 +08:00
tcp_finddev.c tcp: find bound device when laddr is ANY 2022-11-12 18:36:09 +08:00
tcp_getsockopt.c net/tcp: Use the relative value for keep alive timer 2022-05-18 18:40:41 +03:00
tcp_input.c net/tcp: add Selective-ACK support 2023-01-18 16:24:09 +08:00
tcp_ioctl.c net: Align the prototype of sock_intf_s::si_ioctl with file_operations::ioctl 2022-09-06 22:46:37 +08:00
tcp_ipselect.c net: move device buffer define to common header 2022-10-28 00:32:16 -04:00
tcp_listen.c net/tcp: Remove tcp_listen_initialize 2022-03-12 19:24:17 +02:00
tcp_monitor.c net/soerr: add new _SO_CONN_SETERRNO() macro 2022-11-24 22:57:42 +08:00
tcp_netpoll.c net/soerr: add new _SO_CONN_SETERRNO() macro 2022-11-24 22:57:42 +08:00
tcp_notifier.c sched/wqueue: Change the return type of work_notifier_teardown to void 2022-05-14 00:35:29 +03:00
tcp_recvfrom.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_recvwindow.c net/tcp: add out-of-order segment support 2023-01-18 16:24:09 +08:00
tcp_send_buffered.c net/tcp: add Selective-ACK support 2023-01-18 16:24:09 +08:00
tcp_send_unbuffered.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_send.c net/tcp: add Selective-ACK support 2023-01-18 16:24:09 +08:00
tcp_sendfile.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_seqno.c net/tcp: Avoid starting TCP sequence number 0 2022-11-13 09:09:36 +08:00
tcp_setsockopt.c tcp: move wd_timer from wifi driver to tcp stack 2022-05-28 16:29:51 +08:00
tcp_timer.c net/tcp: correct behavior of SO_LINGER 2023-01-18 02:47:12 +08:00
tcp_txdrain.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp_wrbuffer.c net: consistent the net sem wait naming conversion 2023-01-15 12:31:30 -03:00
tcp.h net/tcp: add Selective-ACK support 2023-01-18 16:24:09 +08:00