MLX5DV_DEVX_QP_QUERY(3)
This is the mlx5dv_devx_qp[/...l]_modify / query(3) manual page π
β yes bestie, mlx5dv_devx_cq_modify is right here with the whole QP/CQ/SRQ/WQ/indirection-table modify/query crew.
πΈ NAME πΈ
The DEVX modify/query family, in all its glory:
mlx5dv_devx_qp_modifyβ modifies a verbs QP through DEVX.mlx5dv_devx_qp_queryβ queries a verbs QP through DEVX.mlx5dv_devx_cq_modifyβ modifies a verbs CQ through DEVX.mlx5dv_devx_cq_queryβ queries a verbs CQ through DEVX.mlx5dv_devx_srq_modifyβ modifies a verbs SRQ through DEVX.mlx5dv_devx_srq_queryβ queries a verbs SRQ through DEVX.mlx5dv_devx_wq_modifyβ modifies a verbs WQ through DEVX.mlx5dv_devx_wq_queryβ queries a verbs WQ through DEVX.mlx5dv_devx_ind_tbl_modifyβ modifies a verbs indirection table through DEVX.mlx5dv_devx_ind_tbl_queryβ queries a verbs indirection table through DEVX.
β¨ SYNOPSIS β¨
#include <infiniband/mlx5dv.h>
int mlx5dv_devx_qp_modify(struct ibv_qp *qp, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_qp_query(struct ibv_qp *qp, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_cq_modify(struct ibv_cq *cq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_cq_query(struct ibv_cq *cq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_srq_modify(struct ibv_srq *srq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_srq_query(struct ibv_srq *srq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_wq_modify(struct ibv_wq *wq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_wq_query(struct ibv_wq *wq, const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_ind_tbl_modify(struct ibv_rwq_ind_table *ind_tbl,
const void *in, size_t inlen,
void *out, size_t outlen);
int mlx5dv_devx_ind_tbl_query(struct ibv_rwq_ind_table *ind_tbl,
const void *in, size_t inlen,
void *out, size_t outlen);
π DESCRIPTION π
So the whole vibe here is: modify/query a verbs object over the DEVX interface. Iconic.
The DEVX API lets user space talk directly to the mlx5 device driver using the KABI mechanism β no cap, thatβs the whole point. The main character energy is making the user space driver as independent as possible from the kernel, so future device functionality and commands can be activated with minimal to none kernel changes. Obsessed with the flexibility.
The calls above let you modify/query a verbs object via DEVX, which means verbs and DEVX can interoperate. An app can create with the verbs method β like ibv_create_qp β and then modify and query that created object through DEVX, like mlx5dv_devx_qp_modify. Itβs giving teamwork, honestly.
π ARGUMENTS π
qp/cq/wq/srq/ind_tblβ theibv_xxxobject youβre issuing the action on.inβ a buffer holding the commandβs input data, provided in device specification format.inlenβ the size of theinbuffer, in bytes.outβ a buffer holding the commandβs output data according to the device specification format.outlenβ the size of theoutbuffer, in bytes.
π₯ RETURN VALUE π₯
On success you get 0. On failure you get the value of errno. Simple as that.
If that error value isEREMOTEIO, thenoutbox.statusandoutbox.syndromewill contain the command failure details. Keep an eye on those, bestie π
π¦ SEE ALSO π¦
mlx5dv_open_devicemlx5dv_devx_obj_create
π«Ά #AUTHOR π«Ά
Yishai Hadas <yishaih@mellanox.com>
Bye bestie π«Ά β footer shoutout: mlx5dv_devx_qp[/...l]_modify / query(3). The original footer doesnβt give a separate source/version/date line, so Iβm not inventing one πβ¨
π¦ where this page comes from
- alpine 3.24: rdma-core-doc 61.0-r0 Β· GPL-2.0-only OR BSD-2-Clause
- centos-stream 10: rdma-core-devel 62.0-3.el10 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms