ibv_poll_cq

Polls a completion queue (CQ).

Syntax

#include <rdma/verbs.h>
int ibv_poll_cq(struct ibv_cq *cq, int num_entries, struct ibv_wc *wc)

Description

The ibv_poll_cq() routine polls the CQ cq for work completions and returns the first num_entries (or all available completions if the CQ contains fewer than this number) in the array wc. The argument wc is a pointer to an array of ibv_wc structs, as defined in <rdma/verbs.h>.
struct ibv_wc {
        uint64_t									wr_id;				/* ID of the completed Work Request (WR) */
        enum ibv_wc_status					status;			/* Status of the operation */
        enum ibv_wc_opcode					opcode;			/* Operation type specified in the completed WR */
        uint32_t									vendor_err;		/* Vendor error syndrome */
        uint32_t									byte_len;		/* Number of bytes transferred */
        uint32_t									imm_data;		/* Immediate data (in network byte order) */
        uint32_t									qp_num;			/* Local QP number of completed WR */
        uint32_t									src_qp;			/* Source QP number (remote QP number)  */
																						/* of completed WR */
        enum ibv_wc_flags					wc_flags;		/* Flags of the completed WR */
        uint16_t									pkey_index;		/* P_Key index (valid only for GSI QPs) */
        uint16_t									slid;				/* Source LID */
        uint8_t										sl;					/* Service Level */
        uint8_t										dlid_path_bits;	/* DLID path bits (not applicable for multicast */
																						/* messages) */
};
	enum ibv_wc_flags       		wc_flags;       /* Flags of the completed WR */
The attribute wc_flags describes the properties of the work completion. It is either 0 or the bitwise OR of one or more of the following flags:
IBV_WC_GRH
GRH is present.
IBV_WC_WITH_IMM
Immediate data value is valid.
Not all wc attributes are always valid. If the completion status is other than IBV_WC_SUCCESS, only the wr_id, status, qp_num, and vendor_err attributes are valid.
Note: Each polled completion is removed from the CQ and cannot be returned to it. You must consume work completions at a rate that prevents CQ overrun from occurrence. In case of a CQ overrun, the async event IBV_EVENT_CQ_ERR is triggered, and the CQ cannot be used.

Input Parameters

cq Specifies the struct ibv_cq from ibv_create_cq.
num_entries Specifies the maximum number of completion queue entries (CQE) to return.

Output Parameters

wc Specifies the CQE array.

Return Values

On success, the ibv_poll_cq() function returns a non negative value equal to the number of completions found. On failure, a negative value is returned.

-EINVAL Error, if cq, or cq->context is NULL.
[ Feedback ]