nuttx/net/tcp
YAMAMOTO Takashi 09f3a1ec8e tcp_send_buffered: throttle IOB allocations for send
Consider a bi-directional TCP connection:

1. we use all IOBs for tx queue
2. we advertize zero recv window because we have no free IOBs
3. if the peer tcp does the same thing,
   both sides advertize zero window and can not drain the tx queue.

For a similar stall to happen, the peer doesn't need to be
a naive tcp implementation like nuttx. A naive application blocking
on send() without draining its read buffer is enough.
(Probably such an application should be fixed to drain rx even
when tx is full. However, it's another story.)

This commit avoids the situation by prevent tx from grabbing
the all IOBs in the first place. (assuming CONFIG_IOB_THROTTLE > 0)
2021-07-14 15:08:18 +08:00
..
Kconfig net/tcp: add window scale support 2021-07-07 03:55:41 -05:00
Make.defs net/inet: add support of FIONREAD 2021-07-05 06:20:52 -05:00
tcp_accept.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_appsend.c tcp: window update improvements 2021-06-13 21:20:24 -05:00
tcp_backlog.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_callback.c tcp: simplify readahead 2021-06-30 06:22:14 +09:00
tcp_close.c tcp_close: Fix a race with passive close 2021-07-02 13:54:15 +09:00
tcp_conn.c net/socket: add SO_RCVBUF support 2021-07-06 01:44:55 -05:00
tcp_connect.c net/tcp/handshake: send the SYN immediately. 2020-12-18 14:16:11 +09:00
tcp_devpoll.c Standardization of some function headers. 2018-03-13 09:52:27 -06:00
tcp_finddev.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_getsockopt.c net/tcp: only print the error when disable the TCP_NODELAY 2021-07-13 09:44:19 -03:00
tcp_input.c net/tcp: add window scale support 2021-07-07 03:55:41 -05:00
tcp_ioctl.c net/inet: add support of FIONREAD 2021-07-05 06:20:52 -05:00
tcp_ipselect.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_listen.c Run codespell -w with the latest dictonary again 2020-02-23 22:27:46 +01:00
tcp_monitor.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_netpoll.c tcp: simplify readahead 2021-06-30 06:22:14 +09:00
tcp_notifier.c tcp: simplify readahead 2021-06-30 06:22:14 +09:00
tcp_recvfrom.c tcp: simplify readahead 2021-06-30 06:22:14 +09:00
tcp_recvwindow.c net/tcp: change all window relative value type to uint32_t 2021-07-07 03:55:41 -05:00
tcp_send_buffered.c tcp_send_buffered: throttle IOB allocations for send 2021-07-14 15:08:18 +08:00
tcp_send_unbuffered.c Attempt to fix race condition reported in issue #3647 2021-07-04 08:54:15 -05:00
tcp_send.c net: Rename IP_TTL to IP_TTL_DEFAULT 2021-07-12 16:30:37 -03:00
tcp_sendfile.c net/tcp: tcp_sendfile need restore the file location at the end 2021-07-12 05:20:45 -07:00
tcp_seqno.c net/: Fix alignment and spacing problems found by tools/nxstyle. 2019-07-02 18:02:23 -06:00
tcp_setsockopt.c net/tcp: only print the error when disable the TCP_NODELAY 2021-07-13 09:44:19 -03:00
tcp_timer.c net/tcp: reset the connection ref count before tcp_free() 2021-03-22 10:55:30 +09:00
tcp_txdrain.c sched: Don't include nuttx/sched.h inside sched.h 2021-05-24 12:11:53 +09:00
tcp_wrbuffer_dump.c net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
tcp_wrbuffer.c tcp_send_buffered: throttle IOB allocations for send 2021-07-14 15:08:18 +08:00
tcp.h tcp_send_buffered: throttle IOB allocations for send 2021-07-14 15:08:18 +08:00