3. Data Structures

3. Data Structures (PDF)

[Host]

Describes Flex IO thread affinity information.

Public Variables

uint32_t  id
enumflexio_affinity_type type

Variables

uint32_t flexio_affinity::id [inherited]

ID of the chosen resource (HART / DPA HART group). Reserved if affinity type none is set.

enumflexio_affinity_typeflexio_affinity::type [inherited]

Affinity type to use for a Flex IO thread (none, strict or group).

[Host]

Describes process attributes for creating a Flex IO application.

Public Variables

size_t  app_bsize
const char * app_name
void * app_ptr
char * app_sig_sec_name

Variables

size_t flexio_app_attr::app_bsize [inherited]

DPA application size (bytes).

const char * flexio_app_attr::app_name [inherited]

DPA application name.

void * flexio_app_attr::app_ptr [inherited]

Pointer in the ELF file for the DPA application.

char * flexio_app_attr::app_sig_sec_name [inherited]

Application signature section name.

[Host]

Describes process attributes for creating a Flex IO command queue (async RPC).

Public Variables

int  batch_size
enumflexio_cmdq_state state
int  workers

Variables

int flexio_cmdq_attr::batch_size [inherited]

Number of tasks to be executed to completion by invoked thread.

enumflexio_cmdq_stateflexio_cmdq_attr::state [inherited]

Command queue initial state.

int flexio_cmdq_attr::workers [inherited]

Number of available workers, each worker can handle up to batch_size number of tasks in a single invocation.

[Host]

Describes attributes for creating a Flex IO CQ.

Public Variables

uint8_t  always_armed
bool  cc
flexio_uintptr_t cq_dbr_daddr
uint16_t  cq_max_count
uint16_t  cq_period
flexio_cq_period_mode_t cq_period_mode
struct flexio_qmem cq_ring_qmem
flexio_cqe_comp_type cqe_comp_type
uint8_t  element_type
uint32_t  emulated_eqn
uint8_t  log_cq_depth
bool  no_arm
uint8_t  overrun_ignore
flexio_thread * thread
void * uar_base_addr
uint32_t  uar_id

Variables

uint8_t flexio_cq_attr::always_armed [inherited]

Indication to always arm for the created CQ

bool flexio_cq_attr::cc [inherited]

Indication to enable collapsed CQE for the created CQ.

flexio_uintptr_tflexio_cq_attr::cq_dbr_daddr [inherited]

DBR memory address for the created CQ.

uint16_t flexio_cq_attr::cq_max_count [inherited]

CQE compression max count (number of CQEs before creating an event).

uint16_t flexio_cq_attr::cq_period [inherited]

CQE compression period (number of usecs before creating an event).

flexio_cq_period_mode_tflexio_cq_attr::cq_period_mode [inherited]

CQE compression period mode (by CQE or by event).

struct flexio_qmemflexio_cq_attr::cq_ring_qmem [inherited]

Ring memory info for the created CQ.

flexio_cqe_comp_typeflexio_cq_attr::cqe_comp_type [inherited]

CQE compression type to use for the CQ (none, basic or enhanced).

uint8_t flexio_cq_attr::element_type [inherited]

Type of the element attached to the created CQ (thread, EQ, none, emulated EQ).

uint32_t flexio_cq_attr::emulated_eqn [inherited]

Emulated EQ number to attach to the created CQ

uint8_t flexio_cq_attr::log_cq_depth [inherited]

Log number of entries for the created CQ.

bool flexio_cq_attr::no_arm [inherited]

Indication to not arm the CQ on creation.

uint8_t flexio_cq_attr::overrun_ignore [inherited]

Indication to ignore overrun for the created CQ.

flexio_thread * flexio_cq_attr::thread [inherited]

Thread object to attach to the created CQ (only valid for element type thread).

void * flexio_cq_attr::uar_base_addr [inherited]

CQ UAR base address.

uint32_t flexio_cq_attr::uar_id [inherited]

CQ UAR ID.

[DevQueueTypes]

Describes Flex IO dev CQE.

Public Variables

