doca-verbs

Guides raw-verbs programming with QP, CQ, PD, and SRQ primitives inside NVIDIA DOCA Core.

3.2k|370|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/NVIDIA/skills --skill doca-verbs
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: doca-verbs
Source: https://github.com/NVIDIA/skills/tree/main/skills/doca-verbs
Command: npx skills add https://github.com/NVIDIA/skills --skill doca-verbs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers sometimes need low-level RDMA or Ethernet queue control that the higher-level DOCA libraries (doca-rdma, doca-eth, doca-rmax) do not expose, such as a specific work-request flag, QP attribute, SRQ option, or congestion-control group. This Skill helps an agent decide whether dropping to the raw doca-verbs API is justified, and then walks through configuring, building, porting, testing, and debugging doca_verbs_* code inside the DOCA Core lifecycle.

Core Features & Use Cases

  • Drop-down decision gating: Re-checks whether the higher-level DOCA library already covers the user's case and routes most users back up before any raw-verbs work begins.
  • Capability discovery: Uses doca_verbs_query_device and the doca_verbs_device_attr_get_* family to verify that a specific verb, opcode, WR flag, or QP feature is supported on the installed device and DOCA version.
  • libibverbs porting guidance: Walks through replacing ibv_* handles with doca_verbs_* handles, integrating with the DOCA Core lifecycle and progress engine, and enforcing the no-mixing rule between the two libraries.
  • Error diagnosis: Maps DOCA_ERROR_* results from doca_verbs_* calls to lifecycle, capability, permission, or completion-status causes, including the IO_FAILED rule that the answer lives in the completion-queue entry.
  • Use case: A developer porting an existing libibverbs sender that relies on a custom QP attribute can use this Skill to confirm the higher-level library cannot express it, capability-query the device, build the verbs context, and drive completions through the DOCA progress engine.

Quick Start

Ask your agent whether you need to drop to doca-verbs for a specific raw QP attribute that the doca-rdma task API does not expose, and have it walk the configure and capability-query workflow.

Frequently Asked Questions about doca-verbs

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
When should I use doca-verbs instead of doca-rdma?

Use doca-verbs only when doca-rdma's task abstractions genuinely do not expose the specific verb, opcode, work-request flag, QP attribute, or SRQ option you need. The skill's first step is confirming this drop-down decision; most general RDMA send, receive, read, and write work belongs in doca-rdma.

How do I port libibverbs code to DOCA Verbs?

Replace ibv_context ownership with doca_dev, build a doca_verbs_context with doca_verbs_context_create, create PD, CQ, and QP objects through the doca_verbs_* families, and drive completions through the DOCA progress engine. Mixing ibv_* and doca_verbs_* handles on the same hardware resources is unsupported.

How do I check if a QP feature is supported on my DOCA device?

Call doca_verbs_query_device against the active doca_devinfo and inspect the matching doca_verbs_device_attr_get_* function for the feature, such as _get_is_qp_type_supported or _get_is_ece_supported. Free the attribute handle with doca_verbs_device_attr_free afterward.

What does DOCA_ERROR_IO_FAILED from a verbs call mean?

DOCA_ERROR_IO_FAILED means the work request submitted successfully but the completion reports an error. The submit return value is not the answer; you must drain the completion queue and read the CQE error field to find the actual cause.

Can I mix libibverbs and doca-verbs on the same QP?

No. Mixing libibverbs handles with doca-verbs handles on the same hardware resources is unsupported and can fail silently far from the mixing point. Port the libibverbs code fully onto doca-verbs handles and run through one library at a time.

What are the limitations of the doca-verbs API surface?

The doca_verbs_* symbol family ships under the experimental ABI tier, so symbols may rename or reshape between DOCA releases. Only RC and UC QP types are defined, and the installed headers are the authoritative symbol surface rather than the public documentation.