blob: 388f98d5915ad043be615fb83bd03b8e4b95854d [file] [view]
---
layout: page
title: EFADV_CREATE_CQ
section: 3
tagline: Verbs
date: 2021-01-04
header: "EFA Direct Verbs Manual"
footer: efa
---
# NAME
efadv_create_cq - Create EFA specific Completion Queue (CQ)
# SYNOPSIS
```c
#include <infiniband/efadv.h>
struct ibv_cq_ex *efadv_create_cq(struct ibv_context *context,
struct ibv_cq_init_attr_ex *attr_ex,
struct efadv_cq_init_attr *efa_attr,
uint32_t inlen);
static inline int efadv_wc_read_sgid(struct efadv_cq *efadv_cq,
union ibv_gid *sgid);
```
# DESCRIPTION
**efadv_create_cq()** creates a Completion Queue (CQ) with specific driver
properties.
The argument attr_ex is an ibv_cq_init_attr_ex struct,
as defined in <infiniband/verbs.h>.
The EFADV work completions APIs (efadv_wc_\*) is an extension for IBV work
completions API (ibv_wc_\*) with efa specific features for polling fields in
the completion. This may be used together with or without ibv_wc_* calls.
Use efadv_cq_from_ibv_cq_ex() to get the efadv_cq for accessing the work
completion interface.
Compatibility is handled using the comp_mask and inlen fields.
```c
struct efadv_cq_init_attr {
uint64_t comp_mask;
uint64_t wc_flags;
uint64_t flags;
struct {
uint8_t *buffer;
uint64_t length;
uint64_t offset;
int32_t fd;
uint8_t reserved[4];
} ext_mem_dmabuf;
};
```
*inlen*
: In: Size of struct efadv_cq_init_attr.
*comp_mask*
: Compatibility mask.
*wc_flags*
: A bitwise OR of the various values described below.
EFADV_WC_EX_WITH_SGID:
if source AH is unknown, require sgid in WC.
EFADV_WC_EX_WITH_IS_UNSOLICITED:
request for an option to check whether a receive WC is unsolicited.
*flags*
: A bitwise OR of the various values described below.
EFADV_CQ_INIT_FLAGS_EXT_MEM_DMABUF:
create CQ with external memory provided via dmabuf.
*ext_mem_dmabuf*
: Structure containing information about external memory when using
EFADV_CQ_INIT_FLAGS_EXT_MEM_DMABUF flag.
buffer:
Pointer to the memory mapped in the process's virtual address space. The field is
optional, but if not provided, the use of CQ poll interfaces should be avoided.
length:
Length of the memory region to use.
fd:
File descriptor of the dmabuf.
offset:
Offset within the dmabuf.
# Completion iterator functions
*efadv_wc_read_sgid*
: Get the source GID field from the current completion.
If the AH is known, a negative error value is returned.
*efadv_wc_is_unsolicited*
: Check whether it's an unsolicited receive completion that has no matching work request.
This function is available if the CQ was created with EFADV_WC_EX_WITH_IS_UNSOLICITED.
# RETURN VALUE
efadv_create_cq() returns a pointer to the created extended CQ, or NULL if the
request fails.
# SEE ALSO
**efadv**(7), **ibv_create_cq_ex**(3)
# AUTHORS
Daniel Kranzdorf <dkkranzd@amazon.com>