What can I help you with?
DOCA Documentation v3.0.0

Changes and New Features

Note

The default operating system for BF-Bundle (BFB) will change from Ubuntu 22.04 to Ubuntu 24.04 in the DOCA 3.2 release, scheduled for October 2025.

  • Quantum X800: DOCA now supports the NVIDIA Quantum X800 InfiniBand network platform.

  • DOCA STA library: New DOCA library for Storage Target (STA).

  • DOCA Argus Service: New service for securing AI workloads with no host dependency.

  • DOCA Platform Framework (DPF): Trusted host use case is now generally available.

  • DOCA Installer Tool: New tool for installing multiple Bluefield DPUs concurrently.

  • DOCA Perftest Tool: New RDMA benchmarking tool for AI compute clusters, now generally available.

  • DOCA Telemetry Utils: Display and generate available counters/IDs.

  • Congestion Control: Added Long Haul and auto-slot-selection (RTT).

  • OVS-DOCA: Added remote port mirroring, VF tunnel offload, and performance optimizations.

  • DOCA HBN Service: Increased EVPN scale (16K VTEPs), BFD, ECMP enhancements.

  • DOCA Management Service (DMS): Supports container deployment, multi-device support, and file read/write (log/config).

  • DOCA FireFly Service: Added support for 2-port presentation and monitoring.

  • DOCA Rivermax performance optimizations.

  • dpa-resource-mgmt-tool: New tool for centralizing DPA-resource usage for all (NVIDIA and customer) DPA applications.

  • CUDA 12.8: The CUDA stack included with DOCA has been updated to version 12.8 .

  • NV-HWS Library: New hardware steering module now included in DOCA packages.

  • DOCA GPUNetIO: The package has been streamlined and no longer depends on DPDK.

  • virtio-fs in DOCA-Host: Added the virtio-fs driver to DOCA-Host packages.

  • SPCX-CC: The congestion control package has been renamed from NVNCC to SPCX-CC.

  • NVQual: Added support for PCIe Gen6.0 (CX8).

  • NVCert: NVLink support was added for systems using the GB200 and ConnectX-7 hardware

  • Public GitHub with DOCA Samples: DOCA Reference Applications and sample code are now available via the NVIDIA DOCA GitHub repository, in addition to DOCA local repository on the host/device (opt/...).

  • BlueField-3 Non-Interrupting Upgrade: Host PCIe

    is now available (beta).

  • BlueField ATX Power: The DPU shutdown on ATX disconnection at runtime has been removed to allow for uninterrupted operation and maintenance. However, running the DPU without re-connecting ATX power is not supported and may result in out-of-spec power levels, performance degradation, or hardware damage.

Note

