nuttx/net
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
..
arp net: arp: Fix a potential bug in arp_notify() 2021-03-31 12:23:35 -05:00
bluetooth libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
can sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
devif devif_poll_tcp_connections: Fix a comment typo 2021-05-31 01:37:51 -05:00
icmp net: Rename IP_TTL to IP_TTL_DEFAULT 2021-07-12 16:30:37 -03:00
icmpv6 Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
ieee802154 libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
igmp Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
inet net/socketpair: move socketpair implement into socket internal 2021-07-08 03:05:43 -05:00
ipforward Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
local net/local: add AF_[UNIX|LOCAL] socketpair support 2021-07-08 03:05:43 -05:00
mld Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
neighbor Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
netdev net/inet: add support of FIONREAD 2021-07-05 06:20:52 -05:00
netlink netlink: fix compile error when enable netlink 2021-07-01 06:55:57 -05:00
pkt sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
procfs Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
route Fix typos (and nxstyle errors) 2021-03-21 21:51:14 +01:00
rpmsg rpmsg_socket: fix rpmsg_socket_device_destroy() multi-access 2021-07-04 06:23:07 -05:00
sixlowpan net: Rename IP_TTL to IP_TTL_DEFAULT 2021-07-12 16:30:37 -03:00
socket net/socketpair: move socketpair implement into socket internal 2021-07-08 03:05:43 -05:00
tcp tcp_send_buffered: throttle IOB allocations for send 2021-07-14 15:08:18 +08:00
udp net: Rename IP_TTL to IP_TTL_DEFAULT 2021-07-12 16:30:37 -03:00
usrsock usrsock/recv: guarantee all data is received before close 2021-07-07 08:40:55 +09:00
utils NuttX: Gregory Nutt: update licenses to Apache 2021-04-03 04:20:31 -07:00
Kconfig net/socket: add SO_RCVBUF support 2021-07-06 01:44:55 -05:00
Makefile net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
net_initialize.c Remove the empty xxx_initialize functions 2021-03-03 08:21:04 +00:00
README.txt net/loopback: Move g_lo_* global variable to libc/net/ 2020-03-30 09:47:28 -06:00

README
======

Directory Structure
===================

  nuttx/
   |
   `- net/
       |
       +- arp        - Address resolution protocol (IPv4)
       +- bluetooth  - PF_BLUETOOTH socket interface
       +- devif      - Stack/device interface layer
       +- icmp       - Internet Control Message Protocol (IPv4)
       +- icmpv6     - Internet Control Message Protocol (IPv6)
       +- ieee802154 - PF_IEEE802154 socket interface
       +- inet       - PF_INET/PF_INET6 socket interface
       +- ipforward  - IP forwarding logic
       +- local      - Unix domain (local) sockets
       +- mld        - Multicast Listener Discovery (MLD)
       +- neighbor   - Neighbor Discovery Protocol (IPv6)
       +- netdev     - Socket network device interface
       +- netlink    - Netlink IPC socket interface
       +- pkt        - "Raw" packet socket support
       +- sixlowpan  - 6LoWPAN implementation
       +- socket     - BSD socket interface
       +- route      - Routing table support
       +- tcp        - Transmission Control Protocol
       +- udp        - User Datagram Protocol
       +- usrsock    - User socket API for user-space networking stack
       `- utils      - Miscellaneous utility functions

    +-------------------------------------------------------------------++------------------------+
    |                     Application layer                             || usrsock daemon         |
    +-------------------------------------------------------------------++------------------------+
    +-------------------------------------------------------------------++----------------+ +-----+
    |                   Socket layer (socket/)                          || /dev/usrsock   | |     |
    +-------------------------------------------------------------------++----------------+ |     |
    +------------++--------------------------------------------------++-------------------+ |     |
    |  Network   || Protocol stacks (arp, ipv6, icmp, pkt, tcp, udp) || usrsock/          | |     |
    |   Device   |+--------------------------------------------------++-------------------+ |     |
    | Interface  |+------------------------------------++---------------------------------+ |     |
    | (netdev/)  ||  Network Device Interface (devif/) || Utilities                       | |     |
    +------------++------------------------------------++---------------------------------+ |     |
    +----------------------------------------------------------------+                      |     |
    |                    Network Device Drivers                      |                      | HAL |
    +----------------------------------------------------------------+                      +-----+
    +----------------------------------------------------------------+ +--------------------------+
    |                    Networking Hardware                         | |  Hardware TCP/IP Stack   |
    +----------------------------------------------------------------+ +--------------------------+