dwww Home | Manual pages | Find package

MLX5DV_INIT_OBJ(3)         Library Functions Manual         MLX5DV_INIT_OBJ(3)

NAME
       mlx5dv_init_obj  -  Initialize  mlx5  direct  verbs object from ibv_xxx
       structures

SYNOPSIS
       #include <infiniband/mlx5dv.h>

       int mlx5dv_init_obj(struct mlx5dv_obj *obj, uint64_t obj_type);

DESCRIPTION
       mlx5dv_init_obj() This  function  will  initialize  mlx5dv_xxx  structs
       based  on  supplied  type.  The information for initialization is taken
       from ibv_xx structs supplied as part of input.

       Request information of CQ marks its owned by direct verbs for all  con-
       sumer index related actions. The initialization type can be combination
       of several types together.

       struct mlx5dv_qp {
               uint32_t                *dbrec;
               struct {
                       void            *buf;
                       uint32_t        wqe_cnt;
                       uint32_t        stride;
               } sq;
               struct {
                       void            *buf;
                       uint32_t        wqe_cnt;
                       uint32_t        stride;
               } rq;
               struct {
                       void            *reg;
                       uint32_t        size;
               } bf;
               uint64_t                comp_mask;
               off_t               uar_mmap_offset;
               uint32_t       tirn;
               uint32_t       tisn;
               uint32_t       rqn;
               uint32_t       sqn;
               uint64_t       tir_icm_address;
       };

       struct mlx5dv_cq {
               void                    *buf;
               uint32_t                *dbrec;
               uint32_t                cqe_cnt;
               uint32_t                cqe_size;
               void                    *cq_uar;
               uint32_t                cqn;
               uint64_t                comp_mask;
       };

       struct mlx5dv_srq {
               void                    *buf;
               uint32_t                *dbrec;
               uint32_t                stride;
               uint32_t                head;
               uint32_t                tail;
               uint64_t                comp_mask;
               uint32_t                srqn;
       };

       struct mlx5dv_rwq {
               void            *buf;
               uint32_t        *dbrec;
               uint32_t        wqe_cnt;
               uint32_t        stride;
               uint64_t        comp_mask;
       };

       struct mlx5dv_dm {
               void      *buf;
               uint64_t  length;
               uint64_t  comp_mask;
               uint64_t  remote_va;
       };

       struct mlx5dv_ah {
               struct mlx5_wqe_av    *av;
               uint64_t              comp_mask;
       };

       struct mlx5dv_pd {
               uint32_t              pdn;
               uint64_t              comp_mask;
       };

       struct mlx5dv_obj {
               struct {
                       struct ibv_qp           *in;
                       struct mlx5dv_qp        *out;
               } qp;
               struct {
                       struct ibv_cq           *in;
                       struct mlx5dv_cq        *out;
               } cq;
               struct {
                       struct ibv_srq          *in;
                       struct mlx5dv_srq       *out;
               } srq;
               struct {
                       struct ibv_wq           *in;
                       struct mlx5dv_rwq       *out;
               } rwq;
               struct {
                       struct ibv_dm       *in;
                       struct mlx5dv_dm    *out;
               } dm;
               struct {
                       struct ibv_ah       *in;
                       struct mlx5dv_ah    *out;
               } ah;
               struct {
                       struct ibv_pd           *in;
                       struct mlx5dv_pd        *out;
               } pd;
       };

       enum mlx5dv_obj_type {
               MLX5DV_OBJ_QP   = 1 << 0,
               MLX5DV_OBJ_CQ   = 1 << 1,
               MLX5DV_OBJ_SRQ  = 1 << 2,
               MLX5DV_OBJ_RWQ  = 1 << 3,
               MLX5DV_OBJ_DM   = 1 << 4,
               MLX5DV_OBJ_AH   = 1 << 5,
               MLX5DV_OBJ_PD   = 1 << 6,
       };

RETURN VALUE
       0 on success or the value of errno  on  failure  (which  indicates  the
       failure reason).

NOTES
        *   The   information   if   doorbell   is   blueflame   is  based  on
       mlx5dv_qp->bf->size, in case of 0 it's not a BF.
        * Compatibility masks (comp_mask) are in/out fields.

SEE ALSO
       mlx5dv(7)

AUTHORS
       Leon Romanovsky <leonro@mellanox.com>

1.0.0                             2017-02-02                MLX5DV_INIT_OBJ(3)

Generated by dwww version 1.14 on Fri Jan 24 06:06:00 CET 2025.