From 30fdf39628c095ed4a5d607079c1b18294050c56 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 2 Dec 2020 21:14:56 -0800 Subject: udp: avoid locking connected udp sessions on rx Type: improvement Signed-off-by: Florin Coras Change-Id: I52aa2322980b51cfc0b282fb37d7f63d30777dee --- src/vnet/udp/udp_input.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/vnet/udp/udp_input.c') diff --git a/src/vnet/udp/udp_input.c b/src/vnet/udp/udp_input.c index 523ab029bd4..c76c1b796bd 100644 --- a/src/vnet/udp/udp_input.c +++ b/src/vnet/udp/udp_input.c @@ -134,7 +134,8 @@ udp_connection_enqueue (udp_connection_t * uc0, session_t * s0, { int wrote0; - clib_spinlock_lock (&uc0->rx_lock); + if (!(uc0->flags & UDP_CONN_F_CONNECTED)) + clib_spinlock_lock (&uc0->rx_lock); if (svm_fifo_max_enqueue_prod (s0->rx_fifo) < hdr0->data_length + sizeof (session_dgram_hdr_t)) @@ -163,7 +164,8 @@ udp_connection_enqueue (udp_connection_t * uc0, session_t * s0, unlock_rx_lock: - clib_spinlock_unlock (&uc0->rx_lock); + if (!(uc0->flags & UDP_CONN_F_CONNECTED)) + clib_spinlock_unlock (&uc0->rx_lock); } always_inline session_t * -- cgit 1.2.3-korg