zephyr/subsys/net
Jukka Rissanen bcdc762609 net: Use k_fifo instead of k_work in RX and TX processing
The k_work handler cannot manipulate the used k_work. This means
that it is not easy to cleanup the net_pkt because it contains
k_work in it. Because of this, use k_fifo instead between
RX thread and network driver, and between application and TX
thread.

A echo-server/client run with IPv4 and UDP gave following
results:

Using k_work
------------
TX traffic class statistics:
TC  Priority	Sent pkts	bytes	time
[0] BK (1)	21922		5543071	103 us	[0->41->26->34=101 us]
[1] BE (0)	0		0	-
RX traffic class statistics:
TC  Priority	Recv pkts	bytes	time
[0] BK (0)	0		0	-
[1] BE (0)	21925		6039151	97 us	[0->21->16->37->20=94 us]

Using k_fifo
------------
TX traffic class statistics:
TC  Priority	Sent pkts	bytes	time
[0] BK (1)	15079		3811118	94 us	[0->36->23->32=91 us]
[1] BE (0)	0		0	-
RX traffic class statistics:
TC  Priority	Recv pkts	bytes	time
[0] BK (1)	0		0	-
[1] BE (0)	15073		4150947	79 us	[0->17->12->32->14=75 us]

So using k_fifo gives about 10% better performance with same workload.

Fixes #34690

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2021-05-07 09:46:44 -05:00
..
ip net: Use k_fifo instead of k_work in RX and TX processing 2021-05-07 09:46:44 -05:00
l2 net: ppp: Convert to use k_fifo instead of k_work 2021-05-07 09:46:44 -05:00
lib net: openthread: add Link Metrics API 2021-05-06 09:57:15 -05:00
buf.c clock: renmae z_timeout_end_calc -> sys_clock_timeout_end_calc 2021-03-19 11:22:17 -04:00
CMakeLists.txt
hostname.c
Kconfig Bluetooth: controller: ISO adaptation layer, Rx unframed 2021-04-14 18:17:09 +02:00
Kconfig.hostname
Kconfig.template.log_config.default.net
Kconfig.template.log_config.net