NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
nvmf_doca_io.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include <sys/queue.h>
#include <spdk/nvmf_transport.h>
#include <doca_error.h>
#include <doca_dpa.h>
#include <doca_dev.h>
#include <doca_buf.h>
#include <doca_buf_inventory.h>
#include <doca_buf_pool.h>
#include <doca_dma.h>
#include <doca_devemu_pci.h>
#include <doca_comch_msgq.h>
#include <doca_comch_producer.h>
#include <doca_comch_consumer.h>
Include dependency graph for nvmf_doca_io.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  nvmf_doca_cqe
 
struct  nvmf_doca_sqe
 
struct  nvmf_doca_dpa_msgq
 
struct  nvmf_doca_dpa_comch
 
struct  nvmf_doca_queue
 
struct  nvmf_doca_cq
 
struct  nvmf_doca_dma_pool
 
struct  nvmf_doca_request
 
struct  nvmf_doca_sq
 
struct  nvmf_doca_dpa_thread
 
struct  nvmf_doca_io
 
struct  nvmf_doca_io_create_attr
 
struct  nvmf_doca_io_add_sq_attr
 

Macros

#define NVMF_DOCA_CQE_SIZE   16
 
#define NVMF_DOCA_SQE_SIZE   64
 
#define DMA_POOL_DATA_BUFFER_SIZE   (1UL << 12)
 

Typedefs

typedef void(* nvmf_doca_cq_post_cqe_cb) (struct nvmf_doca_cq *cq, union doca_data user_data)
 
typedef void(* nvmf_doca_req_cb) (struct nvmf_doca_request *doca_req, void *cb_arg)
 
typedef void(* nvmf_doca_sq_stop_cb) (struct nvmf_doca_sq *sq)
 
typedef void(* nvmf_doca_sq_fetch_sqe_cb) (struct nvmf_doca_sq *sq, struct nvmf_doca_sqe *sqe, uint16_t sqe_idx)
 
typedef void(* nvmf_doca_sq_copy_data_cb) (struct nvmf_doca_sq *sq, struct doca_buf *dst, struct doca_buf *src, union doca_data user_data)
 
typedef void(* nvmf_doca_io_stop_cb) (struct nvmf_doca_io *io)
 

Enumerations

enum  nvmf_doca_sq_state {
  NVMF_DOCA_SQ_STATE_INITIAL , NVMF_DOCA_SQ_STATE_BIND_DB_REQUESTED , NVMF_DOCA_SQ_STATE_BIND_DB_DONE , NVMF_DOCA_SQ_STATE_READY ,
  NVMF_DOCA_SQ_STATE_UNBIND_DB_REQUESTED , NVMF_DOCA_SQ_STATE_UNBIND_DB_DONE
}
 
enum  nvmf_doca_sq_db_state { NVMF_DOCA_SQ_DB_UNBOUND , NVMF_DOCA_SQ_DB_BIND_REQUESTED , NVMF_DOCA_SQ_DB_BOUND , NVMF_DOCA_SQ_DB_UNBIND_REQUESTED }
 

Functions

doca_error_t nvmf_doca_io_create (const struct nvmf_doca_io_create_attr *attr, struct nvmf_doca_io *io)
 
void nvmf_doca_io_destroy (struct nvmf_doca_io *io)
 
void nvmf_doca_io_stop (struct nvmf_doca_io *io)
 
void nvmf_doca_io_add_sq (struct nvmf_doca_io *io, const struct nvmf_doca_io_add_sq_attr *attr, struct nvmf_doca_sq *sq)
 
void nvmf_doca_sq_stop (struct nvmf_doca_sq *sq)
 
void nvmf_doca_io_rm_sq (struct nvmf_doca_sq *sq)
 
void nvmf_doca_io_post_cqe (struct nvmf_doca_io *io, const struct nvmf_doca_cqe *cqe, union doca_data user_data)
 
struct doca_buf * nvmf_doca_sq_get_dpu_buffer (struct nvmf_doca_sq *sq)
 
struct doca_buf * nvmf_doca_sq_get_host_buffer (struct nvmf_doca_sq *sq, uintptr_t host_io_address)
 
void nvmf_doca_sq_copy_data (struct nvmf_doca_sq *sq, struct doca_buf *dst_buffer, struct doca_buf *src_buffer, size_t length, union doca_data user_data)
 
struct nvmf_doca_requestnvmf_doca_request_get (struct nvmf_doca_sq *sq)
 
void nvmf_doca_request_complete (struct nvmf_doca_request *request)
 
void nvmf_doca_request_free (struct nvmf_doca_request *request)
 

Macro Definition Documentation

◆ DMA_POOL_DATA_BUFFER_SIZE

#define DMA_POOL_DATA_BUFFER_SIZE   (1UL << 12)

Definition at line 50 of file nvmf_doca_io.h.

◆ NVMF_DOCA_CQE_SIZE

#define NVMF_DOCA_CQE_SIZE   16

Definition at line 47 of file nvmf_doca_io.h.

◆ NVMF_DOCA_SQE_SIZE

#define NVMF_DOCA_SQE_SIZE   64

Definition at line 48 of file nvmf_doca_io.h.

Typedef Documentation

◆ nvmf_doca_cq_post_cqe_cb

typedef void(* nvmf_doca_cq_post_cqe_cb) (struct nvmf_doca_cq *cq, union doca_data user_data)

