NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_sta_io_non_offload.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 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 
14 #ifndef DOCA_STA_IO_NON_OFFLOAD_H_
15 #define DOCA_STA_IO_NON_OFFLOAD_H_
16 
17 #include <stdint.h>
18 #include <stdbool.h>
19 
20 #include <doca_error.h>
21 #include <doca_types.h>
22 
23 #include <doca_sta_handle.h>
24 #include <doca_sta_task.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #define DOCA_STA_NVMEF_COMPLETION_SIZE (16)
31 
33 
34 struct doca_sta_io;
35 
55 typedef void (*doca_sta_io_non_offload_cb_t)(struct doca_sta_qp_handle *qp_handle,
56  union doca_data user_data,
57  const uint8_t *nvme_cmd,
58  uint8_t *payload,
59  uint32_t payload_len,
60  bool payload_valid,
61  union doca_data non_offload_user_data);
62 
65  doca_sta_io_non_offload_cb_t non_offload_cb,
66  union doca_data user_data);
67 
104 
126  union doca_data user_data,
127  struct doca_sta_qp_handle *qp_handle,
128  doca_sta_nvmef_completion_t completion,
129  union doca_data non_offload_user_data,
130  struct doca_sta_producer_task_send **task);
131 
153  union doca_data user_data,
154  struct doca_sta_qp_handle *qp_handle,
155  doca_sta_nvmef_completion_t completion,
156  union doca_data non_offload_user_data,
157  struct doca_sta_producer_task_send **task);
158 
180  union doca_data user_data,
181  struct doca_sta_qp_handle *qp_handle,
182  union doca_data non_offload_user_data,
183  struct doca_sta_producer_task_send **task);
184 
185 #ifdef __cplusplus
186 }
187 #endif
188 
189 #endif /* DOCA_STA_IO_NON_OFFLOAD_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
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_task_non_offload_rdma_write_send_alloc_init(struct doca_sta_io *sta_io, union doca_data user_data, struct doca_sta_qp_handle *qp_handle, doca_sta_nvmef_completion_t completion, union doca_data non_offload_user_data, struct doca_sta_producer_task_send **task)
This method allocates and initializes a STA IO RDMA WRITE with RDMA SEND task.
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_non_offload_register_cb(struct doca_sta_io *sta_io, doca_sta_io_non_offload_cb_t non_offload_cb, union doca_data user_data)
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_task_non_offload_set_rdma_write_send_conf(struct doca_sta_io *sta_io, doca_sta_task_completion_cb_t task_completion_cb, doca_sta_task_completion_cb_t task_error_cb)
This method sets the STA IO non offload RDMA WRITE tasks configuration.
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_task_non_offload_rdma_read_alloc_init(struct doca_sta_io *sta_io, union doca_data user_data, struct doca_sta_qp_handle *qp_handle, union doca_data non_offload_user_data, struct doca_sta_producer_task_send **task)
This method allocates and initializes a STA IO RDMA READ task.
void(* doca_sta_io_non_offload_cb_t)(struct doca_sta_qp_handle *qp_handle, union doca_data user_data, const uint8_t *nvme_cmd, uint8_t *payload, uint32_t payload_len, bool payload_valid, union doca_data non_offload_user_data)
Function to execute on new STA IO non-offload command notification.
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_task_non_offload_set_rdma_read_conf(struct doca_sta_io *sta_io, doca_sta_task_completion_cb_t task_completion_cb, doca_sta_task_completion_cb_t task_error_cb)
This method sets the STA IO non offload RDMA READ tasks configuration.
#define DOCA_STA_NVMEF_COMPLETION_SIZE
uint8_t doca_sta_nvmef_completion_t[DOCA_STA_NVMEF_COMPLETION_SIZE]
DOCA_EXPERIMENTAL doca_error_t doca_sta_io_task_non_offload_rdma_send_alloc_init(struct doca_sta_io *sta_io, union doca_data user_data, struct doca_sta_qp_handle *qp_handle, doca_sta_nvmef_completion_t completion, union doca_data non_offload_user_data, struct doca_sta_producer_task_send **task)
This method allocates and initializes a STA IO RDMA SEND task.
void(* doca_sta_task_completion_cb_t)(struct doca_sta_producer_task_send *task, union doca_data task_user_data)
Function to execute on STA task completion.
Definition: doca_sta_task.h:53
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
enum doca_error doca_error_t
DOCA API return codes.
Convenience type for representing opaque data.
Definition: doca_types.h:56