nuttx/net
Alexander Lunev 36fbedcbfc net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO.
In case of enabled packet forwarding mode, packets were forwarded in a reverse order
because of LIFO behavior of the connection event list.
The issue exposed only during high network traffic. Thus the event list started to grow
that resulted in changing the order of packets inside of groups of several packets
like the following: 3, 2, 1, 6, 5, 4, 8, 7 etc.

Remarks concerning the connection event list implementation:
* Now the queue (list) is FIFO as it should be.
* The list is singly linked.
* The list has a head pointer (inside of outer net_driver_s structure),
  and a tail pointer is added into outer net_driver_s structure.
* The list item is devif_callback_s structure.
  It still has two pointers to two different list chains (*nxtconn and *nxtdev).
* As before the first argument (*dev) of the list functions can be NULL,
  while the other argument (*list) is effective (not NULL).
* An extra (*tail) argument is added to devif_callback_alloc()
  and devif_conn_callback_free() functions.
* devif_callback_alloc() time complexity is O(1) (i.e. O(n) to fill the whole list).
* devif_callback_free() time complexity is O(n) (i.e. O(n^2) to empty the whole list).
* devif_conn_event() time complexity is O(n).
2021-09-18 21:01:39 -05:00
..
arp net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
bluetooth net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
can net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
devif net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
icmp net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
icmpv6 net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
ieee802154 net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05: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 net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
local net/local: add FIONSPACE support 2021-09-15 12:11:32 +08:00
mld Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
neighbor Back in 2007, an early network implementation was developed for NuttX. This early development was inspired largely by uIP 1.0 and recognition of that was noted in the then BSD license headers. Over the next 14 years, a new, much more advanced, original network was developed for NuttX. However, some references to Adam Dunkels were still present in the file headers. 2021-09-17 21:49:44 -05:00
netdev net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
netlink netlink: fix compile error when enable netlink 2021-07-01 06:55:57 -05:00
pkt net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
procfs libc: Rename match to fnmatch 2021-08-02 08:23:35 -03:00
route Fix typos (and nxstyle errors) 2021-03-21 21:51:14 +01:00
rpmsg rpmsg_socket: add prefix "rpmsg-socket" for the name of rpmsg endpoint 2021-09-12 11:32:05 +08:00
sixlowpan net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
socket author: UVC Ingenieure : update licenses to Apache 2021-09-15 15:57:55 +08:00
tcp net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
udp net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
usrsock net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-18 21:01:39 -05:00
utils net: utils: Remove critical section for SMP in net_lock.c 2021-09-06 14:57:08 +08:00
Kconfig net/socket: add SO_SNDBUF support 2021-07-20 20:24:58 -07: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

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   |
    +----------------------------------------------------------------+ +--------------------------+