Definition at line 93 of file nvmf_doca_io.h.

◆ nvmf_doca_io_stop_cb

typedef void(* nvmf_doca_io_stop_cb) (struct nvmf_doca_io *io)

Definition at line 176 of file nvmf_doca_io.h.

◆ nvmf_doca_req_cb

typedef void(* nvmf_doca_req_cb) (struct nvmf_doca_request *doca_req, void *cb_arg)

Definition at line 108 of file nvmf_doca_io.h.

◆ nvmf_doca_sq_copy_data_cb

typedef void(* nvmf_doca_sq_copy_data_cb) (struct nvmf_doca_sq *sq, struct doca_buf *dst, struct doca_buf *src, union doca_data user_data)

Definition at line 166 of file nvmf_doca_io.h.

◆ nvmf_doca_sq_fetch_sqe_cb

typedef void(* nvmf_doca_sq_fetch_sqe_cb) (struct nvmf_doca_sq *sq, struct nvmf_doca_sqe *sqe, uint16_t sqe_idx)

Definition at line 165 of file nvmf_doca_io.h.

◆ nvmf_doca_sq_stop_cb

typedef void(* nvmf_doca_sq_stop_cb) (struct nvmf_doca_sq *sq)

Definition at line 144 of file nvmf_doca_io.h.

Enumeration Type Documentation

◆ nvmf_doca_sq_db_state

Enumerator
NVMF_DOCA_SQ_DB_UNBOUND 
NVMF_DOCA_SQ_DB_BIND_REQUESTED 
NVMF_DOCA_SQ_DB_BOUND 
NVMF_DOCA_SQ_DB_UNBIND_REQUESTED 

Definition at line 137 of file nvmf_doca_io.h.

◆ nvmf_doca_sq_state

Enumerator
NVMF_DOCA_SQ_STATE_INITIAL 
NVMF_DOCA_SQ_STATE_BIND_DB_REQUESTED 
NVMF_DOCA_SQ_STATE_BIND_DB_DONE 
NVMF_DOCA_SQ_STATE_READY 
NVMF_DOCA_SQ_STATE_UNBIND_DB_REQUESTED 
NVMF_DOCA_SQ_STATE_UNBIND_DB_DONE 

Definition at line 128 of file nvmf_doca_io.h.

Function Documentation

◆ nvmf_doca_io_add_sq()

void nvmf_doca_io_add_sq ( struct nvmf_doca_io io,
const struct nvmf_doca_io_add_sq_attr attr,
struct nvmf_doca_sq sq 
)

Definition at line 2602 of file nvmf_doca_io.c.

◆ nvmf_doca_io_create()

doca_error_t nvmf_doca_io_create ( const struct nvmf_doca_io_create_attr attr,
struct nvmf_doca_io io 
)

Definition at line 1622 of file nvmf_doca_io.c.

◆ nvmf_doca_io_destroy()

void nvmf_doca_io_destroy ( struct nvmf_doca_io io)

Definition at line 1720 of file nvmf_doca_io.c.

◆ nvmf_doca_io_post_cqe()

void nvmf_doca_io_post_cqe ( struct nvmf_doca_io io,
const struct nvmf_doca_cqe cqe,
union doca_data  user_data 
)

Update the phase bit according to the iteration For every even iteration the phase should be 1, while for odd should be 0

Definition at line 1163 of file nvmf_doca_io.c.

◆ nvmf_doca_io_rm_sq()

void nvmf_doca_io_rm_sq ( struct nvmf_doca_sq sq)

Definition at line 2501 of file nvmf_doca_io.c.

◆ nvmf_doca_io_stop()

void nvmf_doca_io_stop ( struct nvmf_doca_io io)

Definition at line 1748 of file nvmf_doca_io.c.

◆ nvmf_doca_request_complete()

void nvmf_doca_request_complete ( struct nvmf_doca_request request)

Definition at line 2334 of file nvmf_doca_io.c.

◆ nvmf_doca_request_free()

void nvmf_doca_request_free ( struct nvmf_doca_request request)

Definition at line 2346 of file nvmf_doca_io.c.

◆ nvmf_doca_request_get()

struct nvmf_doca_request* nvmf_doca_request_get ( struct nvmf_doca_sq sq)

Definition at line 2291 of file nvmf_doca_io.c.

◆ nvmf_doca_sq_copy_data()

void nvmf_doca_sq_copy_data ( struct nvmf_doca_sq sq,
struct doca_buf *  dst_buffer,
struct doca_buf *  src_buffer,
size_t  length,
union doca_data  user_data 
)

Definition at line 1816 of file nvmf_doca_io.c.

◆ nvmf_doca_sq_get_dpu_buffer()

struct doca_buf* nvmf_doca_sq_get_dpu_buffer ( struct nvmf_doca_sq sq)

Definition at line 1794 of file nvmf_doca_io.c.

◆ nvmf_doca_sq_get_host_buffer()

struct doca_buf* nvmf_doca_sq_get_host_buffer ( struct nvmf_doca_sq sq,
uintptr_t  host_io_address 
)

Definition at line 1803 of file nvmf_doca_io.c.

◆ nvmf_doca_sq_stop()

void nvmf_doca_sq_stop ( struct nvmf_doca_sq sq)

Definition at line 2597 of file nvmf_doca_io.c.