/* Protection Domain associated with this QP */
u16 pd;
/* QP type */
u8 qp_type;
/* * 0 : sq_virt - If set, SQ ring base address is * virtual (IOVA returned by MR registration) * 1 : rq_virt - If set, RQ ring base address is * virtual (IOVA returned by MR registration) * 2 : unsolicited_write_recv - If set, work requests * will not be consumed for incoming RDMA write with * immediate * 7:3 : reserved - MBZ
*/
u8 flags;
/* * Send queue (SQ) ring base physical address. This field is not * used if this is a Low Latency Queue(LLQ).
*/
u64 sq_base_addr;
/* Receive queue (RQ) ring base address. */
u64 rq_base_addr;
/* Index of CQ to be associated with Send Queue completions */
u32 send_cq_idx;
/* Index of CQ to be associated with Recv Queue completions */
u32 recv_cq_idx;
/* * Memory registration key for the SQ ring, used only when not in * LLQ mode and base address is virtual
*/
u32 sq_l_key;
/* * Memory registration key for the RQ ring, used only when base * address is virtual
*/
u32 rq_l_key;
/* * Create Address Handle command parameters. Must not be called more than * once for the same destination
*/ struct efa_admin_create_ah_cmd { /* Common Admin Queue descriptor */ struct efa_admin_aq_common_desc aq_common_desc;
/* Destination address in network byte order */
u8 dest_addr[16];
/* * Registration of MemoryRegion, required for QP working with Virtual * Addresses. In standard verbs semantics, region length is limited to 2GB * space, but EFA offers larger MR support for large memory space, to ease * on users working with very large datasets (i.e. full GPU memory mapping).
*/ struct efa_admin_reg_mr_cmd { /* Common Admin Queue descriptor */ struct efa_admin_aq_common_desc aq_common_desc;
/* Protection Domain */
u16 pd;
/* MBZ */
u16 reserved16_w1;
/* Physical Buffer List, each element is page-aligned. */ union { /* * Inline array of guest-physical page addresses of user * memory pages (optimization for short region * registrations)
*/
u64 inline_pbl_array[4];
/* points to PBL (direct or indirect, chained if needed) */ struct efa_admin_ctrl_buff_info pbl;
} pbl;
/* Memory region length, in bytes. */
u64 mr_length;
/* * flags and page size * 4:0 : phys_page_size_shift - page size is (1 << * phys_page_size_shift). Page size is used for * building the Virtual to Physical address mapping * 6:5 : reserved - MBZ * 7 : mem_addr_phy_mode_en - Enable bit for physical * memory registration (no translation), can be used * only by privileged clients. If set, PBL must * contain a single entry.
*/
u8 flags;
/* * permissions * 0 : local_write_enable - Local write permissions: * must be set for RQ buffers and buffers posted for * RDMA Read requests * 1 : remote_write_enable - Remote write * permissions: must be set to enable RDMA write to * the region * 2 : remote_read_enable - Remote read permissions: * must be set to enable RDMA read from the region * 7:3 : reserved2 - MBZ
*/
u8 permissions;
/* MBZ */
u16 reserved16_w5;
/* number of pages in PBL (redundant, could be calculated) */
u32 page_num;
/* * IO Virtual Address associated with this MR. If * mem_addr_phy_mode_en is set, contains the physical address of * the region.
*/
u64 iova;
};
/* * Allocation of MemoryRegion, required for QP working with Virtual * Addresses in kernel verbs semantics, ready for fast registration use.
*/ struct efa_admin_alloc_mr_cmd { /* Common Admin Queue descriptor */ struct efa_admin_aq_common_desc aq_common_desc;
/* Protection Domain */
u16 pd;
/* MBZ */
u16 reserved1;
/* Maximum number of pages this MR supports. */
u32 max_pages;
};
/* * EFA AQ Get Statistics command. Extended statistics are placed in control * buffer pointed by AQ entry
*/ struct efa_admin_aq_get_stats_cmd { struct efa_admin_aq_common_desc aq_common_descriptor;
union { /* command specific inline data */
u32 inline_data_w1[3];
/* as appears in efa_admin_aq_feature_id */
u8 feature_id;
/* MBZ */
u16 reserved16;
};
struct efa_admin_feature_device_attr_desc { /* Bitmap of efa_admin_aq_feature_id */
u64 supported_features;
/* Bitmap of supported page sizes in MR registrations */
u64 page_size_cap;
u32 fw_version;
u32 admin_api_version;
u32 device_version;
/* Bar used for SQ and RQ doorbells */
u16 db_bar;
/* Indicates how many bits are used on physical address access */
u8 phys_addr_width;
/* Indicates how many bits are used on virtual address access */
u8 virt_addr_width;
/* * 0 : rdma_read - If set, RDMA Read is supported on * TX queues * 1 : rnr_retry - If set, RNR retry is supported on * modify QP command * 2 : data_polling_128 - If set, 128 bytes data * polling is supported * 3 : rdma_write - If set, RDMA Write is supported * on TX queues * 4 : unsolicited_write_recv - If set, unsolicited * write with imm. receive is supported * 31:5 : reserved - MBZ
*/
u32 device_caps;
/* Max RDMA transfer size in bytes */
u32 max_rdma_size;
/* Unique global ID for an EFA device */
u64 guid;
/* The device maximum link speed in Gbit/sec */
u16 max_link_speed_gbps;
/* MBZ */
u16 reserved0;
/* MBZ */
u32 reserved1;
};
struct efa_admin_feature_queue_attr_desc { /* The maximum number of queue pairs supported */
u32 max_qp;
/* Maximum number of WQEs per Send Queue */
u32 max_sq_depth;
/* Maximum size of data that can be sent inline in a Send WQE */
u32 inline_buf_size;
/* Maximum number of buffer descriptors per Recv Queue */
u32 max_rq_depth;
/* The maximum number of completion queues supported per VF */
u32 max_cq;
/* Maximum number of CQEs per Completion Queue */
u32 max_cq_depth;
/* Number of sub-CQs to be created for each CQ */
u16 sub_cqs_per_cq;
/* Minimum number of WQEs per SQ */
u16 min_sq_depth;
/* Maximum number of SGEs (buffers) allowed for a single send WQE */
u16 max_wr_send_sges;
/* Maximum number of SGEs allowed for a single recv WQE */
u16 max_wr_recv_sges;
/* The maximum number of memory regions supported */
u32 max_mr;
/* The maximum number of pages can be registered */
u32 max_mr_pages;
/* The maximum number of protection domains supported */
u32 max_pd;
/* The maximum number of address handles supported */
u32 max_ah;
/* The maximum size of LLQ in bytes */
u32 max_llq_size;
/* Maximum number of SGEs for a single RDMA read/write WQE */
u16 max_wr_rdma_sges;
/* * Maximum number of bytes that can be written to SQ between two * consecutive doorbells (in units of 64B). Driver must ensure that only * complete WQEs are written to queue before issuing a doorbell. * Examples: max_tx_batch=16 and WQE size = 64B, means up to 16 WQEs can * be written to SQ between two consecutive doorbells. max_tx_batch=11 * and WQE size = 128B, means up to 5 WQEs can be written to SQ between * two consecutive doorbells. Zero means unlimited.
*/
u16 max_tx_batch;
};
struct efa_admin_event_queue_attr_desc { /* The maximum number of event queues supported */
u32 max_eq;
/* Maximum number of EQEs per Event Queue */
u32 max_eq_depth;
struct efa_admin_feature_aenq_desc { /* bitmask for AENQ groups the device can report */
u32 supported_groups;
/* bitmask for AENQ groups to report */
u32 enabled_groups;
};
struct efa_admin_feature_network_attr_desc { /* Raw address data in network byte order */
u8 addr[16];
/* max packet payload size in bytes */
u32 mtu;
};
/* * When hint value is 0, hints capabilities are not supported or driver * should use its own predefined value
*/ struct efa_admin_hw_hints { /* value in ms */
u16 mmio_read_timeout;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.