NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_comch_producer.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
27 #ifndef DOCA_COMCH_PRODUCER_H_
28 #define DOCA_COMCH_PRODUCER_H_
29 
30 #include <stddef.h>
31 #include <stdint.h>
32 
33 #include <doca_compat.h>
34 #include <doca_error.h>
35 #include <doca_types.h>
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 struct doca_buf;
42 struct doca_dev;
43 struct doca_devinfo;
44 struct doca_dpa_thread;
45 
46 /* Representantion of a comms channel point to point connection */
47 struct doca_comch_connection;
48 
49 /* Instance of a doca_comch producer */
50 struct doca_comch_producer;
51 
52 /* Opaque structure representing DPA completion context */
53 struct doca_dpa_completion;
54 
59 
60 /*********************************************************************************************************************
61  * Producer Creation
62  *********************************************************************************************************************/
63 
81 doca_error_t doca_comch_producer_create(struct doca_comch_connection *comch_connection,
82  struct doca_comch_producer **producer);
83 
97 doca_error_t doca_comch_producer_destroy(struct doca_comch_producer *producer);
98 
112 doca_error_t doca_comch_producer_cap_is_supported(const struct doca_devinfo *devinfo);
113 
128 doca_error_t doca_comch_producer_get_id(const struct doca_comch_producer *producer, uint32_t *id);
129 
144 doca_error_t doca_comch_producer_cap_get_max_num_tasks(const struct doca_devinfo *devinfo, uint32_t *max_num_tasks);
145 
161 doca_error_t doca_comch_producer_cap_get_max_buf_size(const struct doca_devinfo *devinfo, uint32_t *max_buf_size);
162 
179  uint32_t *max_buf_list_len);
180 
195 doca_error_t doca_comch_producer_cap_get_max_producers(const struct doca_devinfo *devinfo, uint32_t *max_producers);
196 
207 struct doca_ctx *doca_comch_producer_as_ctx(struct doca_comch_producer *producer);
208 
209 /*********************************************************************************************************************
210  * Producer Creation on DPA
211  *********************************************************************************************************************/
212 
226 doca_error_t doca_comch_producer_set_dev_max_num_send(struct doca_comch_producer *producer, uint32_t dev_num_send);
227 
243 doca_error_t doca_comch_producer_dpa_completion_attach(struct doca_comch_producer *producer,
244  struct doca_dpa_completion *dpa_comp);
245 
261 doca_error_t doca_comch_producer_get_dpa_handle(struct doca_comch_producer *producer,
263 
264 /*********************************************************************************************************************
265  * Producer Sent Task
266  *********************************************************************************************************************/
267 
268 /* Task instance to for producer buffer send */
269 struct doca_comch_producer_task_send;
270 
283 typedef void (*doca_comch_producer_task_send_completion_cb_t)(struct doca_comch_producer_task_send *task,
284  union doca_data task_user_data,
285  union doca_data ctx_user_data);
286 
307 doca_error_t doca_comch_producer_task_send_set_conf(struct doca_comch_producer *producer,
310  uint32_t num_send_tasks);
311 
335 doca_error_t doca_comch_producer_task_send_alloc_init(struct doca_comch_producer *producer,
336  const struct doca_buf *buf,
337  uint8_t *imm_data,
338  uint32_t imm_data_len,
339  uint32_t consumer_id,
340  struct doca_comch_producer_task_send **task);
341 
352 const struct doca_buf *doca_comch_producer_task_send_get_buf(const struct doca_comch_producer_task_send *task);
353 
363 void doca_comch_producer_task_send_set_buf(struct doca_comch_producer_task_send *task, const struct doca_buf *buf);
364 
375 uint32_t doca_comch_producer_task_send_get_consumer_id(const struct doca_comch_producer_task_send *task);
376 
386 void doca_comch_producer_task_send_set_consumer_id(struct doca_comch_producer_task_send *task,
387  const uint32_t consumer_id);
388 
399 uint8_t *doca_comch_producer_task_send_get_imm_data(const struct doca_comch_producer_task_send *task);
400 
411 uint32_t doca_comch_producer_task_send_get_imm_data_len(const struct doca_comch_producer_task_send *task);
412 
424 void doca_comch_producer_task_send_set_imm_data(struct doca_comch_producer_task_send *task,
425  uint8_t *imm_data,
426  uint32_t imm_data_len);
427 
438 struct doca_task *doca_comch_producer_task_send_as_task(struct doca_comch_producer_task_send *task);
439 
440 #ifdef __cplusplus
441 }
442 #endif
443 
446 #endif /* DOCA_COMCH_PRODUCER_H_ */
static void task_error_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:65
static void task_completion_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:48
uint64_t dpa_producer
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_get_dpa_handle(struct doca_comch_producer *producer, doca_dpa_dev_comch_producer_t *dpa_producer)
Retrieve the handle in the dpa memory space of a doca_comch_producer.
DOCA_STABLE doca_error_t doca_comch_producer_create(struct doca_comch_connection *comch_connection, struct doca_comch_producer **producer)
void(* doca_comch_producer_task_send_completion_cb_t)(struct doca_comch_producer_task_send *task, union doca_data task_user_data, union doca_data ctx_user_data)
DOCA_STABLE doca_error_t doca_comch_producer_get_id(const struct doca_comch_producer *producer, uint32_t *id)
DOCA_STABLE const struct doca_buf * doca_comch_producer_task_send_get_buf(const struct doca_comch_producer_task_send *task)
DOCA_STABLE doca_error_t doca_comch_producer_cap_is_supported(const struct doca_devinfo *devinfo)
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_set_dev_max_num_send(struct doca_comch_producer *producer, uint32_t dev_num_send)
Set the maximal number of send operations for a DPA producer.
DOCA_STABLE struct doca_task * doca_comch_producer_task_send_as_task(struct doca_comch_producer_task_send *task)
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_consumer_id(const struct doca_comch_producer_task_send *task)
DOCA_STABLE doca_error_t doca_comch_producer_task_send_set_conf(struct doca_comch_producer *producer, doca_comch_producer_task_send_completion_cb_t task_completion_cb, doca_comch_producer_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks)
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_producers(const struct doca_devinfo *devinfo, uint32_t *max_producers)
DOCA_STABLE uint8_t * doca_comch_producer_task_send_get_imm_data(const struct doca_comch_producer_task_send *task)
DOCA_STABLE void doca_comch_producer_task_send_set_buf(struct doca_comch_producer_task_send *task, const struct doca_buf *buf)
DOCA_STABLE doca_error_t doca_comch_producer_destroy(struct doca_comch_producer *producer)
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_size(const struct doca_devinfo *devinfo, uint32_t *max_buf_size)
DOCA_STABLE void doca_comch_producer_task_send_set_imm_data(struct doca_comch_producer_task_send *task, uint8_t *imm_data, uint32_t imm_data_len)
DOCA_STABLE void doca_comch_producer_task_send_set_consumer_id(struct doca_comch_producer_task_send *task, const uint32_t consumer_id)
DOCA_STABLE struct doca_ctx * doca_comch_producer_as_ctx(struct doca_comch_producer *producer)
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_num_tasks(const struct doca_devinfo *devinfo, uint32_t *max_num_tasks)
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_dpa_completion_attach(struct doca_comch_producer *producer, struct doca_dpa_completion *dpa_comp)
Associate producer with DPA completion context.
DOCA_STABLE doca_error_t doca_comch_producer_task_send_alloc_init(struct doca_comch_producer *producer, const struct doca_buf *buf, uint8_t *imm_data, uint32_t imm_data_len, uint32_t consumer_id, struct doca_comch_producer_task_send **task)
uint64_t doca_dpa_dev_comch_producer_t
DPA handle for DPA producer.
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_imm_data_len(const struct doca_comch_producer_task_send *task)
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
#define DOCA_STABLE
To set a Symbol (or specifically a function) as stable API, i.e. it won't be changed.
Definition: doca_compat.h:96
enum doca_error doca_error_t
DOCA API return codes.
Convenience type for representing opaque data.
Definition: doca_types.h:56