NVIDIA BlueField-3 networking platforms must use DOCA-Host as the host driver. MLNX_OFED does not support BlueField-3 devices.

  • Trust Lockdown Health Syndrome: Added a new health syndrome for trust lockdown and expose the CRR bit in the health buffer. When the CRR bit is set, it indicates that the syndrome requires a cold reset for recovery.

  • A Single PTP Device per Hardware Clock: PHC is typically shared across multiple functions. Currently, the driver creates a separate PTP device for each network interface sharing the same PHC, resulting in redundancy and added complexity. To address this, a single PTP device is now created to represent the shared PHC when operating in real-time mode.

  • Log IB State Transitions: Enhanced visibility into IB device state transitions by adding log messages to the kernel log (dmesg). Each time an IB device changes state, a corresponding message will be logged. For example: "mlx5_0: Port: 1 Link DOWN".

  • Optional-counters Binding Support and New Packets/bytes Counters: Previously, optional counters were available only on a per-link basis. This release introduces the ability to bind optional counters to a specific counter object, enabling users to track optional counters across a specific QP group. Support is provided for both automatic and manual binding modes. In both cases, the optional counters that are bound to the QP are those currently configured on the link at the time of binding. Additionally, four new optional counters that track RDMA ingress and egress traffic are introduced: rdma_tx_bytes; rdma_tx_packets; rdma_rx_bytes; rdma_rx_packets. This functionality is exposed to users via the iproute2 package, which must be updated to support this feature.

  • User CAPability (UCAP) API: The User CAPability (UCAP) API introduces a mechanism for creating user contexts with specific firmware privileges. It offers fine-grained control over firmware features by exposing each capability as a character device with root-level read-write access. Root processes can grant users these privileges by allowing access to the corresponding character devices. When a user context is created using a UCAP file descriptor, it inherits the associated privileges. For mlx5, two UCAP character devices are provided, and any user context opened with at least one of them is treated as privileged. To guarantee the execution of privileged commands, non-privileged commands are restricted when a privileged user is active on the device.

  • PCIe Switch fwreset: Added support for a new synchronized flow, including a tool and driver, to perform a fwreset on setups with a PCIe switch configuration.

  • PTP: Unified PTP is now supported across different VFs on the same PF.

  • MADs: Added support for new MADs: PortRecoveryPolicyConfig and PortRecoveryPolicyCounters. During the PHY recovery process, the firmware core will indicate the port_logical_state as Active.

  • Multi-host MPFS LAG: In multi-host DPU mode, all ports are assigned to host0, while only port 0 is assigned to the other hosts. A global LAG is supported to manage all hosts.

  • Data-Path Accelerator (DPA): The DPA hardware version is now exposed as a new capability, labeled "dpa_platform_version."

  • Programmable Congestion Control (PCC) - RTT, DSCP: Enables users to manually set the DSCP in the IP header of the RTT response using mlxconfig. Additionally, the PPCC register now supports querying the count of processed RTT request packets per port.

  • Dynamic Long Cables: Added the ability to set cable length as a parameter in the PFCC access register. The cable length is used in the calculation of RX lossless buffer parameters, including size, Xoff, and Xon thresholds.

  • Block SMP Traffic: Added a new NV config (SM_DISABLE, default 0) which, when enabled, blocks SMP traffic that does not originate from the SM.

  • No new features, bug fixes only

The following table details the API changes that were introduced in this version of DOCA:

Library

Change Description

DOCA Common

Added

doca_dev.h

  • doca_error_t doca_devinfo_get_vhca_id(const struct doca_devinfo *devinfo, uint16_t *vhca_id)

  • doca_error_t doca_devinfo_rep_get_vhca_id(const struct doca_devinfo_rep *devinfo_rep, uint16_t *vhca_id)

doca_uar.h

doca_umem.h

DOCA DevEmu

Added

doca_devemu_pci_type.h

  • doca_error_t doca_devemu_pci_type_get_num_db(const struct doca_devemu_pci_type *pci_type, uint16_t *num_db)

  • doca_error_t doca_devemu_pci_type_set_num_db(struct doca_devemu_pci_type *pci_type, uint16_t num_db)

doca_devemu_pci.h

  • doca_error_t doca_devemu_pci_rep_get_hotplug_state(struct doca_dev_rep *rep_dev, enum doca_devemu_pci_hotplug_state *state)

DOCA DPA

Added

doca_dpa.h

  • doca_error_t doca_dpa_get_uar_id(const struct doca_dpa *dpa, uint32_t *uar_id)

  • doca_error_t doca_dpa_thread_get_id(struct doca_dpa_thread *dpa_thread, uint32_t *dpa_thread_id)

DOCA DPDK Bridge

Added

doca_dpdk.h

  • doca_error_t doca_dpdk_open_dev_rep_by_port_id(uint16_t port_id, struct doca_dev *dev, struct doca_dev_rep **rep)

  • doca_error_t doca_dpdk_get_rep_vf_index(const struct doca_devinfo_rep *rep, uint16_t *vf_idx)

  • doca_error_t doca_dpdk_get_rep_sf_num(const struct doca_devinfo_rep *rep, uint16_t *sf_num)

DOCA Ethernet

Added

doca_eth_rxq_cpu_data_path.h

  • doca_error_t doca_eth_rxq_task_recv_get_timestamp(const struct doca_eth_rxq_task_recv *task_recv, uint64_t *timestamp)

  • doca_error_t doca_eth_rxq_event_managed_recv_get_timestamp( const struct doca_eth_rxq_event_managed_recv *event_managed_recv, uint64_t *timestamp)

  • doca_error_t doca_eth_rxq_event_batch_managed_recv_get_timestamp_array( const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv, const uint64_t **timestamp_array)

  • struct doca_ctx *doca_eth_rxq_event_batch_managed_recv_get_ctx( const struct doca_eth_rxq_event_batch_managed_recv *event_batch_managed_recv)

