zephyr/include/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
..
bt.h
buf.h net: buf: Simplify querying maximum len 2021-02-22 19:33:16 +02:00
can.h net: 6locan: Convert to use k_fifo instead of k_work 2021-05-07 09:46:44 -05:00
capture.h net: doc: Add net_capture API documentation 2021-04-07 12:12:30 -04:00
coap_link_format.h
coap.h net: coap: acknowledgement initialization helper 2021-02-15 10:17:11 +02:00
dhcpv4.h
dns_resolve.h net: dns: add dns_resolve_reconfigure() API 2021-04-29 08:00:09 -04:00
dns_sd.h
dsa.h net: Conversion of k_work API 2021-04-14 07:07:40 -04:00
dummy.h
ethernet_mgmt.h
ethernet_vlan.h
ethernet.h device: rename device_pm_control to pm_control 2021-05-05 18:35:49 -04:00
gptp.h
hostname.h
http_client.h net: http: add numeric http status code to response struct 2021-04-14 18:46:47 +03:00
http_parser_state.h license: add missing SPDX headers 2021-02-11 08:05:16 -05:00
http_parser_url.h license: add missing SPDX headers 2021-02-11 08:05:16 -05:00
http_parser.h license: add missing SPDX headers 2021-02-11 08:05:16 -05:00
ieee802154_mgmt.h net: ieee802154: remove duplicate definition 2021-04-07 14:15:29 +02:00
ieee802154_radio.h net: openthread: add Link Metrics API 2021-05-06 09:57:15 -05:00
ieee802154.h
igmp.h net: ipv4: Add IGMPv2 support 2021-04-29 14:49:55 +03:00
ipv4_autoconf.h
lldp.h
lwm2m_path.h
lwm2m.h net: lwm2m: Add API function to delete object instance 2021-04-29 09:51:54 -04:00
mii.h
mqtt.h
net_config.h drivers: device: do not reuse tag name 'device' 2021-03-22 19:48:14 -04:00
net_conn_mgr.h
net_context.h net: Remove support for CONFIG_NET_CONTEXT_TIMESTAMP option 2021-04-26 10:46:43 +03:00
net_core.h net: Enable running without TX or RX threads 2021-04-27 12:02:19 +03:00
net_event.h net: ipv4: Add IGMPv2 support 2021-04-29 14:49:55 +03:00
net_if.h net: Use k_fifo instead of k_work in RX and TX processing 2021-05-07 09:46:44 -05:00
net_ip.h net: ipv4: Add IGMPv2 support 2021-04-29 14:49:55 +03:00
net_l2.h net: capture: Catch sent and received packets 2021-04-02 07:24:06 -04:00
net_linkaddr.h
net_mgmt.h
net_offload.h
net_pkt.h net: Use k_fifo instead of k_work in RX and TX processing 2021-05-07 09:46:44 -05:00
net_stats.h net: stats: Add IGMP statistics support 2021-04-29 14:49:55 +03:00
net_timeout.h
openthread.h
ppp.h net: Conversion of k_work API 2021-04-14 07:07:40 -04:00
promiscuous.h
ptp_time.h
sntp.h
socket_can.h
socket_net_mgmt.h
socket_offload.h
socket_select.h
socket_types.h
socket.h net: socket: Workaround issue with recent GCC and fcntl macro 2021-04-14 11:10:16 -05:00
socketutils.h
tftp.h
tls_credentials.h
trickle.h net: trickle: Do not initialize a work item from its handler 2021-04-27 19:48:16 +03:00
udp.h
virtual_mgmt.h net: virtual: Add virtual network interface support 2021-03-29 07:40:24 -04:00
virtual.h device: rename device_pm_control to pm_control 2021-05-05 18:35:49 -04:00
websocket.h
wifi_mgmt.h
wifi.h