1. DPDK Release 26.07

1.1. New Features

  • Changed mempool cache behaviour.

    • The mempool cache flush/refill algorithm was improved, to reduce the mempool cache miss rate for most application types. Applications where each lcore only puts or gets to a mempool, e.g. pipelined applications where ethdev Rx and Tx run on separate lcores, should adapt to the new algorithm by doubling their configured mempool cache size, to avoid doubling their mempool cache miss rate.

    • The effective size of a mempool cache was changed to match the specified size at mempool creation; the effective size was previously 50 % larger than requested.

    • The size of the struct rte_mempool_cache was kept for API/ABI compatibility purposes.

  • Added option to change memory limits per page size.

    Added the EAL option --pagesz-mem to override the default per-page-size memory limits. Each maximum can be configured with a pair <pagesz>:<limit>.

  • Added option to disable device auto probing.

    Added EAL options affecting the initial bus probing to find devices.

    • -A or --no-auto-probing disables the initial bus probing: no device is probed during rte_eal_init and the application is responsible for probing each device.

    • --auto-probing enables the initial bus probing, which is the current default behavior.

  • Added RISC-V vector paths.

    • Increased the default SIMD bitwidth to allow using the vector extension.

    • Added vectorized ACL which can process up to 8 flows in parallel.

    • Added vectorized IPv4 LPM lookup for the node library.

  • Added peek style API for staged-ordered ring (``rte_soring``).

    For sorings with producer/consumer in RTE_RING_SYNC_ST, RTE_RING_SYNC_MT_HTS mode, provide the ability to split enqueue/dequeue operation into two phases (enqueue/dequeue start and enqueue/dequeue finish). This allows the user to inspect objects in the ring without removing them (aka MT safe peek).

  • Added PTP protocol definitions.

    Added IEEE 1588 Precision Time Protocol header structures, constants, and inline helpers to lib/net/rte_ptp.h. Provides wire-format structures with endian-annotated types and correction field manipulation for transparent clock implementations.

  • Added PTP software relay example application.

    Added a new example application ptp_tap_relay_sw demonstrating a software PTP transparent clock relay between a DPDK port and a kernel TAP interface.

  • Added no-IOMMU mode to UACCE bus.

    Added no-IOMMU mode for devices that do not have or do not enable IOMMU/SVA support.

  • Added unplug operation support to VMBUS bus.

    Implemented device unplug operation to allow runtime removal of VMBUS devices.

  • Added selective Rx in ethdev API.

    Some parts of packets may be discarded in Rx by configuring a split of packets received in a queue, and assigning no mempool to some configuration segments. This is a driver capability advertised in the selective_rx bit.

  • Added vhost support for dynamic memory regions.

    The feature VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS has been implemented to support adding and removing memory regions without resetting the whole guest memory map.

  • Updated Google gve driver.

    Added hardware timestamping support on DQO queues.

  • Updated Intel iavf driver.

    • Added support for QinQ offloading operations.

    • Added support for transmitting LLDP packets based on mbuf packet type.

    • Implemented AVX2 context descriptor transmit paths.

  • Updated Intel ice driver.

    Added rl_burst_size devarg to configure the scheduler rate-limiter burst size, reducing Tx latency jitter for time-sensitive traffic.

  • Added LinkData sxe2 ethernet driver.

    Added network driver for the LinkData network adapters.

  • Updated Microsoft mana driver.

    Added device reset support to the MANA PMD, doing automatic recovery from hardware service reset events, and notification to upper layers of the reset lifecycle.

  • Updated NVIDIA mlx5 ethernet driver.

    Added support for selective Rx in scalar SPRQ Rx path.

  • Updated NXP dpaa2 driver.

    • Added RSS RETA query and update support.

    • Removed the software VLAN strip offload: RTE_ETH_RX_OFFLOAD_VLAN_STRIP is no longer advertised, as no hardware strip backs it. An application that needs the tag removed must now strip it itself.

    • Added Rx queue interrupt support.

  • Updated NXP enetc ethernet driver.

    • Added support for ESP packet type in packet parsing.

    • Added scatter-gather support for ENETC4 PFs and VFs.

    • Added devargs option enetc4_vsi_disable to disable VSI-PSI messaging.

    • Added devargs options enetc4_vsi_timeout and enetc4_vsi_delay for VSI-PSI messaging timeout and delay.

    • Added devargs option enetc4_txq_prior to set Tx queues priorities.

    • Added devargs option nc to select non-cacheable Rx/Tx ops.

  • Updated PCAP ethernet driver.

    • Added support for VLAN insertion and stripping.

    • Added support for reporting link state in iface mode.

    • Added support for link state interrupt in iface mode.

    • Added nanosecond precision to timestamp support.

    • Added snaplen devarg to configure packet capture snapshot length.

    • Added eof devarg to use link state to signal end of receive file input.

    • Added unit test suite.

  • Updated Wangxun ngbe driver.

    Implemented UDP Segmentation Offload (USO) in the transmit path. The RTE_ETH_TX_OFFLOAD_UDP_TSO capability was advertised since the driver’s initial integration but the data path was missing; it is now functional.

  • Updated Wangxun txgbe driver.

    • Implemented UDP Segmentation Offload (USO) in the transmit path. The RTE_ETH_TX_OFFLOAD_UDP_TSO capability was advertised since the driver’s initial integration but the data path was missing; it is now functional.

    • Added support for VF sensing PF down. VFs now detect when the PF goes down (via the mailbox TXGBE_VT_MSGTYPE_CTS flag) and report link down. When the PF comes back, the VF triggers an RTE_ETH_EVENT_INTR_RESET event so the application can reset the VF and resume normal packet Rx/Tx.

    • Added VF support for the Amber-Lite 40G NIC variant, with new device IDs 0x503f and 0x513f.

  • Updated Intel qat crypto driver dependency requirements.

    The QAT crypto PMD now requires IPsec MB library (v1.4.0+) for HMAC precomputes on all platforms. OpenSSL 3.0+ is now optional and used only for DOCSIS BPI cipher fallback. Previously, QAT could build with OpenSSL-only on x86.

    On ARM, both IPsec MB and OpenSSL are required for full functionality.

  • Updated Marvell cnxk crypto driver.

    Added support for ML-KEM and ML-DSA on CN20K platform.

  • Updated lcore validation in power library.

    Lcore ID validation was moved into the cpufreq framework before driver dispatch. Power QoS API was updated to accept service lcores.

  • Extended BPF API.

    • Added an extensible BPF loading API comprising the function rte_bpf_load_ex and struct rte_bpf_prm_ex. This enables new features such as loading classic BPF (cBPF), loading ELF images directly from memory buffers, and executing multi-argument programs, while avoiding future ABI breakages.

    • Added support for loading and executing BPF programs with up to 5 arguments. This introduces new API functions rte_bpf_exec_ex, rte_bpf_exec_burst_ex, and rte_bpf_get_jit_ex.

    • Added API functions rte_bpf_eth_rx_install and rte_bpf_eth_tx_install for installing already loaded BPF programs as port callbacks (as opposed to loading them directly from ELF files).

  • Added BPF validation debugging API and hardened BPF validator.

    • Introduced a new API (prefixed with rte_bpf_validate_debug_) to introspect the BPF validator. This provides a mechanism to set breakpoints or catchpoints during validation and inspect the verifier’s internal state (such as tracked register bounds). This API is crucial primarily for writing comprehensive tests for the validator, but also serves as a foundation for a future interactive eBPF validation debugger.

    • Fixed numerous bugs in the BPF validator’s abstract interpretation logic, including incorrect bounds tracking for jumps and arithmetic operations, as well as fixing several instances of undefined behavior (UB) when verifying malicious or corrupt programs.

  • Updated testpmd application.

    Added support for setting VLAN priority and CFI/DEI bits in tx_vlan set/tx_qinq set commands and vlan_tci parameter.

  • Added script for real-time telemetry monitoring.

    Introduced the dpdk-telemetry-watcher.py script, enabling users to monitor real-time telemetry statistics from running DPDK applications. The tool supports customizable display options, including delta values, total statistics, and single-line output for compact monitoring.

  • Added AI review helpers.

    Added AGENTS.md file for AI review and supporting scripts to review patches and documentation.

