session: async rx event notifications 58/37858/46
authorFlorin Coras <fcoras@cisco.com>
Thu, 22 Dec 2022 23:03:44 +0000 (15:03 -0800)
committerDave Barach <vpp@barachs.net>
Wed, 9 Aug 2023 18:45:26 +0000 (18:45 +0000)
commit0242d30fc717aeacb758281dad8e5b2e56bf6709
treeeb7addb00bbe78061fa58442a6e9bdbd7f3e181c
parent6d733a93b2eb9c16196ee17d5cdc77db21589571
session: async rx event notifications

Move from synchronous flushing of io and ctrl events from transports to
applications to an async model via a new session_input input node that
runs in interrupt mode. Events are coalesced per application worker.

On the one hand, this helps by minimizing message queue locking churn.
And on the other, it opens the possibility for further optimizations of
event message generation, obviates need for rx rescheduling rpcs and is
a first step towards a fully async data/io rx path.

Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Id6bebcb65fc9feef8aa02ddf1af6d9ba6f6745ce
23 files changed:
src/plugins/hs_apps/echo_client.c
src/plugins/hs_apps/echo_server.c
src/plugins/http/http.c
src/plugins/quic/quic.c
src/plugins/srtp/srtp.c
src/plugins/unittest/session_test.c
src/svm/message_queue.c
src/svm/message_queue.h
src/vnet/CMakeLists.txt
src/vnet/session/application.c
src/vnet/session/application.h
src/vnet/session/application_local.c
src/vnet/session/application_worker.c
src/vnet/session/segment_manager.c
src/vnet/session/session.c
src/vnet/session/session.h
src/vnet/session/session_api.c
src/vnet/session/session_input.c [new file with mode: 0644]
src/vnet/session/session_node.c
src/vnet/session/session_types.h
src/vnet/tcp/tcp_input.c
src/vnet/tls/tls.c
src/vnet/udp/udp_input.c