__be32  byte_cnt
uint8_t  csum_ok
uint8_t  op_own
__be32  qpn
__be32  rsvd0[7]
uint8_t  rsvd29[3]
__be32  rsvd36[2]
__be32  rsvd48[2]
uint8_t  signature
__be32  srqn_uidx
__be16  wqe_counter

Variables

__be32 flexio_dev_cqe64::byte_cnt [inherited]

0Bh - Byte count.

uint8_t flexio_dev_cqe64::csum_ok [inherited]

07h 24..26 - checksum ok bits.

uint8_t flexio_dev_cqe64::op_own [inherited]

0Fh 0 - Ownership bit.

__be32 flexio_dev_cqe64::qpn [inherited]

0Eh - QPN.

__be32 flexio_dev_cqe64::rsvd0[7] [inherited]

00h..06h - Reserved.

uint8_t flexio_dev_cqe64::rsvd29[3] [inherited]

07h 0..23 - Reserved.

__be32 flexio_dev_cqe64::rsvd36[2] [inherited]

09h..0Ah - Reserved.

__be32 flexio_dev_cqe64::rsvd48[2] [inherited]

0Ch..0Dh - Reserved.

uint8_t flexio_dev_cqe64::signature [inherited]

0Fh 8..15 - Signature.

__be32 flexio_dev_cqe64::srqn_uidx [inherited]

08h - SRQ number or user index.

__be16 flexio_dev_cqe64::wqe_counter [inherited]

0Fh 16..31 - WQE counter.

[DevQueueTypes]

Describes Flex IO dev EQE.

Public Variables

__be32  cqn
flexio_dev_eqe::@8  event_data
uint8_t  owner
__be32  rsvd00[6]
uint8_t  rsvd00
uint8_t  rsvd02
__be16  rsvd3c
uint8_t  rsvd4[28]
uint8_t  signature
uint8_t  sub_type
uint8_t  type

Variables

__be32 flexio_dev_eqe::cqn [inherited]

18h 24 lsb - CQN.

flexio_dev_eqe::@8 flexio_dev_eqe::event_data [inherited]

20h - Event data.

uint8_t flexio_dev_eqe::owner [inherited]

3Fh - Owner.

__be32 flexio_dev_eqe::rsvd00[6] [inherited]

00h..17h - Reserved.

uint8_t flexio_dev_eqe::rsvd00 [inherited]

00h - Reserved.

uint8_t flexio_dev_eqe::rsvd02 [inherited]

02h - Reserved.

__be16 flexio_dev_eqe::rsvd3c [inherited]

3Ch - Reserved.

uint8_t flexio_dev_eqe::rsvd4[28] [inherited]

04h..1fh - Reserved.

uint8_t flexio_dev_eqe::signature [inherited]

3Eh - Signature.

uint8_t flexio_dev_eqe::sub_type [inherited]

03h - Sub type.

uint8_t flexio_dev_eqe::type [inherited]

01h - EQE type.

[DevQueueTypes]

Describes Flex IO dev send WQE segments. Only one segment can be set at a given time.

Public Variables

struct flexio_dev_wqe_atomic_seg atomic
struct flexio_dev_wqe_ctrl_seg ctrl
struct flexio_dev_wqe_eth_seg eth
struct flexio_dev_wqe_inline_data_seg inline_data
struct flexio_dev_wqe_inline_send_data_seg inline_send_data
struct flexio_dev_wqe_mem_ptr_send_data_seg mem_ptr_send_data
struct flexio_dev_wqe_rdma_seg rdma
struct flexio_dev_wqe_transpose_seg transpose

Variables

struct flexio_dev_wqe_atomic_segflexio_dev_sqe_seg::atomic [inherited]

Atomic segment.

struct flexio_dev_wqe_ctrl_segflexio_dev_sqe_seg::ctrl [inherited]

Control segment.

struct flexio_dev_wqe_eth_segflexio_dev_sqe_seg::eth [inherited]

Ethernet segment.

struct flexio_dev_wqe_inline_data_segflexio_dev_sqe_seg::inline_data [inherited]

