nuttx/net
Petteri Aimonen 06e5b661ed tcp: Recover from iob shortage with TCP_WRITE_BUFFERS
When CONFIG_NET_TCP_WRITE_BUFFERS is enabled, iobs are used for
both queuing data from application, and for assembling packets
for sending. If there is a system-wide shortage of iobs, it could
happen that there is not enough free space to form any packets
to send. The buffers allocated for TCP data also can't be released
until the packet is sent.

Normally this should be avoided by setting suitable values for
CONFIG_IOB_NBUFFERS and CONFIG_IOB_THROTTLE. The default values
are ok for light usage, but can run out when using multiple
simultaneous TCP streams.

Before this commit, iob shortage would cause TCP connections to
get stuck and eventually timeout. With this change, TCP stack
sends smaller packets, eventually freeing some buffers from the
write queue.
2023-12-15 20:12:13 -08:00
..
arp net/arp: arp should depends on MM_IOB 2023-09-12 16:24:52 +08:00
bluetooth net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
can poll: pollsetup should notify only one fd passd by caller 2023-11-21 09:07:17 +01:00
devif udp: Add support for SO_TIMESTAMP 2023-11-18 03:10:29 -08:00
icmp poll: pollsetup should notify only one fd passd by caller 2023-11-21 09:07:17 +01:00
icmpv6 ipv6: Fix source address with many addresses in same network 2023-12-13 06:13:25 -08:00
ieee802154 net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
igmp igmp: call IFF_SET_IPv4 when igmp_send 2023-11-16 07:29:48 -08:00
inet ipv6: Fix source address with many addresses in same network 2023-12-13 06:13:25 -08:00
ipforward build: add initial cmake build system 2023-07-08 13:50:48 +08:00
ipfrag net/ipfrag:Fixed ref not initializing warning issue 2023-07-26 08:36:04 -03:00
local poll: pollsetup should notify only one fd passd by caller 2023-11-21 09:07:17 +01:00
mld net: Support multiple IPv6 address per netdev 2023-11-07 19:30:36 +08:00
nat mm/alloc: remove all unnecessary cast for alloc 2023-08-30 14:34:20 +08:00
neighbor net: Support multiple IPv6 address per netdev 2023-11-07 19:30:36 +08:00
netdev net/netdev: Modify the logic for setting the IFF_RUNNING status of interfaces. 2023-12-15 18:24:23 -08:00
netfilter build: add initial cmake build system 2023-07-08 13:50:48 +08:00
netlink Remove @ and % tag from all comments 2023-12-11 17:00:10 -03:00
pkt net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
procfs net/procfs: Support printing multiple IPv6 address per netdev 2023-11-07 19:30:36 +08:00
route net: Support multiple IPv6 address per netdev 2023-11-07 19:30:36 +08:00
rpmsg poll: pollsetup should notify only one fd passd by caller 2023-11-21 09:07:17 +01:00
sixlowpan net: Support multiple IPv6 address per netdev 2023-11-07 19:30:36 +08:00
socket udp: Add support for SO_TIMESTAMP 2023-11-18 03:10:29 -08:00
tcp tcp: Recover from iob shortage with TCP_WRITE_BUFFERS 2023-12-15 20:12:13 -08:00
udp ipv6: Fix source address with many addresses in same network 2023-12-13 06:13:25 -08:00
usrsock poll: pollsetup should notify only one fd passd by caller 2023-11-21 09:07:17 +01:00
utils net/utils: Switch argument order of net_ipv6_pref2mask 2023-11-07 19:30:36 +08:00
CMakeLists.txt build: add initial cmake build system 2023-07-08 13:50:48 +08:00
Kconfig udp: Add support for SO_TIMESTAMP 2023-11-18 03:10:29 -08:00
Makefile Support fragmentation and reassembly 2023-01-17 14:01:37 +08:00
net_initialize.c net: Reoder the initialize sequence(mac->ip->tcp/udp) 2022-03-12 19:24:17 +02:00