nuttx/include
Alexander Lunev eafe6e50ac 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).

Change-Id: I1123657f9a591b29f2a7546691d58dff58896a18
Signed-off-by: chao.an <anchao@xiaomi.com>
2021-09-22 19:30:52 +08:00
..
arpa netinet: move the byte ordering convert functions to "netinet/in.h" 2021-06-09 12:04:25 -05:00
cxx libc/pty: Make ptsname[_r] support PSEUDOTERM_BSD config too 2021-05-08 20:49:11 +08:00
net net: Add if_nameindex and if_freenameindex API 2021-06-26 19:45:21 -07:00
netinet netinet: move the byte ordering convert functions to "netinet/in.h" 2021-06-09 12:04:25 -05:00
netpacket Add include header file <sys/types.h> to rpmsg.h. 2021-07-06 05:23:46 -05:00
nuttx net/devif/devif_callback.c: corrected the connection event list to work as FIFO instead of LIFO. 2021-09-22 19:30:52 +08:00
sys sys/socket/scm: add more socket message control helper 2021-09-02 22:46:41 +08:00
.gitignore
aio.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
alloca.h
assert.h libc/assert: Reference the expression in all case 2021-04-06 14:47:51 +08:00
byteswap.h byteswap.h: add byteswap.h header file 2021-08-11 16:49:39 +08:00
crc8.h Increase the function of crc8 to use custom polynomials 2021-07-06 09:20:56 +08:00
crc16.h
crc32.h
crc64.h
ctype.h libc: Implement local_t related functions 2021-08-02 09:48:47 +08:00
debug.h debug: allow customize EXTRA_FMT 2021-08-24 12:26:19 +08:00
dirent.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
dlfcn.h
dmalloc.h mm: Add dmalloc wrapper layer and enable dmalloc module. 2021-07-10 05:04:56 -07:00
dsp.h libdsp: fix typos 2021-04-01 01:24:12 -05:00
dspb16.h libdsp/fixed16: add openloop handler 2021-04-01 14:54:33 -03:00
elf.h
elf32.h
elf64.h
endian.h endian.h: add prefix for __LITTLE/__BIG_ENDIAN, __BYTE_ODRER 2021-08-11 17:58:17 +08:00
errno.h errno: use staic errno to replace tl_errno before tls initialization 2021-09-09 21:18:32 +08:00
execinfo.h sched/backtrace: add sched_backtrace support 2021-08-18 19:36:38 +08:00
fcntl.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
fixedmath.h
fnmatch.h libc: Rename match to fnmatch 2021-08-02 12:02:39 +08:00
ftw.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
getopt.h Implement getopt_long() and getopt_long_only() 2021-04-01 23:06:23 -05:00
glob.h libc/misc: add lib_glob. 2021-08-26 16:57:07 +08:00
grp.h
hex2bin.h Rename LIB_ to LIBC_ for all libc Kconfig 2021-08-09 21:03:17 +08:00
inttypes.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
iso646.h
langinfo.h libc: Add the empty nl_langinfo implementation 2021-08-02 09:49:11 +08:00
libgen.h
libintl.h libc: Implement gettext function 2021-08-04 14:02:16 +08:00
limits.h libc: Implement ttyname and ttyname_r 2021-07-09 18:23:34 -03:00
locale.h libc: Reorder LC_XXX as Linux 2021-08-02 09:49:05 +08:00
lzf.h
malloc.h mm: Support malloc_size function 2021-07-04 18:53:44 -03:00
mqueue.h
netdb.h libc/rexec: support remote execution 2021-08-31 10:19:09 +08:00
nl_types.h libc: Support message catalog function 2021-08-02 19:47:20 +08:00
nxflat.h
poll.h
pthread.h sched: Don't include nuttx/sched.h inside sched.h 2021-06-13 00:25:26 -07:00
pty.h libc: Implement openpty function 2021-05-17 19:58:06 +08:00
pwd.h libc/pwd: Add NSS_BUFLEN_PASSWD macro 2021-05-17 19:58:28 +08:00
queue.h
resolv.h
sched.h sched/backtrace: add sched_backtrace support 2021-08-18 19:36:38 +08:00
semaphore.h sched: Don't include nuttx/sched.h inside sched.h 2021-06-13 00:25:26 -07:00
signal.h signal: Fix docs and comments related to SIGWORK and its config 2021-06-30 21:22:49 -05:00
spawn.h Rename LIB_ to LIBC_ for all libc Kconfig 2021-08-09 21:03:17 +08:00
stdbool.h
stddef.h stddef: Let offset be defined from toolchain 2021-08-28 09:39:32 +08:00
stdint.h
stdio.h lib_vsprintf: Add %pV format support 2021-08-27 11:08:48 +08:00
stdlib.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
stdnoreturn.h
string.h libc/string: fix lib_strchrnul warning. 2021-08-25 15:08:37 +08:00
strings.h libc: Implement local_t related functions 2021-08-02 09:48:47 +08:00
syscall.h
syslog.h
termios.h include/termios: left shift of 1 by 31 places cannot be represented in type 'int' 2021-05-15 09:20:55 -07:00
threads.h
time.h libc: Implement local_t related functions 2021-08-02 09:48:47 +08:00
unistd.h fs: Change off_t and related types to int64_t if long long is supported 2021-08-04 14:06:26 +08:00
utime.h libc: Implement utime on top of utimes 2021-07-10 19:32:48 +08:00
uuid.h
wchar.h libc: Implement local_t related functions 2021-08-02 09:48:47 +08:00
wctype.h libc: Implement local_t related functions 2021-08-02 09:48:47 +08:00