---
name: "efadv_create_qp_ex"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/efadv_create_qp_ex"
---

# efadv\_create\_qp\_ex(3)

Create EFA specific extended Queue Pair

## NAME

efadv\_create\_qp\_ex - Create EFA specific extended Queue Pair

## SYNOPSIS

-

  ```
  #include <infiniband/efadv.h>
  struct ibv_qp *efadv_create_qp_ex(struct ibv_context *ibvctx,
                    struct ibv_qp_init_attr_ex *attr_ex,
                    struct efadv_qp_init_attr *efa_attr,
                    uint32_t inlen);
  ```

## DESCRIPTION

**efadv\_create\_qp\_ex()** creates device-specific extended Queue Pair.

The argument attr\_ex is an ibv\_qp\_init\_attr\_ex struct, as defined in \<infiniband/verbs.h\>.

Use ibv\_qp\_to\_qp\_ex() to get the ibv\_qp\_ex for accessing the send ops iterator interface, when QP create attr IBV\_QP\_INIT\_ATTR\_SEND\_OPS\_FLAGS is used.

Scalable Reliable Datagram (SRD) transport provides reliable out-of-order delivery, transparently utilizing multiple network paths to reduce network tail latency. Its interface is similar to UD, in particular it supports message size up to MTU, with error handling extended to support reliable communication.

Compatibility is handled using the comp\_mask and inlen fields.

-

  ```
  struct efadv_qp_init_attr {
      uint64_t comp_mask;
      uint32_t driver_qp_type;
      uint16_t flags;
      uint8_t sl;
      uint8_t reserved;
      uint64_t wr_flags;
  };
  ```

- *inlen*

  In: Size of struct efadv\_qp\_init\_attr.

- *comp\_mask*

  Compatibility mask.

- *driver\_qp\_type*

  The type of QP to be created:

  EFADV\_QP\_DRIVER\_TYPE\_SRD: Create an SRD QP.

- *flags*

  -

  ```
    A bitwise OR of the values described below.
  ```

  EFADV\_QP\_FLAGS\_UNSOLICITED\_WRITE\_RECV: Receive WRs will not be consumed for RDMA write with imm. EFADV\_QP\_FLAGS\_INLINE\_WRITE: QP supports RDMA write with inline operations.

- *sl*

  Service Level - 0 value implies default level.

- *wr\_flags*

  A bitwise OR of the values described below. Controls which EFA-specific work request setter functions are available on the QP. Use **efadv\_qp\_from\_ibv\_qp\_ex()** to get the efadv\_qp for accessing the work request setter interface.

  EFADV\_WR\_EX\_WITH\_PROCESSING\_HINTS: Enable **efadv\_wr\_set\_processing\_hints()** on this QP.

## RETURN VALUE

efadv\_create\_qp\_ex() returns a pointer to the created QP, or NULL if the request fails.

## SEE ALSO

[**efadv**(7)](/efadv/7.md), [**ibv\_create\_qp\_ex**(3)](/ibv_create_qp_ex/3.md)

## AUTHORS

Gal Pressman ⟨galpress@amazon.com⟩\\c  Daniel Kranzdorf ⟨dkkranzd@amazon.com⟩\\c
