1. DPDK Release 25.03

1.1. New Features

  • Added Staged-Ordered-Ring (SORING) API to the ring library.

    New API was added to the ring library to provide a SW abstraction for ordered queues with multiple processing stages. It is based on conventional DPDK rte_ring, re-uses many of its concepts, and even substantial part of its code. It can be viewed as an extension of rte_ring functionality.

  • Hardened of more allocation functions.

    Added allocation attributes to functions that allocate data:

    • rte_acl_create()

    • rte_comp_op_pool_create()

    • rte_event_ring_create()

    • rte_fbk_hash_create()

    • rte_fib_create()

    • rte_fib6_create()

    • rte_hash_create()

    • rte_lpm_create()

    • rte_lpm6_create()

    • rte_member_create()

    • rte_mempool_create()

    • rte_mempool_create_empty()

    • rte_reorder_create()

    • rte_rib_create()

    • rte_rib6_create()

    • rte_ring_create()

    • rte_sched_port_config()

    • rte_stats_bitrate_create()

    • rte_tel_data_alloc()

    This can catch some obvious bugs at compile time (with GCC 11.0 or later). For example, calling free on a pointer that was allocated with one of those functions (and vice versa); freeing the same pointer twice in the same routine or freeing an object that was not created by allocation.

  • Updated af_packet net driver.

    • Added ability to option to configure receive packet fanout mode.

    • Added statistics for failed buffer allocation and missed packets.

  • Updated AMD axgbe driver.

    • Added support for the TCP Segmentation Offload (TSO).

  • Updated Intel e1000 driver.

    • Added support for the Intel i225-series NICs (previously handled by net/igc).

    • Updated base code to the latest version.

  • Updated Intel ipdf driver.

    • Added support for AVX2 instructions in single queue Rx and Tx path. (The single queue model processes all packets in order within one Rx queue, while the split queue model separates packet data and metadata into different queues for parallel processing and improved performance.)

  • Updated Marvell cnxk net driver.

    • Added flow rules support for CN20K SoC.

  • Updated NVIDIA mlx5 driver.

    • Optimized port probing in large scale. This feature enhances the efficiency of probing VF/SFs on a large scale by significantly reducing the probing time.

  • Updated Wangxun ngbe driver.

    • Added support for virtual function (VF).

  • Updated ZTE zxdh network driver.

    • Added support for multiple queues.

    • Added support for SR-IOV VF.

    • Scatter and gather for Tx and Rx.

    • Link state and auto-negotiation.

    • MAC address filtering.

    • Multicast and promiscuous mode.

    • VLAN filtering and offload.

    • Receive Side Scaling (RSS).

    • Hardware statistics.

    • Jumbo frames.

  • Added Yunsilicon xsc net driver [EXPERIMENTAL].

    Added network driver for the Yunsilicon metaScale serials NICs.

  • Added ZTE Storage Data Accelerator (ZSDA) driver.

    Added a compress driver for ZSDA devices to support the deflate compression and decompression algorithm.

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

1.2. Removed Items

  • Dropped support for Intel|reg| C++ Compiler (icc) (replaced by “icx” support)

    Support for the older Intel® C++ Compiler “icc” has been dropped. The newer Intel® oneAPI DPC++/C++ Compiler, “icx”, can be used to compile DPDK instead.

1.3. API Changes

  • eal: The __rte_packed macro for packing data is replaced with __rte_packed_begin / __rte_packed_end.

  • net: Changed the API for CRC calculation to be thread-safe. An opaque context argument was introduced to the net CRC API containing the algorithm type and length. This argument is added to rte_net_crc_calc, rte_net_crc_set_alg and freed with rte_net_crc_free. These functions are versioned to retain binary compatibility until the next LTS release.

  • build: The Intel networking drivers: cpfl, e1000, fm10k, i40e, iavf, ice, idpf, ipn3ke and ixgbe, have been moved from drivers/net to a new drivers/net/intel directory. The resulting build output, including the driver filenames, is the same, but to enable/disable these drivers via Meson option requires use of the new paths. For example, -Denable_drivers=/net/i40e becomes -Denable_drivers=/net/intel/i40e.

  • build: The Intel IGC networking driver was merged with e1000 driver and is no longer provided as a separate driver. The resulting build output will not have the librte_net_igc.* driver files any more, but the librte_net_e1000.* driver files will provide support for all of the devices and features of the old driver. In addition, to enable/disable the driver via Meson option, the path has changed from -Denable_drivers=net/igc to -Denable_drivers=net/intel/e1000.

  • build: The driver common/idpf has been merged into the net/intel/idpf driver. Similarly, the common/iavf driver has been merged into the net/intel/iavf driver. These changes should have no impact to end applications, but, when specifying the idpf or cpfl net drivers to Meson via -Denable_drivers option, there is no longer any need to also specify the common/idpf driver. In the same way, when specifying the iavf or ice net drivers, there is no need to also specify the common/iavf driver. Note, however, net/intel/cpfl driver now depends upon the net/intel/idpf driver.

1.4. ABI Changes

  • No ABI change that would break compatibility with 24.11.

1.5. Known Issues

1.6. Tested Platforms