1. DPDK Release 25.07

1.1. New Features

  • Enhanced EAL ``-l`` corelist argument.

    Added support to the EAL -l argument for the full range of core-to-cpu mapping options supported by the --lcores EAL argument. Previously, -l only supported a subset of the options, allowing only a list of CPUs to be specified, which would be mapped 1:1 with internal lcore IDs. Now, it is possible to use the shortened -l form to map lcore IDs to threads running on specific CPUs.

    See the Lcore-related options guide for examples.

  • Added PMU library.

    Added a Performance Monitoring Unit (PMU) library which allows Linux applications to perform self monitoring activities without depending on external utilities like perf.

  • Updated Amazon ENA (Elastic Network Adapter) net driver.

    • Added support for enabling fragment bypass mode for egress packets. This mode bypasses the PPS limit enforced by EC2 for fragmented egress packets on every ENI.

    • Fixed the device initialization routine to correctly handle failure during the registration or enabling of interrupts when operating in control path interrupt mode.

    • Fixed an issue where the device might be incorrectly reported as unresponsive when using polling-based admin queue functionality with a poll interval of less than 500 milliseconds.

  • Added Mucse rnp net driver.

    Added a new network PMD which supports Mucse 10 Gigabit Ethernet NICs. See the RNP Poll Mode driver for more details.

  • Added RSS type for RoCE v2.

    Added RTE_ETH_RSS_IB_BTH flag so that the RoCE InfiniBand Base Transport Header can be used as input for RSS.

  • Added burst mode query function to Intel drivers.

    Added support for Rx and Tx burst mode query to the following drivers:

    • e1000 (igb)

    • ixgbe

    • iavf

  • Added Tx packet pacing support to Intel ice net driver.

    Intel® Ethernet E830 network adapters support delayed/timed packet Tx based on timestamp. Support for this feature was added to the ice ethdev driver.

  • Updated NVIDIA mlx5 driver.

    • Support matching on IPv6 frag extension header with async flow template API.

  • Updated Solarflare network driver.

    • Added support for AMD Solarflare X45xx adapters.

  • Updated virtio driver.

    • Added support for Rx and Tx burst mode query.

  • Added ZTE Storage Data Accelerator (ZSDA) crypto driver.

    Added a crypto driver for ZSDA devices to support some encrypt, decrypt and hash algorithms.

    See the ZTE Storage Data Accelerator (ZSDA) Poll Mode Driver guide for more details on the new driver.

  • Updated Marvell cnxk crypto driver.

    • Added support for CN20K SoC in cnxk CPT driver.

    • Added support for session-less asymmetric operations.

  • Updated UADK crypto & compress driver.

    • Updated to init2 interface which requires v2.9.1 of the UADK library.

    • Updated to asynchronous mode for better performance.

  • Added eventdev vector adapter.

    Added the event vector adapter library. This library extends the event-based model by introducing API that allow applications to offload creation of event vectors, thereby reducing the scheduling latency.

    Added vector adapter producer mode in eventdev test to measure performance.

    See the Event Vector Adapter Library guide for more details on the new library.

  • Added event vector adapter support in CN20K event device driver.

    Added support for the event vector adapter in the CN20K event device driver. This allows the CN20K to offload rte_event_vector creation and aggregation of objects originating from the CPU.

  • Added feature arc support in graph library.

    Feature arc helps rte_graph based applications to manage multiple network protocols/features with runtime configurability, in-built node-reusability and optimized control/data plane synchronization.

    See section Graph feature arc in Graph Library and Inbuilt Nodes for more details.

    • Added ip4 output feature arc processing in ip4_rewrite node.

  • Added support for string and boolean types to the argparse library.

    The argparse library now supports parsing of string and boolean types. String values are simply saved as-is, while the boolean support allows for values “true”, “false”, “1” or “0”.

  • Added graph nodes specific shared mbuf dynamic field.

    Instead each node registers its own mbuf dynamic field for its specific purpose, a global/shared structure was added which can be used/overloaded by any node (including out-of-tree nodes). This minimizes footprint of node specific mbuf dynamic field.

1.2. Removed Items

  • eal: Removed the rte_function_versioning.h header from the exported headers.

  • crypto/qat: Removed ZUC-256 algorithms from Intel QuickAssist Technology PMD.

    Due to changes in the specification related to IV size and initialization sequence, support for ZUC-256 cipher and integrity algorithms was removed from Gen 3 and Gen 5 PMD.

1.3. API Changes

  • memory: Added secure functions to force zeroing some memory, bypassing compiler optimizations: rte_memzero_explicit() and rte_free_sensitive().

  • graph: Added graph field to the rte_node.dispatch structure.

  • argparse: The rte_argparse_arg structure used for defining arguments has been updated. See ABI changes in the next section for details.

1.4. ABI Changes

  • No ABI change that would break compatibility with 24.11.

  • argparse: The experimental argparse library has had the following updates:

    • The main parsing function, rte_argparse_parse(), now returns the number of arguments parsed on success, rather than zero. It still returns a negative value on error.

    • When parsing a list of arguments, rte_argparse_parse() stops processing arguments when a -- argument is encountered. This behaviour mirrors the behaviour of the getopt() function, as well as the behaviour of rte_eal_init() function.

    • The rte_argparse_arg structure used for defining arguments has been updated to separate out into separate fields the options for:

      1. Whether the argument is required or optional.

      2. What the type of the argument is (in case of saving the parameters automatically).

      3. Any other flags - of which there is only one, RTE_ARGPARSE_FLAG_SUPPORT_MULTI, at this time.

    • With the splitting of the flags into separate enums for categories, the names of the flags have been changed to better reflect their purpose. The flags/enum values are:

      • For the value_required field:

        • RTE_ARGPARSE_VALUE_NONE

        • RTE_ARGPARSE_VALUE_REQUIRED

        • RTE_ARGPARSE_VALUE_OPTIONAL

      • For the value_type field:

        • RTE_ARGPARSE_VALUE_TYPE_NONE (No argument value type is specified, callback is to be used for processing.)

        • RTE_ARGPARSE_VALUE_TYPE_INT

        • RTE_ARGPARSE_VALUE_TYPE_U8

        • RTE_ARGPARSE_VALUE_TYPE_U16

        • RTE_ARGPARSE_VALUE_TYPE_U32

        • RTE_ARGPARSE_VALUE_TYPE_U64

        • RTE_ARGPARSE_VALUE_TYPE_STR

        • RTE_ARGPARSE_VALUE_TYPE_BOOL

      • Other flags:

        • RTE_ARGPARSE_FLAG_SUPPORT_MULTI (Allows the argument to be specified multiple times.)

1.5. Known Issues

1.6. Tested Platforms