3. DPDK Release 24.03
3.1. New Features
Added HiSilicon UACCE bus support.
Added UACCE (Unified/User-space-access-intended Accelerator Framework) bus driver so that the accelerator devices such as a compress, crypto, DMA and ethernet devices could be seen and registered in DPDK.
Introduced argument parsing library.
The argparse library was added to help writing user-friendly applications, replacing
getopt()
usage.Improved RSS hash algorithm support.
Added new function
rte_eth_find_rss_algo
to get RSS hash algorithm by its name.Added query of used descriptors number in Tx queue.
Added a fast path function
rte_eth_tx_queue_count
to get the number of used descriptors for a Tx queue.
Added hash calculation of an encapsulated packet as done by the HW.
Added function to calculate hash when doing tunnel encapsulation:
rte_flow_calc_encap_hash()
Added flow matching items and action.
Added
RTE_FLOW_ITEM_TYPE_COMPARE
to allow matching on comparison result between packet fields or value.Added
RTE_FLOW_ITEM_TYPE_RANDOM
to match a random value, andRTE_FLOW_FIELD_RANDOM
to represent it with a field ID.Added
RTE_FLOW_ACTION_TYPE_NAT64
to offload header conversion between IPv4 and IPv6.
Added flow template table resizing.
RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE_TABLE
table configuration bit. Set at table creation to allow future resizing.rte_flow_template_table_resizable()
. Query whether template table can be resized.rte_flow_template_table_resize()
. Reconfigure template table for new flows capacity.rte_flow_async_update_resized()
. Reconfigure flows for the updated table configuration.rte_flow_template_table_resize_complete()
. Complete table resize.
Updated Amazon ena (Elastic Network Adapter) net driver.
Removed the reporting of
rx_overruns
errors from xstats and instead updatedimissed
counter with its value.Added support for sub-optimal configuration notifications from the device.
Added
normal_llq_hdr
devarg that enforces normal LLQ header policy.Added support for LLQ header size recommendation from the device.
Allowed large LLQ with 1024 entries when the device supports enlarged memory BAR.
Added control_poll_interval devarg that configures the control-path to work in poll-mode.
Added support for binding ports to uio_pci_generic kernel module.
Updated Atomic Rules’ Arkville driver.
Added support for Atomic Rules’ TK242 packet-capture family of devices with PCI IDs:
0x1024, 0x1025, 0x1026
.
Updated Broadcom bnxt driver.
Added support for 5760X device family.
Updated HiSilicon hns3 ethdev driver.
Added new device supporting RDMA/DCB/ROH with PCI IDs:
0xa227, 0xa22c
.
Updated Marvell cnxk net driver.
Added support for port representors.
Added support for
RTE_FLOW_ITEM_TYPE_PPPOES
flow item.Added support for
RTE_FLOW_ACTION_TYPE_SAMPLE
flow item.Added support for Rx inject.
Added support for
rte_eth_tx_queue_count()
.Optimized SW external mbuf free for better performance and avoid SQ corruption.
Updated Marvell OCTEON EP driver.
Optimized mbuf rearm sequence.
Updated Tx queue mbuf free thresholds from 128 to 256 for better performance.
Updated Rx queue mbuf refill routine to use mempool alloc and reorder it to avoid mbuf write commits.
Added option to control ISM memory accesses which gives better performance for lower packet sizes when enabled.
Added optimized SSE Rx routines.
Added optimized AVX2 Rx routines.
Added optimized NEON Rx routines.
Updated NVIDIA mlx5 driver.
Added support for VXLAN-GPE matching in DV and HWS flow engines.
Added support for GENEVE matching and modifying in HWS flow engine.
Added support for modifying IPv4 proto field in HWS flow engine.
Added support for modifying IPsec ESP fields in HWS flow engine.
Added support for modifying IPv6 traffic class field in HWS flow engine.
Added support for modifying IPv6 flow label field in HWS flow engine.
Added support for matching a random value.
Added support for comparing result between packet fields or value.
Added support for accumulating value of field into another one.
Added support for copying inner fields in HWS flow engine.
Added support for
RTE_FLOW_ACTION_TYPE_NAT64
flow action in HWS flow engine.Added support for sharing indirect action objects of type
RTE_FLOW_ACTION_TYPE_METER_MARK
andRTE_FLOW_ACTION_TYPE_CONNTRACK
in HWS flow engine.
Updated Intel QuickAssist Technology driver.
Enabled support for new QAT GEN3 (578a) and QAT GEN5 (4946) devices in QAT crypto driver.
Enabled ZUC256 cipher and auth algorithm for wireless slice enabled GEN3 and GEN5 devices.
Added support for GEN LCE (1454) device, for AES-GCM only.
Enabled support for virtual QAT - vQAT (0da5) devices in QAT crypto driver.
Updated Marvell cnxk crypto driver.
Added support for Rx inject in crypto_cn10k.
Added support for TLS record processing in crypto_cn10k to support TLS v1.2, TLS v1.3 and DTLS v1.2.
Added PMD API to allow raw submission of instructions to CPT.
Added Marvell Nitrox compression driver.
Added a new compression driver for Marvell Nitrox devices to support the deflate compression and decompression algorithm.
Updated Marvell cnxk eventdev driver.
Added power-saving during polling within the
rte_event_dequeue_burst()
API.Added support for DMA adapter.
Added DMA producer mode in eventdev test.
Added DMA producer mode to measure performance of
OP_FORWARD
mode of event DMA adapter.
3.2. Removed Items
log: Removed the statically defined logtypes that were used internally by DPDK. All code should be using the dynamic logtypes (see
RTE_LOG_REGISTER()
). The application reserved statically defined logtypesRTE_LOGTYPE_USER1..RTE_LOGTYPE_USER8
are still defined.acc101: Removed obsolete code for non productized HW variant.
3.3. API Changes
eal: Removed
typeof(type)
from the expansion ofRTE_DEFINE_PER_LCORE
andRTE_DECLARE_PER_LCORE
macros aligning them with their intended design. If use with an expression is desired applications can adapt by supplyingtypeof(e)
as an argument.eal: Improved
RTE_BUILD_BUG_ON
by using C11static_assert
. Non-constant expressions are now rejected instead of being silently ignored.gso:
rte_gso_segment
now returns-ENOTSUP
for unknown protocols.ethdev: Renamed structure
rte_flow_action_modify_data
to berte_flow_field_data
for more generic usage.
3.4. ABI Changes
No ABI change that would break compatibility with 23.11.
3.5. Tested Platforms
AMD platforms
CPU
AMD EPYC™ 7543 32-Core Processor @ 3.70GHz
BIOS 7.00.30.00
AMD EPYC™ 8534 64-Core Processor @ 3.10GHz
BIOS 7.00.00.00
OS:
Ubuntu 22.04.4 LTS
Intel® platforms with Intel® NICs combinations
CPU
Intel Atom® P5342 processor
Intel® Atom™ CPU C3758 @ 2.20GHz
Intel® Xeon® CPU D-1553N @ 2.30GHz
Intel® Xeon® CPU E5-2699 v4 @ 2.20GHz
Intel® Xeon® D-1747NTE CPU @ 2.50GHz
Intel® Xeon® D-2796NT CPU @ 2.00GHz
Intel® Xeon® Gold 6139 CPU @ 2.30GHz
Intel® Xeon® Gold 6140M CPU @ 2.30GHz
Intel® Xeon® Gold 6252N CPU @ 2.30GHz
Intel® Xeon® Gold 6348 CPU @ 2.60GHz
Intel® Xeon® Platinum 8180 CPU @ 2.50GHz
Intel® Xeon® Platinum 8280M CPU @ 2.70GHz
Intel® Xeon® Platinum 8380 CPU @ 2.30GHz
Intel® Xeon® Platinum 8490H
OS:
CBL Mariner 2.0
Fedora 39
FreeBSD 14.0
OpenAnolis OS 8.8
openEuler 22.03 (LTS-SP2)
Red Hat Enterprise Linux Server release 8.7
Red Hat Enterprise Linux Server release 9.0
Red Hat Enterprise Linux Server release 9.2
Ubuntu 22.04.3
NICs:
Intel® Ethernet Controller E810-C for SFP (4x25G)
Firmware version: 4.40 0x8001c982 1.3534.0
Device id (pf/vf): 8086:1593 / 8086:1889
Driver version(out-tree): 1.13.7 (ice)
Driver version(in-tree): 5.15.0-82-generic (Ubuntu22.04.3) / 5.14.0-284.11.1.rt14.296.el9_2.x86_64 (RHEL9.2) (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Wireless Edge DDP: 1.3.13.0
Intel® Ethernet Controller E810-C for QSFP (2x100G)
Firmware version: 4.40 0x8001c967 1.3534.0
Device id (pf/vf): 8086:1592 / 8086:1889
Driver version(out-tree): 1.13.7 (ice)
Driver version(in-tree): 5.15.55.1-1.cm2-5464b22cac7+ (CBL Mariner 2.0) (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Wireless Edge DDP: 1.3.13.0
Intel® Ethernet Controller E810-XXV for SFP (2x25G)
Firmware version: 4.40 0x8001af86 1.3444.0
Device id (pf/vf): 8086:159b / 8086:1889
Driver version: 1.13.7 (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Intel® Ethernet Connection E823-C for QSFP
Firmware version: 3.33 0x8001b295 1.3443.0
Device id (pf/vf): 8086:188b / 8086:1889
Driver version: 1.13.7 (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Wireless Edge DDP: 1.3.13.0
Intel® Ethernet Connection E823-L for QSFP
Firmware version: 3.33 0x8001b4b0 1.3429.0
Device id (pf/vf): 8086:124c / 8086:1889
Driver version: 1.13.7 (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Wireless Edge DDP: 1.3.13.0
Intel® Ethernet Connection E822-L for backplane
Firmware version: 3.33 0x8001b4b6 1.3429.0
Device id (pf/vf): 8086:1897 / 8086:1889
Driver version: 1.13.7 (ice)
OS Default DDP: 1.3.35.0
COMMS DDP: 1.3.45.0
Wireless Edge DDP: 1.3.13.0
Intel® 82599ES 10 Gigabit Ethernet Controller
Firmware version: 0x000161bf
Device id (pf/vf): 8086:10fb / 8086:10ed
Driver version(out-tree): 5.19.9 (ixgbe)
Driver version(in-tree): 5.15.0-82-generic (Ubuntu22.04.3) / 5.14.0-284.11.1.el9_2.x86_64 (RHEL9.2)(ixgbe)
Intel® Ethernet Converged Network Adapter X710-DA4 (4x10G)
Firmware version: 9.40 0x8000eca2 1.3429.0
Device id (pf/vf): 8086:1572 / 8086:154c
Driver version(out-tree): 2.24.6 (i40e)
Intel® Corporation Ethernet Connection X722 for 10GbE SFP+ (2x10G)
Firmware version: 6.20 0x80003d82 1.3353.0
Device id (pf/vf): 8086:37d0 / 8086:37cd
Driver version(out-tree): 2.24.6 (i40e)
Driver version(in-tree): 5.14.0-284.11.1.el9_2.x86_64 (RHEL9.2)(i40e)
Intel® Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
Firmware version: 9.40 0x8000ed12 1.3429.0
Device id (pf/vf): 8086:158b / 8086:154c
Driver version(out-tree): 2.24.6 (i40e)
Driver version(in-tree): 5.15.0-82-generic (Ubuntu22.04.3) / 5.14.0-284.11.1.el9_2.x86_64 (RHEL9.2)(i40e)
Intel® Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
Firmware version(PF): 9.40 0x8000ece4 1.3429.0
Device id (pf/vf): 8086:1583 / 8086:154c
Driver version(out-tree): 2.24.6 (i40e)
Intel® Ethernet Controller I225-LM
Firmware version: 1.3, 0x800000c9
Device id (pf): 8086:15f2
Driver version(in-tree): 5.15.0-82-generic (Ubuntu22.04.3)(igc)
Intel® Ethernet Controller I226-LM
Firmware version: 2.14, 0x8000028c
Device id (pf): 8086:125b
Driver version(in-tree): 5.15.0-82-generic (Ubuntu22.04.3)(igc)
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.1 (Plow)
Red Hat Enterprise Linux release 8.6 (Ootpa)
Red Hat Enterprise Linux release 8.4 (Ootpa)
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Ubuntu 22.04
Ubuntu 20.04
SUSE Enterprise Linux 15 SP2
OFED:
MLNX_OFED 24.01-0.3.3.1 and above
upstream kernel:
Linux 6.8.0 and above
rdma-core:
rdma-core-50.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.40.1000 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.40.1000 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.40.1000 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.40.1000 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.40.1000 and above
Embedded software:
Ubuntu 22.04
MLNX_OFED 24.01-0.3.3.0 and above
DOCA_2.6.0_BSP_4.6.0_Ubuntu_22.04-5.24-01
DPDK application running on ARM cores
IBM Power 9 platforms with NVIDIA® NICs combinations
CPU:
POWER9 2.2 (pvr 004e 1202)
OS:
Ubuntu 20.04
NICs:
NVIDIA® ConnectX®-6 Dx 100G MCX623106AN-CDAT (2x100G)
Host interface: PCI Express 4.0 x16
Device ID: 15b3:101d
Firmware version: 22.40.1000 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.40.1000 and above
OFED:
MLNX_OFED 24.01-0.3.3.1