MLX5DV_DEVX_WQ_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 β€” the ibv_xxx object you’re issuing the action on.
  • in β€” a buffer holding the command’s input data, provided in device specification format.
  • inlen β€” the size of the in buffer, in bytes.
  • out β€” a buffer holding the command’s output data according to the device specification format.
  • outlen β€” the size of the out buffer, in bytes.

πŸ”₯ RETURN VALUE πŸ”₯

On success you get 0. On failure you get the value of errno. Simple as that.

If that error value is EREMOTEIO, then outbox.status and outbox.syndrome will contain the command failure details. Keep an eye on those, bestie πŸ‘€

πŸ¦‹ SEE ALSO πŸ¦‹

  • mlx5dv_open_device
  • mlx5dv_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