ionic_dv_pd_set_sqcmb - Man Page

Specify send queue preference for controller memory bar

Synopsis

#include <infiniband/ionic_dv.h>

int ionic_dv_pd_set_sqcmb(struct ibv_pd *ibpd, bool enable, bool expdb,
                           bool require);

Description

ionic_dv_pd_set_sqcmb() configures the controller memory bar (CMB) preferences for send queues created under the protection domain ibpd. Send queues created after this call will use the CMB according to the specified preferences.

When CMB is enabled, the send queue ring buffer is placed in device memory (the controller memory bar) instead of host memory, which can reduce doorbell latency.

Express doorbell (expdb) is an additional optimization that further reduces doorbell overhead when the send queue is placed in CMB.

The require flag controls whether creation should fail if the requested CMB preferences cannot be met. When require is false, the driver will fall back to host memory if CMB is unavailable.

Arguments

ibpd

The protection domain to configure. Must be an ionic protection domain.

enable

Allow the use of the controller memory bar for send queues.

expdb

Allow the use of express doorbell optimizations. Only meaningful when enable is true.

require

Require that the CMB preferences are met. If true and the preferences cannot be satisfied, queue creation will fail instead of falling back to host memory. Only meaningful when enable is true.

Return Value

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

EPERM

ibpd is not an ionic protection domain.

EINVAL

require is true with expdb true, but the device does not support express doorbell for send queues.

See Also

ionicdv(7), ionic_dv_pd_set_rqcmb(3), ionic_dv_pd_set_udma_mask(3)

Authors

Advanced Micro Devices, Inc.

Referenced By

ionicdv(7), ionic_dv_pd_set_rqcmb(3).

2025-06-23 Ionic Programmer’s Manual