1.2. Removed Items

  • crypto/openssl: Removed support for OpenSSL 1.x versions from the OpenSSL crypto PMD.

    The OpenSSL crypto PMD now requires OpenSSL 3.0 as the minimum version, and all compatibility code for OpenSSL 1.0.1, 1.1.0, and 1.1.1 versions has been removed.

  • crypto/ipsec_mb: Removed Chacha20-poly1305 and KASUMI crypto drivers.

    The Chacha20-poly1305 and KASUMI drivers were just wrappers around the main AESNI_MB driver.

  • crypto/ipsec_mb: Removed ZUC and SNOW 3G crypto drivers from the x86 release.

    The ZUC and SNOW 3G crypto drivers are using APIs that are now deprecated in the Intel IPsec Multi-Buffer library.

1.3. API Changes

  • eal: Promoted rte_memeq_timingsafe() from experimental to stable.

  • ethdev: Promoted the following flow metadata symbols from experimental to stable:

    • rte_flow_dynf_metadata_register

    • rte_flow_dynf_metadata_offs

    • rte_flow_dynf_metadata_mask

    • rte_flow_dynf_metadata_avail

    • rte_flow_dynf_metadata_get

    • rte_flow_dynf_metadata_set

  • mlx5: Promoted the following driver event and steering management functions from experimental to stable:

    • rte_pmd_mlx5_driver_event_cb_register

    • rte_pmd_mlx5_driver_event_cb_unregister

    • rte_pmd_mlx5_enable_steering

    • rte_pmd_mlx5_disable_steering

  • ip_frag: Changed handling of malformed fragments.

    • Duplicate fragments are tolerated instead of failing reassembly.

    • Overlapping fragments are rejected on arrival rather than during reassembly.

    • Oversized fragments (reassembled length over 65535) are rejected.

    • For IPv6, fragments with per-fragment extension headers are rejected.

    Overlap and oversize are now detected on arrival, which adds a scan of the already received fragments per fragment and may affect throughput.