doca_eth_rxq

  • doca_error_t doca_eth_rxq_set_packet_headroom(struct doca_eth_rxq *eth_rxq, uint16_t head_size)

  • doca_error_t doca_eth_rxq_set_packet_tailroom(struct doca_eth_rxq *eth_rxq, uint16_t tail_size)

  • doca_error_t doca_eth_rxq_set_timestamp(struct doca_eth_rxq *eth_rxq, uint8_t enable_timestamp)

  • doca_error_t doca_eth_rxq_cap_get_max_packet_headroom(const struct doca_devinfo *devinfo, uint16_t *max_packet_headroom)

  • doca_error_t doca_eth_rxq_cap_get_max_packet_tailroom(const struct doca_devinfo *devinfo, uint16_t *max_packet_tailroom)

doca_eth_txq_gpu_data_path.h

  • doca_error_t doca_eth_txq_gpu_set_completion_on_gpu(struct doca_eth_txq *eth_txq)

DOCA PCC

Added

doca_pcc_np_dev.h

  • void doca_pcc_np_dev_get_vlan_tci(const struct doca_pcc_np_dev_request_packet *input, uint8_t *vlan_present, uint16_t *vlan_tci)

  • void do ca_pcc_np_dev_set_response_prio(struct doca_pcc_np_dev_response_packet *out, uint32_t prio)

  • uint8_t doca_pcc_np_dev_get_packet_probe_type_slot(const struct doca_pcc_np_dev_request_packet *input)

doca_pcc_dev.h

  • Added value DOCA_PCC_DEV_EVNT_ROCE_TX_FOR_ACK_NACK to enum doca_pcc_dev_event_type_enum

doca_pcc.h

  • doca_error_t doca_pcc_activate_tracer(struct doca_pcc *pcc)

  • doca_error_t doca_pcc_deactivate_tracer(struct doca_pcc *pcc)

  • doca_error_t doca_pcc_trace_buf_set(struct doca_pcc *pcc, void *buf_addr, uint32_t buf_size)

  • doca_error_t doca_pcc_trace_buf_get(struct doca_pcc *pcc, void **buf_addr, uint32_t *buf_size)

  • doca_error_t doca_pcc_trace_file_set(struct doca_pcc *pcc, const char *file_path)

  • doca_error_t doca_pcc_trace_file_get(struct doca_pcc *pcc, char **file_path, uint32_t *file_path_len)

  • doca_error_t doca_pcc_register_trace_handler(struct doca_pcc *pcc, doca_pcc_trace_callback_t trace_callback, void *user_ctx)

doca_pcc_dev_ztr_rttcc_algo.h

  • void doca_pcc_dev_ztr_rttcc_debug_algo(doca_pcc_dev_algo_ctxt_t *algo_ctxt, doca_pcc_dev_event_t *event, const doca_pcc_dev_attr_t *attr, doca_pcc_dev_results_t *results)

  • void doca_pcc_dev_ztr_rttcc_debug_init(uint32_t algo_idx)

Removed

doca_pcc.h

  • doca_error_t doca_pcc_rp_set_ccmad_probe_priority_change_en(struct doca_pcc *pcc, uint32_t probe_format_slot, bool enable)

doca_pcc_dev_data_structures.h

  • Removed doca_pcc_dev_mp_ctx_t type

DOCA RDMA

A dded

doca_rdma.h

  • doca_error_t doca_rdma_bridge_prepare_connection(struct doca_rdma *rdma, struct rdma_cm_id *cm_id, struct doca_rdma_connection **rdma_connection)

Changed

doca_rdma.h

  • doca_error_t doca_rdma_bridge_accept(struct doca_rdma *rdma, struct rdma_cm_id *cm_id, void *private_data, uint8_t private_data_len, struct doca_rdma_connection *rdma_connection)

Info

To view API changes for previous DOCA versions, refer to the release notes for those versions.

© Copyright 2025, NVIDIA. Last updated on May 22, 2025.