ibv_query_device

参考 rdmamojo

ibv_query_device() 返回与上下文关联的 RDMA 设备的属性。

以下是 struct ibv_device_attr 的完整描述:

NameDescription
transport设备传输类型
IBV_TRANSPORT_UNKNOWN = -1,
IBV_TRANSPORT_IB = 0,
IBV_TRANSPORT_IWARP,
IBV_TRANSPORT_USNIC,
IBV_TRANSPORT_USNIC_UDP,
IBV_TRANSPORT_UNSPECIFIED,
fw_ver一个以 NULL 结尾的字符串,用于描述 RDMA 设备的固件版本
node_guid与 RDMA 设备关联的 GUID(按网络字节顺序)。这与 ibv_get_device_guid() 返回的 GUID 相同
sys_image_guidGUID(按网络字节顺序)与此 RDMA 设备以及属于单个系统的其他设备相关联。例如:同一个 Core 交换机中的多个 Switch 芯片
max_mr_size此设备可注册的最大连续内存块的大小 (以字节为单位)
page_size_cap此设备支持的内存页面大小
vendor_idIEEE 设备的供应商
vendor_part_id供应商提供的 Devic 零件 ID
hw_verDevic's 硬件版本,由供应商提供
max_qp此设备支持的 UD/UC/RC 传输类型的最大 QP 数
max_qp_wr此设备支持的任何 Send 或 Receive Queue 上的最大未完成工作请求数
device_cap_flags设备支持的功能为以下枚举值按位OR运算:
  1. IBV_DEVICE_RESIZE_MAX_WR - 表示设备支持修改 QP 的最大未完成工作请求数
  2. IBV_DEVICE_BAD_PKEY_CNTR - 表示设备支持每个端口的不良P_Key计数
  3. IBV_DEVICE_BAD_QKEY_CNTR - 表示设备支持对每个端口进行Q_Key违规计数
  4. IBV_DEVICE_RAW_MULTI - 表示设备支持原始数据包组播
  5. IBV_DEVICE_AUTO_PATH_MIG - 表示设备支持自动路径迁移
  6. IBV_DEVICE_CHANGE_PHY_PORT - 表示设备支持在从 SQD 转换为 SQD 状态时更改 QP 的主端口号
  7. IBV_DEVICE_UD_AV_PORT_ENFORCE - 表示设备支持 AH 端口号强制
  8. IBV_DEVICE_CURR_QP_STATE_MOD - 表示在调用 ibv_modify_qp() 时设备支持 Current QP 状态修饰符
  9. IBV_DEVICE_SHUTDOWN_PORT - 表示设备支持关闭端口
  10. IBV_DEVICE_INIT_TYPE - 示设备支持设置 InitType 和 InitTypeReply
  11. IBV_DEVICE_PORT_ACTIVE_EVENT - 表示设备支持IBV_EVENT_PORT_ACTIVE事件生成
  12. IBV_DEVICE_SYS_IMAGE_GUID - 表示设备支持系统映像 GUID
  13. IBV_DEVICE_RC_RNR_NAK_GEN - 表示设备支持 RC QP 的 RNR-NAK 生成
  14. IBV_DEVICE_SRQ_RESIZE - 表示设备支持修改 SRQ 中未完成工作请求的最大数量
  15. IBV_DEVICE_N_NOTIFY_CQ - 表示在向 CQ 添加 N 个完成(而不仅仅是一个)时,设备支持请求完成通知
max_sge此设备支持的 RD 以外的 QP 中每个发送或接收工作请求的最大分散/收集条目数
max_sge_rd此设备在 RD QP 中支持的每个 Send 或 Receive Work Request 的最大分散/收集条目数。如果此设备不支持 RD,则此值为零
max_cq此设备支持的最大 CQ 数
max_cqe此设备支持的每个 CQ 中的最大条目数
max_mr此设备支持的最大 MR 数
max_pd此设备支持的最大 PD 数
max_qp_rd_atom如果支持的话,每个QP可以完成的RDMA读取和原子操作的最大数量。
max_ee_rd_atom如果支持的话,每个EEC可以完成的最大RDMA读取和原子操作数量。
max_qp_init_rd_atom如果支持的话,此设备启动RDMA读取和原子操作的每个QP的最大深度
max_ee_init_rd_atom如果支持的话,此设备启动RDMA读取和原子操作的每个EEC的最大深度
atomic_cap设备支持原子操作的能力。支持级别可以是以下枚举值之一:
  1. IBV_ATOMIC_NONE - 不支持原子操作
  2. IBV_ATOMIC_HCA - 仅保证此设备上的 QP 之间的原子性
  3. IBV_ATOMIC_GLOB - 证此设备与任何其他组件(如 CPU、IO 设备和其他 RDMA 设备)之间的原子性
max_ee此设备支持的最大 EE 上下文数。如果此设备不支持 RD,则此值为零
max_rdd此设备支持的最大 RDD 数。如果此设备不支持 RD,则此值为零
max_mw此设备支持的最大 MW 数。如果此设备不支持 MW,则此值为零, mw 为memory window, 可以与mr绑定
max_raw_ipv6_qp此设备支持的最大原始 IPv6 数据报 QP 数。如果此设备不支持原始 IPv6 数据报 QP,则此值为零
max_raw_ethy_qp此设备支持的最大原始 Ethertype 数据报 QP 数。如果此设备不支持原始 Ethertype 数据报 QP,则此值为零
max_mcast_grp此设备支持的最大组播组数。如果此设备不支持不可靠的多播,则此值为零
max_mcast_qp_attach此设备支持的每个组播组的最大 QP 数。如果此设备不支持不可靠的多播,则此值为零
max_total_mcast_qp_attach可附加到此设备的组播组的最大 QP 总数。如果此设备不支持不可靠的多播,则此值为零
max_ah此设备支持的最大 AH 数
max_fmr此设备支持的最大 FMR 数。如果此设备不支持 FMR,则此值为零
max_map_per_fmr此设备支持的每个 FMR 的最大映射数。如果此设备不支持 FMR,则此值为零
max_srq此设备支持的最大 SRQ 数。如果此设备不支持 SRQ,则此值为零
max_srq_wr此设备支持的 SRQ 中的最大未完成工作请求数
max_srq_sge此设备支持的 SRQ 中每个接收工作请求的最大分散条目数
max_pkeys此设备支持的最大分区数
local_ca_ack_delay本地 CA ACK 延迟。此值指定本地设备接收消息与传输关联的 ACK 或 NAK 之间的最大预期时间间隔。
phys_port_cnt此设备上的物理端口数

extra