Inline data segment.

struct flexio_dev_wqe_inline_send_data_segflexio_dev_sqe_seg::inline_send_data [inherited]

Inline send data segment.

struct flexio_dev_wqe_mem_ptr_send_data_segflexio_dev_sqe_seg::mem_ptr_send_data [inherited]

Memory pointer send data segment.

struct flexio_dev_wqe_rdma_segflexio_dev_sqe_seg::rdma [inherited]

RDMA segment.

struct flexio_dev_wqe_transpose_segflexio_dev_sqe_seg::transpose [inherited]

Transpose segment.

[DevQueueTypes]

Describes Flex IO dev WQE ATOMIC segment.

Public Variables

__be64  compare_data
__be64  swap_or_add_data

Variables

__be64 flexio_dev_wqe_atomic_seg::compare_data [inherited]

02h..03h - Compare operation data.

__be64 flexio_dev_wqe_atomic_seg::swap_or_add_data [inherited]

00h..01h - Swap or Add operation data.

[DevQueueTypes]

Describes Flex IO dev WQE control segment.

Public Variables

__be32  general_id
__be32  idx_opcode
__be32  qpn_ds
__be32  signature_fm_ce_se

Variables

__be32 flexio_dev_wqe_ctrl_seg::general_id [inherited]

03h - Control general ID.

__be32 flexio_dev_wqe_ctrl_seg::idx_opcode [inherited]

00h - WQE index and opcode.

__be32 flexio_dev_wqe_ctrl_seg::qpn_ds [inherited]

01h - QPN and number of data segments.

__be32 flexio_dev_wqe_ctrl_seg::signature_fm_ce_se [inherited]

02h - Signature, fence mode, completion mode and solicited event.

[DevQueueTypes]

Describes Flex IO dev WQE ethernet segment.

Public Variables

__be16  cs_swp_flags
__be16  inline_hdr_bsz
uint8_t  inline_hdrs[2]
__be16  mss
__be32  rsvd0
__be32  rsvd2

Variables

__be16 flexio_dev_wqe_eth_seg::cs_swp_flags [inherited]

01h 16..31 - CS and SWP flags.

__be16 flexio_dev_wqe_eth_seg::inline_hdr_bsz [inherited]

03h 16..31 - Inline headers size (bytes).

uint8_t flexio_dev_wqe_eth_seg::inline_hdrs[2] [inherited]

03h 0..15 - Inline headers (first two bytes).

__be16 flexio_dev_wqe_eth_seg::mss [inherited]

01h 0..15 - Max segment size.

__be32 flexio_dev_wqe_eth_seg::rsvd0 [inherited]

00h - Reserved.

__be32 flexio_dev_wqe_eth_seg::rsvd2 [inherited]

02h - Reserved.

[DevQueueTypes]

Describes Flex IO dev WQE inline data segment.

Public Variables

uint8_t  inline_data[16]

Variables

uint8_t flexio_dev_wqe_inline_data_seg::inline_data[16] [inherited]

00h..03h - Inline data.

[DevQueueTypes]

Describes Flex IO dev WQE inline send data segment.

Public Variables

__be32  byte_count
__be32  data_and_padding[3]

Variables

__be32 flexio_dev_wqe_inline_send_data_seg::byte_count [inherited]

00h - Byte count.

__be32 flexio_dev_wqe_inline_send_data_seg::data_and_padding[3] [inherited]

01h..03h - Data and padding array.

[DevQueueTypes]

Describes Flex IO dev WQE memory pointer send data segment.

Public Variables

__be64  addr
__be32  byte_count
__be32  lkey

Variables

__be64 flexio_dev_wqe_mem_ptr_send_data_seg::addr [inherited]

02h..03h - Address.

__be32 flexio_dev_wqe_mem_ptr_send_data_seg::byte_count [inherited]

00h - Byte count.

__be32 flexio_dev_wqe_mem_ptr_send_data_seg::lkey [inherited]

01h - Local key.

[DevQueueTypes]

Describes Flex IO dev WQE receive data segment.

