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

# ionic\_dv\_pd\_set\_udma\_mask(3)

Restrict UDMA pipeline IDs of a protection domain

## NAME

ionic\_dv\_pd\_set\_udma\_mask - Restrict UDMA pipeline IDs of a protection domain

## SYNOPSIS

-

  ```
  #include <infiniband/ionic_dv.h>
  int ionic_dv_pd_set_udma_mask(struct ibv_pd *ibpd, uint8_t udma_mask);
  ```

## DESCRIPTION

**ionic\_dv\_pd\_set\_udma\_mask()** restricts the UDMA pipelines available for queues created under the protection domain or parent domain *ibpd*. Queues created after this call will be assigned to one of the pipelines enabled by *udma\_mask*.

The *udma\_mask* must be a subset of the device’s available UDMA pipelines, as returned by [**ionic\_dv\_ctx\_get\_udma\_mask**(3)](/ionic_dv_ctx_get_udma_mask/3.md).

Changing the UDMA mask of a protection domain has no effect on previously created queues.

The recommended usage pattern is:

- 1\.

  Create a protection domain with [**ibv\_alloc\_pd**(3)](/ibv_alloc_pd/3.md).

- 2\.

  Create parent domains of that PD for each desired UDMA mask using [**ibv\_alloc\_parent\_domain**(3)](/ibv_alloc_parent_domain/3.md).

- 3\.

  Set the desired UDMA mask on each parent domain with this function.

- 4\.

  Create queues associated with the parent domain that has the desired UDMA mask.

An alternative usage is to create a single PD and change its UDMA mask before creating each queue.

## ARGUMENTS

- *ibpd*

  The protection domain or parent domain to modify. Must be an ionic protection domain.

- *udma\_mask*

  A bitmask of UDMA pipeline IDs to enable. Must be a subset of the mask returned by [**ionic\_dv\_ctx\_get\_udma\_mask**(3)](/ionic_dv_ctx_get_udma_mask/3.md).

## RETURN VALUE

Returns 0 on success, or a positive errno value on failure:

- *EPERM*

  *ibpd* is not an ionic protection domain.

- *EINVAL*

  *udma\_mask* contains bits not present in the device’s UDMA mask.

## SEE ALSO

[**ionicdv**(7)](/ionicdv/7.md), [**ionic\_dv\_pd\_get\_udma\_mask**(3)](/ionic_dv_pd_get_udma_mask/3.md), [**ionic\_dv\_ctx\_get\_udma\_mask**(3)](/ionic_dv_ctx_get_udma_mask/3.md), [**ionic\_dv\_ctx\_get\_udma\_count**(3)](/ionic_dv_ctx_get_udma_count/3.md), [**ibv\_alloc\_pd**(3)](/ibv_alloc_pd/3.md), [**ibv\_alloc\_parent\_domain**(3)](/ibv_alloc_parent_domain/3.md)

## AUTHORS

Advanced Micro Devices, Inc.
