From 32881935bb82b009528ba5a930b4399bad26abfd Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Mon, 6 Feb 2023 13:30:13 -0800 Subject: vcl: improve vls handling of shared listeners Type: improvement Signed-off-by: Florin Coras Change-Id: I1970408de52e53d24cea06b3ae0cc68a38cbc97a --- src/vcl/vcl_locked.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/vcl/vcl_locked.c') diff --git a/src/vcl/vcl_locked.c b/src/vcl/vcl_locked.c index f6df0fbd5b7..8b0c66d4bdd 100644 --- a/src/vcl/vcl_locked.c +++ b/src/vcl/vcl_locked.c @@ -670,8 +670,19 @@ vls_listener_wrk_is_active (vcl_locked_session_t * vls, u32 wrk_index) static void vls_listener_wrk_start_listen (vcl_locked_session_t * vls, u32 wrk_index) { - vppcom_session_listen (vls_to_sh (vls), ~0); - vls_listener_wrk_set (vls, wrk_index, 1 /* is_active */ ); + vcl_worker_t *wrk; + vcl_session_t *ls; + + wrk = vcl_worker_get (wrk_index); + ls = vcl_session_get (wrk, vls->session_index); + + /* Listen request already sent */ + if (ls->flags & VCL_SESSION_F_PENDING_LISTEN) + return; + + vcl_send_session_listen (wrk, ls); + + vls_listener_wrk_set (vls, wrk_index, 1 /* is_active */); } static void -- cgit 1.2.3-korg