From: Alexander Chernavin Date: Fri, 22 Oct 2021 10:46:39 +0000 (+0000) Subject: linux-cp: stop signaling read event on every notif X-Git-Tag: v22.10-rc0~309 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F25%2F35525%2F4;p=vpp.git linux-cp: stop signaling read event on every notif Type: improvement Currently, read event signal is sent on every notification message received and added in the queue. With this change, signal read event only when all currently available notification messages are received. Signed-off-by: Alexander Chernavin Change-Id: Ib86d189311ce01f50167e4e97feb99df0292ad96 --- diff --git a/src/plugins/linux-cp/lcp_nl.c b/src/plugins/linux-cp/lcp_nl.c index 02954c362cf..43f5319fc13 100644 --- a/src/plugins/linux-cp/lcp_nl.c +++ b/src/plugins/linux-cp/lcp_nl.c @@ -701,13 +701,6 @@ nl_route_cb (struct nl_msg *msg, void *arg) msg_info->msg = msg; nlmsg_get (msg); - /* notify process node if netlink notification processing is active */ - if (nm->nl_status == NL_STATUS_NOTIF_PROC) - { - vlib_process_signal_event (vlib_get_main (), nl_route_process_node.index, - NL_EVENT_READ, 0); - } - return 0; } @@ -725,6 +718,15 @@ lcp_nl_drain_messages (void) if (err != -NLE_AGAIN) vlib_process_signal_event (vlib_get_main (), nl_route_process_node.index, NL_EVENT_ERR, 0); + else + { + /* If netlink notification processing is active, signal process node + * there were notifications read + */ + if (nm->nl_status == NL_STATUS_NOTIF_PROC) + vlib_process_signal_event ( + vlib_get_main (), nl_route_process_node.index, NL_EVENT_READ, 0); + } return err; }