114 struct doca_comch_connection *comch_conn,
115 uint8_t change_success)
118 struct doca_comch_server *comch_server;
135 if (!change_success) {
152 struct doca_comch_connection *comch_conn,
153 uint8_t change_success)
156 struct doca_comch_server *comch_server;
162 (void)change_success;
190 struct doca_comch_task_send *task;
191 struct doca_task *task_obj;
194 const char *text = sample_objects->
text;
195 size_t msg_len = sample_objects->
text_len;
199 DOCA_LOG_ERR(
"Failed to send response: no connection available");
215 user_data.
ptr = (
void *)sample_objects;
237 uint8_t *recv_buffer,
239 struct doca_comch_connection *comch_connection)
242 struct doca_comch_server *comch_server;
259 sample_objects->
connection = comch_connection;
261 DOCA_LOG_INFO(
"Message received: '%.*s'", (
int)msg_len, recv_buffer);
286 if (sample_objects->
pe !=
NULL) {
291 sample_objects->
pe =
NULL;
297 DOCA_LOG_ERR(
"Failed to close rep device properly with error = %s",
321 struct doca_ctx *
ctx,
330 switch (next_state) {
334 sample_objects->
finish =
true;
340 DOCA_LOG_ERR(
"CC server context entered into starting state. Unexpected transition");
343 DOCA_LOG_INFO(
"CC server context is running. Waiting for clients to connect");
350 DOCA_LOG_INFO(
"CC server context entered into stopping state. Terminating connections with clients");
367 const char *dev_pci_addr,
368 const char *dev_rep_pci_addr,
377 .server_disconnection_event_cb =
379 .data_path_mode =
false,
380 .new_consumer_cb =
NULL,
381 .expired_consumer_cb =
NULL,
382 .ctx_user_data = sample_objects,
388 DOCA_LOG_ERR(
"Failed to open DOCA device based on PCI address");
398 DOCA_LOG_ERR(
"Failed to open DOCA device representor based on PCI address");
407 &(sample_objects->
server),
408 &(sample_objects->
pe));
429 const char *dev_pci_addr,
430 const char *rep_pci_addr,
432 const uint32_t text_len)
436 uint32_t max_msg_size;
438 struct timespec ts = {
443 sample_objects.
text = text;
444 sample_objects.
finish =
false;
459 if (text_len > max_msg_size) {
461 "Failed to run sample, text size is larger than supported message size. text_len = %u, supported message size = %u",
470 while (!sample_objects.
finish) {
476 return sample_objects.
result;
doca_error_t init_comch_ctrl_path_server(const char *server_name, struct doca_dev *hw_dev, struct doca_dev_rep *rep_dev, struct comch_ctrl_path_server_cb_config *cb_cfg, struct doca_comch_server **server, struct doca_pe **pe)
static void comch_server_state_changed_callback(const union doca_data user_data, struct doca_ctx *ctx, enum doca_ctx_states prev_state, enum doca_ctx_states next_state)
static void send_task_completion_callback(struct doca_comch_task_send *task, union doca_data task_user_data, union doca_data ctx_user_data)
static void server_connection_event_callback(struct doca_comch_event_connection_status_changed *event, struct doca_comch_connection *comch_conn, uint8_t change_success)
static void send_task_completion_err_callback(struct doca_comch_task_send *task, union doca_data task_user_data, union doca_data ctx_user_data)
doca_error_t start_comch_ctrl_path_server_sample(const char *server_name, const char *dev_pci_addr, const char *rep_pci_addr, const char *text, const uint32_t text_len)
DOCA_LOG_REGISTER(COMCH_CTRL_PATH_SERVER)
static void clean_comch_sample_objects(struct comch_ctrl_path_server_objects *sample_objects)
static doca_error_t init_comch_ctrl_path_server_objects(const char *server_name, const char *dev_pci_addr, const char *dev_rep_pci_addr, struct comch_ctrl_path_server_objects *sample_objects)
static void server_disconnection_event_callback(struct doca_comch_event_connection_status_changed *event, struct doca_comch_connection *comch_conn, uint8_t change_success)
static void message_recv_callback(struct doca_comch_event_msg_recv *event, uint8_t *recv_buffer, uint32_t msg_len, struct doca_comch_connection *comch_connection)
static doca_error_t server_send_pong(struct comch_ctrl_path_server_objects *sample_objects)
doca_error_t open_doca_device_rep_with_pci(struct doca_dev *local, enum doca_devinfo_rep_filter filter, const char *pci_addr, struct doca_dev_rep **retval)
static doca_error_t open_doca_device_with_pci(const char *pcie_value, struct doca_dev **retval)
if(bitoffset % 64+bitlength > 64) result|
DOCA_STABLE struct doca_comch_server * doca_comch_server_get_server_ctx(const struct doca_comch_connection *connection)
DOCA_STABLE doca_error_t doca_comch_cap_get_max_msg_size(const struct doca_devinfo *devinfo, uint32_t *size)
DOCA_STABLE doca_error_t doca_comch_server_destroy(struct doca_comch_server *comch_server)
DOCA_STABLE struct doca_task * doca_comch_task_send_as_task(struct doca_comch_task_send *task)
DOCA_STABLE doca_error_t doca_comch_server_task_send_alloc_init(struct doca_comch_server *comch_server, struct doca_comch_connection *peer, const void *msg, uint32_t len, struct doca_comch_task_send **task)
DOCA_STABLE struct doca_ctx * doca_comch_server_as_ctx(struct doca_comch_server *comch_server)
DOCA_STABLE doca_error_t doca_ctx_stop(struct doca_ctx *ctx)
Stops the context allowing reconfiguration.
doca_ctx_states
This enum defines the states of a context.
DOCA_STABLE doca_error_t doca_ctx_get_user_data(const struct doca_ctx *ctx, union doca_data *user_data)
get user data from context
@ DOCA_CTX_STATE_STARTING
@ DOCA_CTX_STATE_STOPPING
DOCA_STABLE doca_error_t doca_dev_rep_close(struct doca_dev_rep *dev)
Destroy allocated representor device instance.
DOCA_STABLE struct doca_devinfo * doca_dev_as_devinfo(const struct doca_dev *dev)
Get local device info from device. This should be useful when wanting to query information about devi...
DOCA_STABLE doca_error_t doca_dev_close(struct doca_dev *dev)
Destroy allocated local device instance.
@ DOCA_DEVINFO_REP_FILTER_NET
enum doca_error doca_error_t
DOCA API return codes.
DOCA_STABLE const char * doca_error_get_name(doca_error_t error)
Returns the string representation of an error code name.
@ DOCA_ERROR_INVALID_VALUE
@ DOCA_ERROR_NOT_CONNECTED
#define DOCA_LOG_ERR(format,...)
Generates an ERROR application log message.
#define DOCA_LOG_INFO(format,...)
Generates an INFO application log message.
DOCA_STABLE doca_error_t doca_pe_destroy(struct doca_pe *pe)
Destroy doca progress engine.
DOCA_STABLE doca_error_t doca_task_get_status(const struct doca_task *task)
Get task status.
DOCA_STABLE doca_error_t doca_task_submit(struct doca_task *task)
Submit a task to a progress engine.
DOCA_STABLE uint8_t doca_pe_progress(struct doca_pe *pe)
Run the progress engine.
DOCA_STABLE void doca_task_set_user_data(struct doca_task *task, union doca_data user_data)
Set user data to a task.
DOCA_STABLE void doca_task_free(struct doca_task *task)
Free a task back to where it was allocated from.
const struct ip_frag_config * cfg
uint32_t num_connected_clients
struct doca_dev_rep * rep_dev
struct doca_comch_connection * connection
struct doca_comch_server * server
Convenience type for representing opaque data.
struct upf_accel_ctx * ctx