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 inip4_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()
andrte_free_sensitive()
.graph: Added
graph
field to therte_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 thegetopt()
function, as well as the behaviour ofrte_eal_init()
function.The
rte_argparse_arg
structure used for defining arguments has been updated to separate out into separate fields the options for:Whether the argument is required or optional.
What the type of the argument is (in case of saving the parameters automatically).
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.)