summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2020-11-25 08:44:16 -0800
committerDamjan Marion <dmarion@me.com>2020-11-25 19:02:59 +0000
commite92c946498f544d6d435353eb06aa07fb20e054e (patch)
tree60e27e57cb7e26099bf0ab4fc4e27416d38d4f49
parentbc867c3d2137dab4b1395196c1936233517980ab (diff)
session: add startup option to poll in main
Type: improvement Needed to support multi-worker tests Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I68d5590cece24a744513dc6c324dfb2861a38a94
-rw-r--r--src/plugins/quic/test/test_quic.py4
-rw-r--r--src/vcl/test/test_vcl.py1
-rw-r--r--src/vnet/session/session.c7
-rw-r--r--src/vnet/session/session.h3
4 files changed, 11 insertions, 4 deletions
diff --git a/src/plugins/quic/test/test_quic.py b/src/plugins/quic/test/test_quic.py
index d2c2476b7e6..0a654cba52b 100644
--- a/src/plugins/quic/test/test_quic.py
+++ b/src/plugins/quic/test/test_quic.py
@@ -110,7 +110,7 @@ class QUICTestCase(VppTestCase):
class QUICEchoIntTestCase(QUICTestCase):
"""QUIC Echo Internal Test Case"""
test_bytes = ' test-bytes'
- extra_vpp_punt_config = ["session", "{", "enable", "}"]
+ extra_vpp_punt_config = ["session", "{", "enable", "poll-main", "}"]
def setUp(self):
super(QUICEchoIntTestCase, self).setUp()
@@ -177,7 +177,7 @@ class QUICEchoExtTestCase(QUICTestCase):
server_fifo_size = "1M"
client_fifo_size = "4M"
extra_vpp_punt_config = ["session", "{",
- "enable", "evt_qs_memfd_seg",
+ "enable", "poll-main", "evt_qs_memfd_seg",
"evt_qs_seg_size", "64M",
"event-queue-length", f"{evt_q_len}",
"preallocated-sessions", "1024",
diff --git a/src/vcl/test/test_vcl.py b/src/vcl/test/test_vcl.py
index f6d638539f0..afb38482207 100644
--- a/src/vcl/test/test_vcl.py
+++ b/src/vcl/test/test_vcl.py
@@ -49,6 +49,7 @@ class VCLAppWorker(Worker):
class VCLTestCase(VppTestCase):
""" VCL Test Class """
+ extra_vpp_punt_config = ["session", "{", "poll-main", "}"]
@classmethod
def setUpClass(cls):
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index 1f248057745..b0a17bbb214 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -1780,8 +1780,8 @@ session_node_enable_disable (u8 is_en)
session_queue_process_node.index,
SESSION_Q_PROCESS_STOP, 0);
}
-
- continue;
+ if (!session_main.poll_main)
+ continue;
}
vlib_node_set_state (this_vlib_main, session_queue_node.index,
state);
@@ -1818,6 +1818,7 @@ session_main_init (vlib_main_t * vm)
smm->is_enabled = 0;
smm->session_enable_asap = 0;
+ smm->poll_main = 0;
smm->session_baseva = HIGH_SEGMENT_BASEVA;
#if (HIGH_SEGMENT_BASEVA > (4ULL << 30))
@@ -1935,6 +1936,8 @@ session_config_fn (vlib_main_t * vm, unformat_input_t * input)
;
else if (unformat (input, "use-app-socket-api"))
appns_sapi_enable ();
+ else if (unformat (input, "poll-main"))
+ smm->poll_main = 1;
else
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h
index f6997fb18f6..9b9cd29114d 100644
--- a/src/vnet/session/session.h
+++ b/src/vnet/session/session.h
@@ -171,6 +171,9 @@ typedef struct session_main_
/** Enable session manager at startup */
u8 session_enable_asap;
+ /** Poll session node in main thread */
+ u8 poll_main;
+
/** vpp fifo event queue configured length */
u32 configured_event_queue_length;