Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Thursday, June 13, 2019

ibv_query_qp (3)


ibv_query_qp - get the attributes of a queue pair (QP)


#include <infiniband/verbs.h>

int ibv_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr,
int attr_mask,
struct ibv_qp_init_attr *init_attr);


Libibverbs Programmer's Manual                                 IBV_QUERY_QP(3)

       ibv_query_qp - get the attributes of a queue pair (QP)

       #include <infiniband/verbs.h>

       int ibv_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr,
                        int attr_mask,
                        struct ibv_qp_init_attr *init_attr);

       ibv_query_qp() gets the attributes specified in attr_mask for the QP qp
       and returns them through the pointers attr and init_attr.  The argument
       attr is an ibv_qp_attr struct, as defined in <infiniband/verbs.h>.

       struct ibv_qp_attr {
               enum ibv_qp_state       qp_state;            /* Current QP state */
               enum ibv_qp_state       cur_qp_state;        /* Current QP state - irrelevant for ibv_query_qp */
               enum ibv_mtu            path_mtu;            /* Path MTU (valid only for RC/UC QPs) */
               enum ibv_mig_state      path_mig_state;      /* Path migration state (valid if HCA supports APM) */
               uint32_t                qkey;                /* Q_Key of the QP (valid only for UD QPs) */
               uint32_t                rq_psn;              /* PSN for receive queue (valid only for RC/UC QPs) */
               uint32_t                sq_psn;              /* PSN for send queue (valid only for RC/UC QPs) */
               uint32_t                dest_qp_num;         /* Destination QP number (valid only for RC/UC QPs) */
               int                     qp_access_flags;     /* Mask of enabled remote access operations (valid only for RC/UC QPs) */
               struct ibv_qp_cap       cap;                 /* QP capabilities */
               struct ibv_ah_attr      ah_attr;             /* Primary path address vector (valid only for RC/UC QPs) */
               struct ibv_ah_attr      alt_ah_attr;         /* Alternate path address vector (valid only for RC/UC QPs) */
               uint16_t                pkey_index;          /* Primary P_Key index */
               uint16_t                alt_pkey_index;      /* Alternate P_Key index */
               uint8_t                 en_sqd_async_notify; /* Enable SQD.drained async notification - irrelevant for ibv_query_qp */
               uint8_t                 sq_draining;         /* Is the QP draining? (Valid only if qp_state is SQD) */
               uint8_t                 max_rd_atomic;       /* Number of outstanding RDMA reads & atomic operations on the destination QP (valid only for RC QPs) */
               uint8_t                 max_dest_rd_atomic;  /* Number of responder resources for handling incoming RDMA reads & atomic operations (valid only for RC QPs) */
               uint8_t                 min_rnr_timer;       /* Minimum RNR NAK timer (valid only for RC QPs) */
               uint8_t                 port_num;            /* Primary port number */
               uint8_t                 timeout;             /* Local ack timeout for primary path (valid only for RC QPs) */
               uint8_t                 retry_cnt;           /* Retry count (valid only for RC QPs) */
               uint8_t                 rnr_retry;           /* RNR retry (valid only for RC QPs) */
               uint8_t                 alt_port_num;        /* Alternate port number */
               uint8_t                 alt_timeout;         /* Local ack timeout for alternate path (valid only for RC QPs) */

       For  details  on  struct  ibv_qp_cap  see  the  description of ibv_cre-
       ate_qp().  For details on struct ibv_ah_attr  see  the  description  of

       ibv_query_qp()  returns  0 on success, or the value of errno on failure
       (which indicates the failure reason).

       See attributes(7) for descriptions of the following attributes:

       |Availability   | network/open-fabrics  |
       |Stability      | Pass-through volatile |
       The argument attr_mask is a hint that specifies  the  minimum  list  of
       attributes  to retrieve.  Some RDMA devices may return extra attributes
       not requested, for example if the value can be returned  cheaply.  This
       has the same form as in ibv_modify_qp().

       Attribute values are valid if they have been set using ibv_modify_qp().
       The exact list of valid attributes depends on the QP state.

       Multiple calls to ibv_query_qp() may yield some differences in the val-
       ues  returned  for  the following attributes: qp_state, path_mig_state,
       sq_draining, ah_attr (if APM is enabled).

       ibv_create_qp(3), ibv_destroy_qp(3), ibv_modify_qp(3), ibv_create_ah(3)

       Dotan Barak <dotanba@gmail.com>

              This   software   was   built   from   source    available    at
              https://github.com/oracle/solaris-userland.  The original commu-
              nity  source   was   downloaded   from    ['https://www.openfab-
              verbs-1.1.8.tar.gz',          'https://www.openfabrics.org/down-
              loads/libmlx4/libmlx4-1.0.6.tar.gz',       'https://www.openfab-
              diags-1.6.5.tar.gz', 'https://www.openfabrics.org/downloads/man-
              agement/libibmad-1.3.12.tar.gz',           'https://www.openfab-
              ment/opensm-3.3.19.tar.gz',   'https://www.openfabrics.org/down-
              loads/qperf/qperf-0.4.9.tar.gz',           'https://www.openfab-

              Further information about this software can be found on the open
              source community website at http://www.openfabrics.org/.

libibverbs                        2006-10-31                   IBV_QUERY_QP(3)