/*
* echo_client.c - vpp built-in echo client code
*
- * Copyright (c) 2017 by Cisco and/or its affiliates.
+ * Copyright (c) 2017-2019 by Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
svm_fifo_t *f = s->data.tx_fifo;
rv = clib_min (svm_fifo_max_enqueue (f), bytes_this_chunk);
svm_fifo_enqueue_nocopy (f, rv);
- session_send_io_evt_to_thread_custom (f, s->thread_index,
- FIFO_EVENT_APP_TX);
+ session_send_io_evt_to_thread_custom (&f->master_session_index,
+ s->thread_index,
+ SESSION_IO_EVT_TX);
}
else
rv = app_send_stream (&s->data, test_data + test_buf_offset,
hdr.lcl_port = at->lcl_port;
svm_fifo_enqueue_nowait (f, sizeof (hdr), (u8 *) & hdr);
svm_fifo_enqueue_nocopy (f, rv);
- session_send_io_evt_to_thread_custom (f, s->thread_index,
- FIFO_EVENT_APP_TX);
+ session_send_io_evt_to_thread_custom (&f->master_session_index,
+ s->thread_index,
+ SESSION_IO_EVT_TX);
}
else
rv = app_send_dgram (&s->data, test_data + test_buf_offset,
if (!ecm->vpp_event_queue[thread_index])
ecm->vpp_event_queue[thread_index] =
- session_manager_get_vpp_event_queue (thread_index);
+ session_main_get_vpp_event_queue (thread_index);
/*
* Setup session
vnet_disconnect_args_t _a = { 0 }, *a = &_a;
if (s->session_state == SESSION_STATE_READY)
- clib_warning ("Reset active connection %U", format_stream_session, s, 2);
+ clib_warning ("Reset active connection %U", format_session, s, 2);
a->handle = session_handle (s);
a->app_index = ecm->app_index;
if (svm_fifo_max_dequeue (s->rx_fifo))
{
if (svm_fifo_set_event (s->rx_fifo))
- session_send_io_evt_to_thread (s->rx_fifo, FIFO_EVENT_BUILTIN_RX);
+ session_send_io_evt_to_thread (s->rx_fifo, SESSION_IO_EVT_BUILTIN_RX);
}
return 0;
}
echo_client_main_t *ecm = &echo_client_main;
vnet_app_attach_args_t _a, *a = &_a;
u64 options[16];
- clib_error_t *error = 0;
+ int rv;
clib_memset (a, 0, sizeof (*a));
clib_memset (options, 0, sizeof (options));
a->options = options;
a->namespace_id = appns_id;
- if ((error = vnet_application_attach (a)))
- return error;
+ if ((rv = vnet_application_attach (a)))
+ return clib_error_return (0, "attach returned %d", rv);
ecm->app_index = a->app_index;
return 0;
{
echo_client_main_t *ecm = &echo_client_main;
vnet_connect_args_t _a, *a = &_a;
- clib_error_t *error = 0;
- int i;
+ int i, rv;
clib_memset (a, 0, sizeof (*a));
for (i = 0; i < n_clients; i++)
a->api_context = i;
a->app_index = ecm->app_index;
- if ((error = vnet_connect_uri (a)))
- return error;
+ if ((rv = vnet_connect_uri (a)))
+ return clib_error_return (0, "connect returned: %d", rv);
/* Crude pacing for call setups */
- if ((i % 4) == 0)
- vlib_process_suspend (vm, 10e-6);
+ if ((i % 16) == 0)
+ vlib_process_suspend (vm, 100e-6);
ASSERT (i + 1 >= ecm->ready_connections);
- while (i + 1 - ecm->ready_connections > 1000)
- {
- vlib_process_suspend (vm, 100e-6);
- }
+ while (i + 1 - ecm->ready_connections > 128)
+ vlib_process_suspend (vm, 1e-3);
}
return 0;
}