1.4. ABI Changes

  • No ABI change that would break compatibility with 25.11.

1.5. Tested Platforms

  • Intel® platforms with Intel® NICs combinations

    • CPU * Intel® Xeon® 6553P-B CPU @ 2.60GHz * Intel® Xeon® 6740E CPU @ 2.40GHz * Intel® Xeon® 6756P-B CPU @ 2.20GHz * Intel® Xeon® 6760P CPU @ 2.20GHz * Intel® Xeon® 6767P CPU @ 2.40GHz * Intel® Xeon® CPU Max 9480 CPU @ 1.90GHz * Intel® Xeon® Gold 6348 CPU @ 2.60GHz * Intel® Xeon® Gold 6430L CPU @ 1.90GHz * Intel® Xeon® Platinum 8468H CPU @ 2.10GHz * Intel® Xeon® Platinum 8490H CPU @ 1.90GHz

    • OS:

      • Fedora 43

      • FreeBSD 15.0

      • Microsoft Azure Linux 3.0

      • OpenAnolis OS 8.10

      • openEuler 24.03 (LTS-SP3)

      • Red Hat Enterprise Linux Server release 10

      • Red Hat Enterprise Linux Server release 9.6

      • Ubuntu 24.04.4 LTS

      • Ubuntu 26.04

      • Vmware Exsi 9.0

    • NICs:

      • Intel® Ethernet Controller E835-CC for SFP

        • Firmware version: 2.10 0x80018d57 1.4002.0

        • Device id (pf/vf): 8086:124a / 8086:1889

        • Driver version: 2.6.6 (ice)

        • OS Default DDP: 1.3.59.0

        • COMMS DDP: 1.3.63.0

        • Wireless Edge DDP: 1.3.28.0

      • Intel® Ethernet Controller E810-C for SFP (4x25G)

        • Firmware version: 5.00 0x80021c11 1.4002.0

        • Device id (pf/vf): 8086:1593 / 8086:1889

        • Driver version(out-of-tree): 2.6.6 (ice)

        • Driver version(in-tree): 7.0.0-15-generic (Ubuntu26.04) (ice)

        • OS Default DDP: 1.3.59.0

        • COMMS DDP: 1.3.63.0

        • Wireless Edge DDP: 1.3.28.0

      • Intel® Ethernet Controller E810-C for QSFP (2x100G)

        • Firmware version: 5.00 0x80021bcc 1.4002.0

        • Device id (pf/vf): 8086:1592 / 8086:1889

        • Driver version(out-of-tree): 2.6.6 (ice)

        • Driver version(in-tree): 6.6.119.3-1.azl3 (Microsoft Azure Linux 3.0) / 6.12.0-55.9.1.el10_0.x86_64+rt (RHEL10) / 7.0.0-15-generic (Ubuntu26.04) (ice)

        • OS Default DDP: 1.3.59.0

        • COMMS DDP: 1.3.63.0

        • Wireless Edge DDP: 1.3.28.0

      • Intel® Ethernet Controller E830-CC for QSFP

        • Firmware version: 2.10 0x80018d29 1.4002.0

        • Device id (pf/vf): 8086:12d2 / 8086:1889

        • Driver version: 2.6.6 (ice)

        • OS Default DDP: 1.3.59.0

        • COMMS DDP: 1.3.63.0

        • Wireless Edge DDP: 1.3.28.0

      • Intel® Ethernet Connection E825-C for QSFP

        • Firmware version: 4.10 0x800084d5 1.4002.0

        • Device id (pf/vf): 8086:579d / 8086:1889

        • Driver version: 2.6.6 (ice)

        • OS Default DDP: 1.3.59.0

        • COMMS DDP: 1.3.63.0

        • Wireless Edge DDP: 1.3.28.0

      • Intel® Ethernet Network Adapter E610-XT2

        • Firmware version: 1.60 0x8000f173 0.0.0

        • Device id (pf/vf): 8086:57b0 / 8086:57ad

        • Driver version(out-of-tree): 6.4.4 (ixgbe)

      • Intel® Ethernet Controller X550 1563

        • Firmware version: 3.70 0x8000184a 1.3052.0

        • Device id (pf/vf): 8086:1563 / 8086:1565

        • Driver version(out-of-tree): 6.4.4 (ixgbe)

      • Intel® Ethernet Converged Network Adapter X710-DA4 (4x10G)

        • Firmware version: 9.57 0x80010340 1.4002.0

        • Device id (pf/vf): 8086:1572 / 8086:154c

        • Driver version(out-of-tree): 2.30.18 (i40e)

        • Driver version(in-tree): 6.12.0-55.9.1.el10_0.x86_64 (RHEL10) (i40e)

      • Intel® Ethernet Converged Network Adapter XXV710-DA2 (2x25G)

        • Firmware version: 9.57 0x80010398 1.4002.0

        • Device id (pf/vf): 8086:158b / 8086:154c

        • Driver version(out-of-tree): 2.30.18 (i40e)

      • Intel® Ethernet Converged Network Adapter XL710-QDA2 (2X40G)

        • Firmware version(PF): 9.57 0x8001037b 1.4002.0

        • Device id (pf/vf): 8086:1583 / 8086:154c

        • Driver version(out-of-tree): 2.30.18 (i40e)

        • Driver version(in-tree): 7.0.0-27-generic (Ubuntu26.04) (i40e)

      • Intel® Corporation Ethernet Connection X722 for 10GbE SFP (2x10G)

        • Firmware version: 6.51 0x80004430 1.4002.0

        • Device id (pf/vf): 8086:37d0 / 8086:37cd

        • Driver version(out-of-tree): 2.30.18 (i40e)

      • Intel® Ethernet Controller I226-LM

        • Firmware version: 2.14, 0x8000028c

        • Device id (pf): 8086:125b

        • Driver version(in-tree): 7.0.0-15-generic (Ubuntu26.04) (igc)

      • Intel® Infrastructure Processing Unit (Intel® IPU) E2100

        • Firmware version: ci-ts.release.2.0.0.11126

        • Device id (idpf/cpfl): 8086:1452/8086:1453

        • Driver version: 1.0.13 (idpf)

  • Intel® platforms with NVIDIA® NICs combinations

    • CPU:

      • Intel® Xeon® Gold 6154 CPU @ 3.00GHz

      • Intel® Xeon® CPU E5-2697A v4 @ 2.60GHz

      • Intel® Xeon® CPU E5-2697 v3 @ 2.60GHz

      • Intel® Xeon® CPU E5-2680 v2 @ 2.80GHz

      • Intel® Xeon® CPU E5-2670 0 @ 2.60GHz

      • Intel® Xeon® CPU E5-2650 v4 @ 2.20GHz

      • Intel® Xeon® CPU E5-2650 v3 @ 2.30GHz

      • Intel® Xeon® CPU E5-2640 @ 2.50GHz

      • Intel® Xeon® CPU E5-2650 0 @ 2.00GHz

      • Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz

    • OS:

      • Red Hat Enterprise Linux release 9.2 (Plow)

      • Red Hat Enterprise Linux release 9.1 (Plow)

      • Red Hat Enterprise Linux release 8.6 (Ootpa)

      • Ubuntu 24.04

      • Ubuntu 22.04

      • SUSE Enterprise Linux 15 SP4

    • DOCA:

      • DOCA 3.5.0-035000 and above.

    • upstream kernel:

      • Linux 6.18.0 and above

    • rdma-core:

      • rdma-core-60.0 and above

    • NICs

      • NVIDIA® ConnectX®-6 Dx EN 100G MCX623106AN-CDAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:101d

        • Firmware version: 22.50.0394 and above

      • NVIDIA® ConnectX®-6 Lx EN 25G MCX631102AN-ADAT (2x25G)

        • Host interface: PCI Express 4.0 x8

        • Device ID: 15b3:101f

        • Firmware version: 26.50.0394 and above

      • NVIDIA® ConnectX®-7 200G CX713106AE-HEA_QP1_Ax (2x200G)

        • Host interface: PCI Express 5.0 x16

        • Device ID: 15b3:1021

        • Firmware version: 28.50.0394 and above

      • NVIDIA® ConnectX®-8 SuperNIC 400G MT4131 - 900-9X81Q-00CN-STA (2x400G)

        • Host interface: PCI Express 6.0 x16

        • Device ID: 15b3:1023

        • Firmware version: 40.50.0394 and above

      • NVIDIA® ConnectX®-9 SuperNIC 800G MT4133 - 900-9X91E-00EB-STA_Ax (1x800G)

        • Host interface: PCI Express 6.0 x16

        • Device ID: 15b3:1025

        • Firmware version: 82.50.0394 and above

  • NVIDIA® BlueField® SmartNIC

    • NVIDIA® BlueField®-2 SmartNIC MT41686 - MBF2H332A-AEEOT_A1 (2x25G)

      • Host interface: PCI Express 3.0 x16

      • Device ID: 15b3:a2d6

      • Firmware version: 24.50.0394 and above

    • NVIDIA® BlueField®-3 P-Series DPU MT41692 - 900-9D3B6-00CV-AAB (2x200G)

      • Host interface: PCI Express 5.0 x16

      • Device ID: 15b3:a2dc

      • Firmware version: 32.49.1014 and above

    • Embedded software:

      • Ubuntu 24.04

      • MLNX_OFED 26.07-0.3.5.0

      • DOCA 3.5.0-035000

      • bf-bundle-3.5.0-47_26.7_ubuntu-24.04

      • DPDK application running on ARM cores

  • IBM Power 9 platforms with NVIDIA® NICs combinations

    • CPU:

      • POWER9 2.2 (pvr 004e 1202)

    • OS:

      • Ubuntu 24.04

    • NICs:

      • NVIDIA® ConnectX®-6 Dx 100G MCX623106AN-CDAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:101d

        • Firmware version: 22.50.0394 and above

      • NVIDIA® ConnectX®-7 200G CX713106AE-HEA_QP1_Ax (2x200G)

        • Host interface: PCI Express 5.0 x16

        • Device ID: 15b3:1021

        • Firmware version: 28.50.0394 and above

    • DOCA:

      • DOCA 3.5.0-035000 and above

  • IBM Power 11 platforms with NVIDIA® NICs combinations

    • CPU:

      • Power11 2.0 (pvr 0082 0200)

    • OS:

      • Red Hat Enterprise Linux 10.2 (6.12.0-211.20.1.el10_2.ppc64le)

      • SUSE Linux Enterprise Server 15 SP7 (6.4.0-150700.53.66)

      • PowerVM LPARs via pHyp Hypervisor

    • NICs:

      • NVIDIA® ConnectX®-7 25GbE MCX713104AS-ADAT (4x25GbE)

        • Host interface: PCIe 4.0 x16

        • Driver version: 26.04-0.8.6

        • Firmware version: 28.48.1000

      • NVIDIA® ConnectX®-7 200GbE MCX755106AS-HEAT (2x200GbE)

        • Host interface: PCIe 5.0x16 with x16 PCIe extension option

        • Driver version: 26.04-0.8.6

        • Firmware version: 28.48.1000

    • DOCA:

      • DOCA 3.4.0-085000.ppc64le