1. DPDK Release 24.03

1.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, and RTE_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 updated imissed 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 and RTE_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.

1.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 logtypes RTE_LOGTYPE_USER1..RTE_LOGTYPE_USER8 are still defined.
  • acc101: Removed obsolete code for non productized HW variant.

1.3. API Changes

  • eal: Removed typeof(type) from the expansion of RTE_DEFINE_PER_LCORE and RTE_DECLARE_PER_LCORE macros aligning them with their intended design. If use with an expression is desired applications can adapt by supplying typeof(e) as an argument.
  • eal: Improved RTE_BUILD_BUG_ON by using C11 static_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 be rte_flow_field_data for more generic usage.

1.4. ABI Changes

  • No ABI change that would break compatibility with 23.11.

1.5. Known Issues

1.6. 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