Public Variables

__be64  addr
__be32  byte_count
__be32  lkey

Variables

__be64 flexio_dev_wqe_rcv_data_seg::addr [inherited]

02h..03h - Address.

__be32 flexio_dev_wqe_rcv_data_seg::byte_count [inherited]

00h - Byte count.

__be32 flexio_dev_wqe_rcv_data_seg::lkey [inherited]

01h - Local key.

[DevQueueTypes]

Describes Flex IO dev WQE RDMA segment.

Public Variables

__be64  raddr
__be32  rkey
__be32  rsvd0

Variables

__be64 flexio_dev_wqe_rdma_seg::raddr [inherited]

00h..01h - Remote address.

__be32 flexio_dev_wqe_rdma_seg::rkey [inherited]

02h - Remote key.

__be32 flexio_dev_wqe_rdma_seg::rsvd0 [inherited]

03h - Reserved.

[DevQueueTypes]

Describes Flex IO dev WQE transpose segment.

Public Variables

uint8_t  element_size
uint8_t  num_of_cols
uint8_t  num_of_rows
uint8_t  rsvd0[0x3]
uint8_t  rsvd1
uint8_t  rsvd2
uint8_t  rsvd4[0x8]

Variables

uint8_t flexio_dev_wqe_transpose_seg::element_size [inherited]

00h 0..7 - Matrix element size.

uint8_t flexio_dev_wqe_transpose_seg::num_of_cols [inherited]

01h 16..22 - Number of columns in matrix (7b).

uint8_t flexio_dev_wqe_transpose_seg::num_of_rows [inherited]

01h 0..6 - Number of rows in matrix (7b).

uint8_t flexio_dev_wqe_transpose_seg::rsvd0[0x3] [inherited]

00h 8..31 - Reserved.

uint8_t flexio_dev_wqe_transpose_seg::rsvd1 [inherited]

01h - Reserved.

uint8_t flexio_dev_wqe_transpose_seg::rsvd2 [inherited]

01h - Reserved.

uint8_t flexio_dev_wqe_transpose_seg::rsvd4[0x8] [inherited]

02h..03h - Reserved.

[Host]

Describes attributes for creating a Flex IO event handler.

Public Variables

struct flexio_affinity affinity
uint64_t  arg
int  continuable
flexio_func_t*host_stub_func
flexio_uintptr_t thread_local_storage_daddr

Variables

struct flexio_affinityflexio_event_handler_attr::affinity [inherited]

Thread's affinity information.

uint64_t flexio_event_handler_attr::arg [inherited]

Thread argument.

int flexio_event_handler_attr::continuable [inherited]

Thread continuable flag.

flexio_func_t* * flexio_event_handler_attr::host_stub_func [inherited]

Stub for the entry function of the thread.

flexio_uintptr_tflexio_event_handler_attr::thread_local_storage_daddr [inherited]

Address of the local storage buffer of the thread.

[Host]

Describes DPA log thread attributes for logging from the Device to the Host side.

Public Variables

size_t  data_bsize
enumflexio_log_dev_sync_mode sync_mode
flexio_uar * uar

Variables

size_t flexio_log_dev_attr::data_bsize [inherited]

Size of buffer, used for data transfer from Flex IO to HOST MUST be power of two and be at least 2Kb.

enumflexio_log_dev_sync_modeflexio_log_dev_attr::sync_mode [inherited]

Select between sync/async modes.

flexio_uar * flexio_log_dev_attr::uar [inherited]

A pointer to a Flex IO UAR object created by the caller for the device side.

[Host]

Describes process attributes for creating a Flex IO MKey.

Public Variables

int  access
flexio_uintptr_t daddr
size_t  len
ibv_pd * pd

Variables

int flexio_mkey_attr::access [inherited]

access contains the access mask for the MKey (Expected values: IBV_ACCESS_REMOTE_WRITE, IBV_ACCESS_LOCAL_WRITE).

flexio_uintptr_tflexio_mkey_attr::daddr [inherited]

DPA address the MKey is created for.

size_t flexio_mkey_attr::len [inherited]

