59 #define EXIT_ON_FAILURE(_expression_) \
61 doca_error_t _status_ = _expression_; \
63 if (_status_ != DOCA_SUCCESS) { \
64 DOCA_LOG_ERR("%s failed with status %s", __func__, doca_error_get_descr(_status_)); \
70 #define NUM_BUFFER_PAIRS (NUM_TASKS * 4)
71 #define DMA_BUFFER_SIZE (1024)
72 #define BUFFER_SIZE (DMA_BUFFER_SIZE * 2 * NUM_BUFFER_PAIRS)
73 #define BUF_INVENTORY_SIZE (NUM_BUFFER_PAIRS * 2)
142 uint8_t expected_value = (uint8_t)task_user_data.
u64;
145 state->base.num_completed_tasks++;
172 (void)task_user_data;
207 ctx_user_data.
ptr = state;
316 memset(state, 0,
sizeof(*state));
static doca_error_t allocate_buffer(struct cache_invalidate_sample_state *state)
static doca_error_t create_buf_inventory(struct cache_invalidate_sample_state *state)
static doca_error_t poll_for_completion(struct cache_invalidate_sample_state *state)
static doca_error_t create_pe(struct cache_invalidate_sample_state *state)
static doca_error_t create_mmap(struct doca_dev *doca_device, unsigned int mmap_permissions, void *memrange_addr, size_t memrange_len, struct doca_mmap **mmap, doca_dpa_dev_mmap_t *dpa_mmap_handle)
static doca_error_t doca_buf_inventory_buf_get_by_addr(struct doca_buf_inventory *inventory, struct doca_mmap *mmap, void *addr, size_t len, struct doca_buf **buf)
Allocate single element from buffer inventory and point it to the buffer defined by addr & len argume...
static doca_error_t doca_buf_inventory_buf_get_by_data(struct doca_buf_inventory *inventory, struct doca_mmap *mmap, void *data, size_t data_len, struct doca_buf **buf)
Allocate single element from buffer inventory and point it to the buffer defined by data & data_len a...
DOCA_STABLE doca_error_t doca_ctx_start(struct doca_ctx *ctx)
Finalizes all configurations, and starts the DOCA CTX.
DOCA_STABLE doca_error_t doca_ctx_set_user_data(struct doca_ctx *ctx, union doca_data user_data)
set user data to context
DOCA_STABLE doca_error_t doca_ctx_stop(struct doca_ctx *ctx)
Stops the context allowing reconfiguration.
DOCA_STABLE struct doca_task * doca_dma_task_memcpy_as_task(struct doca_dma_task_memcpy *task)
This method converts a memcpy task to doca_task.
DOCA_STABLE void doca_dma_task_memcpy_set_dst(struct doca_dma_task_memcpy *task, struct doca_buf *dst)
This method sets destination buffer to memcpy task.
DOCA_STABLE doca_error_t doca_dma_task_memcpy_alloc_init(struct doca_dma *dma, const struct doca_buf *src, struct doca_buf *dst, union doca_data user_data, struct doca_dma_task_memcpy **task)
This method allocates and initializes a DMA memcpy task.
DOCA_STABLE struct doca_ctx * doca_dma_as_ctx(struct doca_dma *dma)
DOCA_STABLE void doca_dma_task_memcpy_set_src(struct doca_dma_task_memcpy *task, const struct doca_buf *src)
This method sets source buffer to memcpy task.
DOCA_STABLE doca_error_t doca_dma_task_memcpy_set_conf(struct doca_dma *dma, doca_dma_task_memcpy_completion_cb_t task_completion_cb, doca_dma_task_memcpy_completion_cb_t task_error_cb, uint32_t num_memcpy_tasks)
This method sets the DMA memcpy tasks configuration.
DOCA_STABLE doca_error_t doca_dma_create(struct doca_dev *dev, struct doca_dma **dma)
DOCA_STABLE doca_error_t doca_dma_destroy(struct doca_dma *dma)
enum doca_error doca_error_t
DOCA API return codes.
DOCA_STABLE const char * doca_error_get_descr(doca_error_t error)
Returns the description string of an error code.
#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_task_get_status(const struct doca_task *task)
Get task status.
DOCA_STABLE doca_error_t doca_pe_connect_ctx(struct doca_pe *pe, struct doca_ctx *ctx)
This method connects a context to a progress engine.
DOCA_STABLE doca_error_t doca_task_submit(struct doca_task *task)
Submit a task to a 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.
doca_dev * open_device(std::string const &identifier)
void pe_sample_base_cleanup(struct pe_sample_state_base *state)
doca_error_t dma_task_free(struct doca_dma_task_memcpy *dma_task)
doca_error_t free_dma_memcpy_task_buffers(struct doca_dma_task_memcpy *dma_task)
doca_error_t submit_dma_tasks(uint32_t num_tasks, struct doca_dma_task_memcpy **tasks)
doca_error_t process_completed_dma_memcpy_task(struct doca_dma_task_memcpy *dma_task, uint8_t expected_value)
doca_error_t allocate_doca_bufs(struct pe_task_resubmit_sample_state *state)
#define EXIT_ON_FAILURE(_expression_)
doca_error_t create_dma(struct pe_task_resubmit_sample_state *state)
doca_error_t run(struct pe_task_resubmit_sample_state *state)
void cleanup(struct pe_task_resubmit_sample_state *state)
#define BUF_INVENTORY_SIZE
doca_error_t run_pe_task_resubmit_sample(void)
doca_error_t allocate_tasks_for_resubmit(struct pe_task_resubmit_sample_state *state)
void dma_task_resubmit(struct pe_task_resubmit_sample_state *state, struct doca_dma_task_memcpy *dma_task)
static void dma_memcpy_completed_callback(struct doca_dma_task_memcpy *dma_task, union doca_data task_user_data, union doca_data ctx_user_data)
static void dma_memcpy_error_callback(struct doca_dma_task_memcpy *dma_task, union doca_data task_user_data, union doca_data ctx_user_data)
DOCA_LOG_REGISTER(PE_TASK_RESUBMIT::SAMPLE)
uint8_t * available_buffer
size_t buf_inventory_size
struct doca_buf_inventory * inventory
uint32_t num_completed_tasks
struct pe_sample_state_base base
struct doca_ctx * dma_ctx
struct doca_dma_task_memcpy * tasks[NUM_TASKS]
struct doca_buf * dst_buffers[NUM_BUFFER_PAIRS]
struct doca_buf * src_buffers[NUM_BUFFER_PAIRS]
Convenience type for representing opaque data.