63 *rdmo_notif = packed_notif;
66 switch ((*rdmo_notif)->type) {
68 (*rdmo_notif)->client_init.addr = ptr;
87 switch (rdmo_cmd->
type) {
112 size_t *packed_cmd_len,
115 void *pack_tail = packed_cmd;
120 if (pack_len > *packed_cmd_len)
126 memcpy(pack_head, rdmo_cmd, pack_len);
127 *packed_cmd_len = pack_len;
130 switch (rdmo_cmd->
type) {
135 *packed_cmd_len += pack_len;
141 *packed_cmd_len += pack_len;
147 *packed_cmd_len += pack_len;
151 *packed_cmd_len += pack_len;
168 size_t extended_mem = 0;
169 struct doca_buf *response;
177 if (task_data ==
NULL) {
183 if (response ==
NULL) {
210 if (data_len !=
sizeof(*rdmo_notify) + extended_mem) {
211 DOCA_LOG_ERR(
"Task response data length is different from notification expected length");
217 switch (rdmo_notify->
type) {
258 (void)task_user_data;
273 struct doca_buf *payload;
274 struct doca_urom_worker_cmd_task *task;
330 (void)task_user_data;
344 struct doca_buf *payload;
345 struct doca_urom_worker_cmd_task *task;
400 (void)task_user_data;
413 struct doca_buf *payload;
414 struct doca_urom_worker_cmd_task *task;
468 (void)task_user_data;
486 struct doca_buf *payload;
487 struct doca_urom_worker_cmd_task *task;
546 (void)task_user_data;
559 struct doca_buf *payload;
560 struct doca_urom_worker_cmd_task *task;
DOCA_LOG_REGISTER(UROM::WORKER::RDMO)
DOCA_STABLE doca_error_t doca_buf_get_data(const struct doca_buf *buf, void **data)
Get the buffer's data.
DOCA_STABLE doca_error_t doca_buf_get_data_len(const struct doca_buf *buf, size_t *data_len)
Get buffer's data length.
DOCA_STABLE doca_error_t doca_buf_set_data(struct doca_buf *buf, void *data, size_t data_len)
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.
@ DOCA_ERROR_INVALID_VALUE
@ DOCA_ERROR_INITIALIZATION
@ DOCA_ERROR_UNSUPPORTED_VERSION
#define DOCA_LOG_ERR(format,...)
Generates an ERROR 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_task_submit(struct doca_task *task)
Submit a task to a progress engine.
DOCA_EXPERIMENTAL doca_error_t doca_urom_worker_cmd_task_release(struct doca_urom_worker_cmd_task *task)
Release Worker Command task.
DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_cb(struct doca_urom_worker_cmd_task *task, doca_urom_worker_cmd_task_completion_cb_t cb)
Set Worker Command task callback.
DOCA_EXPERIMENTAL struct doca_buf * doca_urom_worker_cmd_task_get_response(struct doca_urom_worker_cmd_task *task)
Get Worker Command task response.
DOCA_EXPERIMENTAL void * doca_urom_worker_cmd_task_get_user_data(struct doca_urom_worker_cmd_task *task)
Get Worker Command user data to populate.
DOCA_EXPERIMENTAL doca_error_t doca_urom_worker_cmd_task_allocate_init(struct doca_urom_worker *worker_ctx, uint64_t plugin, struct doca_urom_worker_cmd_task **task)
Allocate and initialize Worker Command task.
DOCA_EXPERIMENTAL struct doca_buf * doca_urom_worker_cmd_task_get_payload(struct doca_urom_worker_cmd_task *task)
Get Worker Command task payload.
DOCA_EXPERIMENTAL struct doca_task * doca_urom_worker_cmd_task_as_task(struct doca_urom_worker_cmd_task *task)
This method converts a worker cmd task to doca_task.
static void urom_rdmo_mr_reg_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
doca_error_t urom_rdmo_task_mr_deregister(struct doca_urom_worker *worker_ctx, union doca_data cookie, uint64_t rkey_id, urom_rdmo_mr_deregister_finished cb)
static doca_error_t urom_worker_rdmo_cmd_pack(struct urom_worker_rdmo_cmd *rdmo_cmd, size_t *packed_cmd_len, void *packed_cmd)
static void urom_rdmo_rq_destroy_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
static void doca_urom_rq_create_init_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
doca_error_t urom_rdmo_init(uint64_t plugin_id, uint64_t version)
doca_error_t urom_rdmo_task_rq_destroy(struct doca_urom_worker *worker_ctx, union doca_data cookie, uint64_t rq_id, urom_rdmo_rq_destroy_finished cb)
doca_error_t urom_rdmo_task_client_init(struct doca_urom_worker *worker_ctx, union doca_data cookie, uint64_t id, void *addr, uint64_t addr_len, urom_rdmo_client_init_finished cb)
doca_error_t urom_rdmo_task_mr_register(struct doca_urom_worker *worker_ctx, union doca_data cookie, uint64_t va, uint64_t len, void *rkey, uint64_t rkey_len, void *memh, uint64_t memh_len, urom_rdmo_mr_register_finished cb)
static void urom_rdmo_client_init_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
static void urom_rdmo_completion(struct doca_urom_worker_cmd_task *task, enum urom_worker_rdmo_notify_type type)
static size_t urom_worker_rdmo_cmd_packed_len(struct urom_worker_rdmo_cmd *rdmo_cmd)
static uint64_t rdmo_version
static doca_error_t urom_worker_rdmo_notif_unpack(void *packed_notif, struct urom_worker_notify_rdmo **rdmo_notif)
doca_error_t urom_rdmo_task_rq_create(struct doca_urom_worker *worker_ctx, union doca_data cookie, void *addr, uint64_t addr_len, urom_rdmo_rq_create_finished cb)
static void urom_rdmo_mr_dereg_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
void(* urom_rdmo_mr_deregister_finished)(doca_error_t result, union doca_data cookie, uint64_t rkey)
void(* urom_rdmo_client_init_finished)(doca_error_t result, union doca_data cookie, void *addr, uint64_t addr_len)
void(* urom_rdmo_mr_register_finished)(doca_error_t result, union doca_data cookie, uint64_t rkey)
void(* urom_rdmo_rq_create_finished)(doca_error_t result, union doca_data cookie, uint64_t rq_id)
void(* urom_rdmo_rq_destroy_finished)(doca_error_t result, union doca_data cookie, uint64_t rq_id)
urom_rdmo_rq_destroy_finished rq_destroy_cb
urom_rdmo_mr_deregister_finished mr_dereg_cb
urom_rdmo_mr_register_finished mr_reg_cb
urom_rdmo_rq_create_finished rq_create_cb
urom_rdmo_client_init_finished client_init_cb
struct urom_worker_rdmo_notify_mr_reg mr_reg
struct urom_worker_rdmo_notify_rq_create rq_create
struct urom_worker_rdmo_notify_rq_destroy rq_destroy
struct urom_worker_rdmo_notify_mr_dereg mr_dereg
struct urom_worker_rdmo_notify_client_init client_init
struct urom_worker_rdmo_cmd_mr_dereg mr_dereg
struct urom_worker_rdmo_cmd_mr_reg mr_reg
struct urom_worker_rdmo_cmd_client_init client_init
struct urom_worker_rdmo_cmd_rq_destroy rq_destroy
struct urom_worker_rdmo_cmd_rq_create rq_create
Convenience type for representing opaque data.
urom_worker_rdmo_notify_type
@ UROM_WORKER_NOTIFY_RDMO_CLIENT_INIT
@ UROM_WORKER_NOTIFY_RDMO_RQ_CREATE
@ UROM_WORKER_NOTIFY_RDMO_RQ_DESTROY
@ UROM_WORKER_NOTIFY_RDMO_MR_REG
@ UROM_WORKER_NOTIFY_RDMO_MR_DEREG
@ UROM_WORKER_CMD_RDMO_MR_REG
@ UROM_WORKER_CMD_RDMO_MR_DEREG
@ UROM_WORKER_CMD_RDMO_RQ_CREATE
@ UROM_WORKER_CMD_RDMO_RQ_DESTROY
@ UROM_WORKER_CMD_RDMO_CLIENT_INIT
#define urom_rdmo_serialize_next_raw(_iter, _type, _offset)