Length of the address space the MKey is created for.

ibv_pd * flexio_mkey_attr::pd [inherited]

IBV protection domain information for the created MKey.

[Host]

Describes attributes for creating a Flex IO process.

Public Variables

ibv_pd * pd

Variables

ibv_pd * flexio_process_attr::pd [inherited]

IBV protection domain information for the created process. Passing NULL will result in an internal PD being created and used for the process.

[Host]

Describes queue memory, which may be either host memory or DPA memory

Public Variables

flexio_uintptr_t daddr
uint64_t  humem_offset
enumflexio_memtype memtype
uint32_t  umem_id

Variables

flexio_uintptr_tflexio_qmem::daddr [inherited]

DPA address of the queue memory (only valid for memtype FLEXIO_MEMTYPE_DPA).

uint64_t flexio_qmem::humem_offset [inherited]

Address offset in the umem of the queue memory (only valid for memtype FLEXIO_MEMTYPE_HOST).

enumflexio_memtypeflexio_qmem::memtype [inherited]

Type of memory to use (FLEXIO_MEMTYPE_DPA or FLEXIO_MEMTYPE_HOST).

uint32_t flexio_qmem::umem_id [inherited]

UMEM ID of the queue memory.

[Host]

Describes attributes for creating a Flex IO QP.

Public Variables

uint8_t * dest_mac
uint8_t  fl
uint8_t  gid_table_index
uint8_t  grh
int  log_rq_depth
uint8_t  log_rra_max
int  log_sq_depth
uint8_t  log_sra_max
uint32_t  min_rnr_nak_timer
uint32_t  next_rcv_psn
uint32_t  next_send_psn
flexio_qp_state next_state
int  no_sq
int  ops_flag
enumflexio_qp_qpc_mtu path_mtu
ibv_pd * pd
int  qp_access_mask
struct flexio_qmem qp_wq_buff_qmem
struct flexio_qmem qp_wq_dbr_qmem
uint32_t  remote_qp_num
uint8_t  retry_count
ibv_gid  rgid_or_rip
uint16_t  rlid
uint32_t  rq_cqn
int  rq_type
uint32_t  sq_cqn
uint32_t  transport_type
uint32_t  uar_id
uint16_t  udp_sport
uint32_t  user_index
uint8_t  vhca_port_num

Variables

uint8_t * flexio_qp_attr::dest_mac [inherited]

Destination MAC address to set for the modified QP

uint8_t flexio_qp_attr::fl [inherited]

Indication to enable force loopback for the modified QP.

uint8_t flexio_qp_attr::gid_table_index [inherited]

GID table index to set for the modified QP

uint8_t flexio_qp_attr::grh [inherited]

GRH to set for the modified QP.

int flexio_qp_attr::log_rq_depth [inherited]

Log number of entries of the QP's RQ.

uint8_t flexio_qp_attr::log_rra_max [inherited]

Log of the number of allowed outstanding RDMA read/atomic operations

int flexio_qp_attr::log_sq_depth [inherited]

Log number of entries of the QP's SQ.

uint8_t flexio_qp_attr::log_sra_max [inherited]

Log of the number of allowed outstanding RDMA read/atomic operations as requester

uint32_t flexio_qp_attr::min_rnr_nak_timer [inherited]

Minimal RNR NACK timer to set for the modified QP.

uint32_t flexio_qp_attr::next_rcv_psn [inherited]

Next receive PSN to set for the modified QP.

uint32_t flexio_qp_attr::next_send_psn [inherited]

Next send PSN to set for the modified QP.

flexio_qp_stateflexio_qp_attr::next_state [inherited]

QP state to move the QP to (reset, init, RTS, RTR).

int flexio_qp_attr::no_sq [inherited]

Indication to create the QP without an SQ.

int flexio_qp_attr::ops_flag [inherited]

Bitmask of enum flexio_qp_op_types, used to calculate WQE sizes.

enumflexio_qp_qpc_mtuflexio_qp_attr::path_mtu [inherited]

Path MTU to set for the modified QP.

