From b384b543313b6b47a277c903e9d4fcd4343054fa Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Mon, 15 Jan 2018 01:08:33 -0800 Subject: session: add support for memfd segments - update segment manager and session api to work with both flavors of ssvm segments - added generic ssvm slave/master init and del functions - cleanup/refactor tcp_echo - fixed uses of svm fifo pool as vector Change-Id: Ieee8b163faa407da6e77e657a2322de213a9d2a0 Signed-off-by: Florin Coras --- src/vnet/tcp/builtin_client.c | 11 +++-------- src/vnet/tcp/builtin_http_server.c | 6 +----- src/vnet/tcp/builtin_proxy.c | 13 +------------ src/vnet/tcp/builtin_server.c | 6 +----- src/vnet/tcp/tcp_debug.h | 2 +- src/vnet/tcp/tcp_input.c | 5 +++-- 6 files changed, 10 insertions(+), 33 deletions(-) (limited to 'src/vnet/tcp') diff --git a/src/vnet/tcp/builtin_client.c b/src/vnet/tcp/builtin_client.c index b073459c52e..2784591731e 100644 --- a/src/vnet/tcp/builtin_client.c +++ b/src/vnet/tcp/builtin_client.c @@ -296,8 +296,8 @@ create_api_loopback (tclient_main_t * tm) shmem_hdr = am->shmem_hdr; tm->vl_input_queue = shmem_hdr->vl_input_queue; - tm->my_client_index = - vl_api_memclnt_create_internal ("tcp_test_client", tm->vl_input_queue); + tm->my_client_index = vl_api_memclnt_create_internal ("tcp_test_client", + tm->vl_input_queue); return 0; } @@ -429,21 +429,16 @@ static clib_error_t * attach_builtin_test_clients_app (u8 * appns_id, u64 appns_flags, u64 appns_secret) { - u32 segment_name_length, prealloc_fifos, segment_size = 2 << 20; + u32 prealloc_fifos, segment_size = 2 << 20; tclient_main_t *tm = &tclient_main; vnet_app_attach_args_t _a, *a = &_a; - u8 segment_name[128]; u64 options[16]; clib_error_t *error = 0; - segment_name_length = ARRAY_LEN (segment_name); - memset (a, 0, sizeof (*a)); memset (options, 0, sizeof (options)); a->api_client_index = tm->my_client_index; - a->segment_name = segment_name; - a->segment_name_length = segment_name_length; a->session_cb_vft = &builtin_clients; prealloc_fifos = tm->prealloc_fifos ? tm->expected_connections : 1; diff --git a/src/vnet/tcp/builtin_http_server.c b/src/vnet/tcp/builtin_http_server.c index 356cfd86b91..5510f8ad34c 100644 --- a/src/vnet/tcp/builtin_http_server.c +++ b/src/vnet/tcp/builtin_http_server.c @@ -466,8 +466,7 @@ builtin_session_connected_callback (u32 app_index, u32 api_context, } static int -builtin_add_segment_callback (u32 client_index, - const u8 * seg_name, u32 seg_size) +builtin_add_segment_callback (u32 client_index, const ssvm_private_t * sp) { clib_warning ("called..."); return -1; @@ -509,7 +508,6 @@ static int server_attach () { http_server_main_t *hsm = &http_server_main; - u8 segment_name[128]; u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; u32 segment_size = 128 << 20; @@ -530,8 +528,6 @@ server_attach () hsm->fifo_size ? hsm->fifo_size : 32 << 10; a->options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; a->options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = hsm->prealloc_fifos; - a->segment_name = segment_name; - a->segment_name_length = ARRAY_LEN (segment_name); if (vnet_application_attach (a)) { diff --git a/src/vnet/tcp/builtin_proxy.c b/src/vnet/tcp/builtin_proxy.c index a0a41b91b31..a4827bff56d 100644 --- a/src/vnet/tcp/builtin_proxy.c +++ b/src/vnet/tcp/builtin_proxy.c @@ -139,8 +139,7 @@ server_connected_callback (u32 app_index, u32 api_context, } static int -server_add_segment_callback (u32 client_index, - const u8 * seg_name, u32 seg_size) +server_add_segment_callback (u32 client_index, const ssvm_private_t * sp) { clib_warning ("called..."); return -1; @@ -382,7 +381,6 @@ static int server_attach () { builtin_proxy_main_t *bpm = &builtin_proxy_main; - u8 segment_name[128]; u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; u32 segment_size = 512 << 20; @@ -404,9 +402,6 @@ server_attach () a->options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; - a->segment_name = segment_name; - a->segment_name_length = ARRAY_LEN (segment_name); - if (vnet_application_attach (a)) { clib_warning ("failed to attach server"); @@ -422,18 +417,12 @@ active_open_attach (void) { builtin_proxy_main_t *bpm = &builtin_proxy_main; vnet_app_attach_args_t _a, *a = &_a; - u8 segment_name[128]; - u32 segment_name_length; u64 options[16]; - segment_name_length = ARRAY_LEN (segment_name); - memset (a, 0, sizeof (*a)); memset (options, 0, sizeof (options)); a->api_client_index = bpm->active_open_client_index; - a->segment_name = segment_name; - a->segment_name_length = segment_name_length; a->session_cb_vft = &builtin_clients; options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678; diff --git a/src/vnet/tcp/builtin_server.c b/src/vnet/tcp/builtin_server.c index eafef8227e2..2ea9068a597 100644 --- a/src/vnet/tcp/builtin_server.c +++ b/src/vnet/tcp/builtin_server.c @@ -95,8 +95,7 @@ builtin_session_connected_callback (u32 app_index, u32 api_context, } int -builtin_add_segment_callback (u32 client_index, - const u8 * seg_name, u32 seg_size) +builtin_add_segment_callback (u32 client_index, const ssvm_private_t * sp) { clib_warning ("called..."); return -1; @@ -271,7 +270,6 @@ static int server_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) { builtin_server_main_t *bsm = &builtin_server_main; - u8 segment_name[128]; u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; u32 segment_size = 512 << 20; @@ -306,8 +304,6 @@ server_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) a->options[APP_OPTIONS_FLAGS] |= appns_flags; a->options[APP_OPTIONS_NAMESPACE_SECRET] = appns_secret; } - a->segment_name = segment_name; - a->segment_name_length = ARRAY_LEN (segment_name); if (vnet_application_attach (a)) { diff --git a/src/vnet/tcp/tcp_debug.h b/src/vnet/tcp/tcp_debug.h index 5d4f7d6879d..e0db7f4f0fa 100755 --- a/src/vnet/tcp/tcp_debug.h +++ b/src/vnet/tcp/tcp_debug.h @@ -19,7 +19,7 @@ #include #define TCP_DEBUG (1) -#define TCP_DEBUG_SM (0) +#define TCP_DEBUG_SM (1) #define TCP_DEBUG_CC (0) #define TCP_DEBUG_CC_STAT (1) #define TCP_DEBUG_BUFFER_ALLOCATION (0) diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index b0ea24ff8ef..86bce4895b6 100644 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -2382,6 +2382,7 @@ tcp46_rcv_process_inline (vlib_main_t * vm, vlib_node_runtime_t * node, /* Switch state to ESTABLISHED */ tc0->state = TCP_STATE_ESTABLISHED; + TCP_EVT_DBG (TCP_EVT_STATE_CHANGE, tc0); /* Initialize session variables */ tc0->snd_una = vnet_buffer (b0)->tcp.ack_number; @@ -2389,12 +2390,12 @@ tcp46_rcv_process_inline (vlib_main_t * vm, vlib_node_runtime_t * node, << tc0->rcv_opts.wscale; tc0->snd_wl1 = vnet_buffer (b0)->tcp.seq_number; tc0->snd_wl2 = vnet_buffer (b0)->tcp.ack_number; - stream_session_accept_notify (&tc0->connection); /* Reset SYN-ACK retransmit and SYN_RCV establish timers */ tcp_retransmit_timer_reset (tc0); tcp_timer_reset (tc0, TCP_TIMER_ESTABLISH); - TCP_EVT_DBG (TCP_EVT_STATE_CHANGE, tc0); + + stream_session_accept_notify (&tc0->connection); break; case TCP_STATE_ESTABLISHED: /* We can get packets in established state here because they -- cgit 1.2.3-korg