ibv_pd * flexio_qp_attr::pd [inherited]

IBV protection domain information for the created QP.

int flexio_qp_attr::qp_access_mask [inherited]

QP's access permission (Expected values: IBV_ACCESS_REMOTE_WRITE, IBV_ACCESS_REMOTE_READ, IBV_ACCESS_REMOTE_ATOMIC, IBV_ACCESS_LOCAL_WRITE).

struct flexio_qmemflexio_qp_attr::qp_wq_buff_qmem [inherited]

Ring memory info for the created QP's WQ.

struct flexio_qmemflexio_qp_attr::qp_wq_dbr_qmem [inherited]

DBR memory info for the created QP's WQ.

uint32_t flexio_qp_attr::remote_qp_num [inherited]

Remote QP number to set for the modified QP.

uint8_t flexio_qp_attr::retry_count [inherited]

Retry count to set for the modified QP.

ibv_gid flexio_qp_attr::rgid_or_rip [inherited]

Remote GID or remote IP to set for the modified QP.

uint16_t flexio_qp_attr::rlid [inherited]

Remote LID to set for the modified QP.

uint32_t flexio_qp_attr::rq_cqn [inherited]

CQ number of the QP's RQ.

int flexio_qp_attr::rq_type [inherited]

QP's RQ type (regular, SRQ, zero-RQ)

uint32_t flexio_qp_attr::sq_cqn [inherited]

CQ number of the QP's SQ.

uint32_t flexio_qp_attr::transport_type [inherited]

QP's transport type (currently only FLEXIO_QPC_ST_RC is supported).

uint32_t flexio_qp_attr::uar_id [inherited]

QP UAR ID.

uint16_t flexio_qp_attr::udp_sport [inherited]

UDP port to set for the modified QP.

uint32_t flexio_qp_attr::user_index [inherited]

User defined user_index for the created QP.

uint8_t flexio_qp_attr::vhca_port_num [inherited]

VHCA port number to set for the modified QP.

[Host]

Describes QP modify operation mask.

Public Variables

bool  min_rnr_nak_timer
bool  qp_access_mask

Variables

bool flexio_qp_attr_opt_param_mask::min_rnr_nak_timer [inherited]

Indication to modify the QP's min_rnr_nak_timer field.

bool flexio_qp_attr_opt_param_mask::qp_access_mask [inherited]

Indication to modify the QP's qp_access_mask field.

[Host]

Describes attributes for creating a Flex IO WQ.

Public Variables

uint8_t  log_wq_depth
ibv_pd * pd
struct flexio_wq_sq_attr sq
uint32_t  uar_id
uint32_t  user_index
struct flexio_qmem wq_dbr_qmem
struct flexio_qmem wq_ring_qmem

Variables

uint8_t flexio_wq_attr::log_wq_depth [inherited]

Log number of entries for the created WQ.

ibv_pd * flexio_wq_attr::pd [inherited]

IBV protection domain struct to use for creating the WQ.

struct flexio_wq_sq_attrflexio_wq_attr::sq [inherited]

SQ attributes (used only for SQs).

uint32_t flexio_wq_attr::uar_id [inherited]

WQ UAR ID.

uint32_t flexio_wq_attr::user_index [inherited]

User defined user_index for the created WQ.

struct flexio_qmemflexio_wq_attr::wq_dbr_qmem [inherited]

DBR memory address for the created WQ.

struct flexio_qmemflexio_wq_attr::wq_ring_qmem [inherited]

Ring memory info for the created WQ.

[Host]

Describes attributes for creating a Flex IO SQ.

Public Variables

uint8_t  allow_multi_pkt_send_wqe

Variables

uint8_t flexio_wq_sq_attr::allow_multi_pkt_send_wqe [inherited]

Indication enable multi packet send WQE for the created SQ.

[Dev]

Describes Flex IO dev spinlock.

Public Variables

uint32_t  locked

Variables

uint32_t spinlock_s::locked [inherited]

Indication for spinlock lock state.

© Copyright 2023, NVIDIA. Last updated on Nov 13, 2023.