6. DPDK Release 23.03

6.1. New Features

  • Introduced lock annotations.

    Added lock annotations attributes so that clang can statically analyze lock correctness.

  • Added support for reporting lcore usage in applications.

    • The /eal/lcore/list, /eal/lcore/usage and /eal/lcore/info telemetry endpoints have been added to provide information similar to rte_lcore_dump().

    • Applications can register a callback at startup via rte_lcore_register_usage_cb() to provide lcore usage information.

  • Added platform bus support.

    A platform bus provides a way to use Linux platform devices which are compatible with the vfio-platform kernel driver.

  • Added ARM support for power monitor in the power management library.

    Added power monitor and wake up API support with WFE/SVE instructions for Arm architecture.

  • Added Ethernet link speed for 400 Gb/s.

    Added Ethernet link speed for 400 Gb/s since there are some devices already supporting that speed and it is well standardized in IEEE.

  • Added support for mapping a queue with an aggregated port.

    • Introduced new function rte_eth_dev_count_aggr_ports() to get the number of aggregated ports.

    • Introduced new function rte_eth_dev_map_aggr_tx_affinity() to map a Tx queue with an aggregated port of the DPDK port.

    • Added Rx affinity flow matching of an aggregated port.

  • Added flow matching of IPv6 routing extension.

    Added RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT to match IPv6 routing extension header fields.

  • Added flow matching of ICMPv6.

    Added flow items to match ICMPv6 echo request and reply packets. Matching patterns can include ICMP identifier and sequence numbers.

  • Added flow flex handle to modify action.

    Added flex modify item RTE_FLOW_FIELD_FLEX_ITEM.

  • Added index-based rules insertion in flow API.

    • Added rte_flow_table_insertion_type to allow the creation of index-based template tables in addition to pattern-based tables.

    • Introduced new function rte_flow_async_create_by_index() to insert rules by index into index-based template tables.

    • Added hash calculation function used in template tables to allow control over the calculation of the rule index for a packet.

  • Added cross-port indirect action in asynchronous flow API.

    • Enabled the ability to share indirect actions between ports by passing the flag RTE_FLOW_PORT_FLAG_SHARE_INDIRECT to rte_flow_configure().

    • Added host_port_id in rte_flow_port_attr structure to reference the port hosting the shared objects.

  • Added atomic query and update indirect flow action.

    Added synchronous and asynchronous functions to atomically query and update indirect flow action:

    • rte_flow_action_handle_query_update()

    • rte_flow_async_action_handle_query_update()

  • Added flow quota action and item.

    • RTE_FLOW_ACTION_TYPE_QUOTA

    • RTE_FLOW_ITEM_TYPE_QUOTA

  • Added flow API to skip congestion management configuration.

    • Added the action RTE_FLOW_ACTION_TYPE_SKIP_CMAN to skip congestion management processing based on per flow or packet color identified by a flow meter object.

  • Updated AMD axgbe driver.

    • Added multi-process support.

  • Updated Atomic Rules ark driver.

    • Added Arkville FX2 device supporting PCIe Gen5x16.

  • Updated Corigine nfp driver.

    • Added support for meter options.

    • Added support for rte_flow meter action.

  • Added Intel cpfl driver.

    Added the new cpfl net driver for Intel® Infrastructure Processing Unit (Intel® IPU) E2100. See the CPFL Poll Mode Driver NIC guide for more details on this new driver.

  • Updated Intel igc driver.

    • Added support for timesync API.

    • Added support for packet pacing (launch time offloading).

  • Updated Marvell cnxk ethdev driver.

    • Added support to skip RED using RTE_FLOW_ACTION_TYPE_SKIP_CMAN.

  • Updated NVIDIA mlx5 driver.

    • Added support for matching on ICMPv6 ID and sequence fields.

    • Added support for MPLSoUDP in hardware steering.

    • Added support for enhanced CQE compression layout.

  • Updated Wangxun ngbe driver.

    • Added chip overheat detection support.

  • Updated Wangxun txgbe driver.

    • Added chip overheat detection support.

    • Added SFP hot-plug identification support.

  • Added new algorithms to cryptodev.

    Added SHAKE-128 and SHAKE-256 symmetric secure hash algorithm.

  • Updated Marvell cnxk crypto driver.

    Added support for SHAKE hash algorithm in cn9k and cn10k.

  • Updated Intel QuickAssist Technology (QAT) crypto driver.

    • Added support for SHA3 224/256/384/512 plain hash in QAT GEN 3.

    • Added support for SHA3 256 plain hash in QAT GEN 2.

    • Added support for asymmetric crypto in QAT GEN3.

  • Added LZ4 algorithm in compressdev library.

    Added LZ4 compression algorithm with xxHash-32 for the checksum.

  • Updated NVIDIA mlx5 compress driver.

    Added LZ4 algorithm support for decompress operation.

  • Added machine learning inference device library.

    • Added a machine learning inference device framework for management and provision of hardware and software machine learning inference devices.

    • Added a test application for machine learning inference device library.

  • Added Marvell CNXK machine learning driver.

    Added driver which supports machine learning inference operations on Marvell’s CN10K series of SoC’s.

  • Updated the eventdev reconfigure logic for service based adapters.

    • The eventdev reconfigure logic was enhanced to increment the rte_event_dev_config::nb_single_link_event_port_queues parameter if event port config is of type RTE_EVENT_PORT_CFG_SINGLE_LINK.

    • With this change, the application no longer needs to account for the rte_event_dev_config::nb_single_link_event_port_queues parameter required for eth_rx, eth_tx, crypto and timer eventdev adapters.

  • Added PCAP trace support in graph library.

    • Added support to capture packets at each graph node with packet metadata and node name.

6.2. Removed Items

  • Removed the experimental empty poll API from the power management library.

    The empty poll mechanism is superseded by the power PMD modes i.e. monitor, pause and scale.

6.3. API Changes

  • The telemetry command /eal/heap_info is fixed to print Heap_id.

  • The experimental function rte_pcapng_copy was updated to support a comment section in enhanced packet block in the PcapNG library.

  • The experimental structures struct rte_graph_param, struct rte_graph and struct graph were updated to support pcap trace in the graph library.

6.4. ABI Changes

  • No ABI change that would break compatibility with 22.11.

6.5. Tested Platforms

  • Intel® platforms with Intel® NICs combinations

    • CPU

      • Intel® Atom™ CPU C3758 @ 2.20GHz

      • Intel® Xeon® CPU D-1553N @ 2.30GHz

      • Intel® Xeon® CPU E5-2680 v2 @ 2.80GHz

      • Intel® Xeon® CPU E5-2699 v4 @ 2.20GHz

      • Intel® Xeon® D-1749NT CPU @ 3.00GHz

      • 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

    • OS:

      • CentOS 7.9

      • CBL Mariner 2.0

      • Fedora 37

      • FreeBSD 13.1

      • openEuler 22.03 (LTS-SP1)

      • Red Hat Enterprise Linux Server release 8.4

      • Red Hat Enterprise Linux Server release 8.6

      • Red Hat Enterprise Linux Server release 9.1

      • SUSE Linux Enterprise Server 15 SP4

      • Ubuntu 20.04.5

      • Ubuntu 22.04.1

    • NICs:

      • Intel® Ethernet Controller E810-C for SFP (4x25G)

        • Firmware version: 4.20 0x800177d1 1.3346.0

        • Device id (pf/vf): 8086:1593 / 8086:1889

        • Driver version(out-tree): 1.11.14 (ice)

        • Driver version(in-tree): 5.15.0-57-generic / 4.18.0-372.9.1.rt7.166.el8.x86_64 (ice)

        • OS Default DDP: 1.3.30.0

        • COMMS DDP: 1.3.40.0

        • Wireless Edge DDP: 1.3.10.0

      • Intel® Ethernet Controller E810-C for QSFP (2x100G)

        • Firmware version: 4.20 0x80017785 1.3346.0

        • Device id (pf/vf): 8086:1592 / 8086:1889

        • Driver version(out-tree): 1.11.14 (ice)

        • Driver version(in-tree): 5.15.86-rt56 / 5.15.55.1-1.cm_7dc1fb4+ (ice)

        • OS Default DDP: 1.3.30.0

        • COMMS DDP: 1.3.40.0

        • Wireless Edge DDP: 1.3.10.0

      • Intel® Ethernet Controller E810-XXV for SFP (2x25G)

        • Firmware version: 4.20 0x8001778c 1.3346.0

        • Device id (pf/vf): 8086:159b / 8086:1889

        • Driver version: 1.11.14 (ice)

        • OS Default DDP: 1.3.30.0

        • COMMS DDP: 1.3.40.0

      • Intel® Corporation Device 188b

        • Firmware version: 3.12 0x80017ca8 1.3243.0

        • Device id (pf/vf): 8086:188b / 8086:1889

        • Driver version: 1.11.14 (ice)

        • OS Default DDP: 1.3.30.0

        • COMMS DDP: 1.3.40.0

        • Wireless Edge DDP: 1.3.10.0

      • Intel® Ethernet Connection E823-L for QSFP

        • Firmware version: 3.12 0x80017cf4 1.3243.0

        • Device id (pf/vf): 8086:151d / 8086:1889

        • Driver version: 1.11.14 (ice)

        • OS Default DDP: 1.3.30.0

        • COMMS DDP: 1.3.40.0

        • Wireless Edge DDP: 1.3.10.0

      • Intel® 82599ES 10 Gigabit Ethernet Controller

        • Firmware version: 0x61bf0001

        • Device id (pf/vf): 8086:10fb / 8086:10ed

        • Driver version(out-tree): 5.18.11 (ixgbe)

        • Driver version(in-tree): 5.15.0-57-generic (ixgbe)

      • Intel® Ethernet Converged Network Adapter X710-DA4 (4x10G)

        • Firmware version: 9.20 0x8000d8bd 1.3353.0

        • Device id (pf/vf): 8086:1572 / 8086:154c

        • Driver version(out-tree): 2.22.18 (i40e)

        • Driver version(in-tree): 5.15.0-57-generic (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.22.18 (i40e)

        • Driver version(in-tree): 5.15.0-57-generic (i40e)

      • Intel® Corporation Ethernet Connection X722 for 10GBASE-T

        • Firmware version: 6.20 0x80003d3e 1.2935.0

        • Device id (pf/vf): 8086:37d2 / 8086:37cd

        • Driver version(out-tree): 2.22.18 (i40e)

        • Driver version(in-tree): 5.15.0-57-generic (i40e)

      • Intel® Ethernet Converged Network Adapter XXV710-DA2 (2x25G)

        • Firmware version: 9.20 0x8000d89c 1.3353.0

        • Device id (pf/vf): 8086:158b / 8086:154c

        • Driver version(out-tree): 2.22.18 (i40e)

        • Driver version(in-tree): 5.15.0-57-generic (i40e)

      • Intel® Ethernet Converged Network Adapter XL710-QDA2 (2X40G)

        • Firmware version(PF): 9.20 0x8000d893 1.3353.0

        • Device id (pf/vf): 8086:1583 / 8086:154c

        • Driver version(out-tree): 2.22.18 (i40e)

        • Driver version(in-tree): 5.15.0-57-generic (i40e)

      • Intel® Ethernet Converged Network Adapter X710-T2L

        • Firmware version: 9.20 0x8000d877 1.3353.0

        • Device id (pf): 8086:15ff

        • Driver version: 2.22.18 (i40e)

  • 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 5.9-0.5.6.0 and above

    • upstream kernel:

      • Linux 6.3.0-rc3 and above

    • rdma-core:

      • rdma-core-45.0 and above

    • NICs:

      • NVIDIA® ConnectX®-3 Pro 40G MCX354A-FCC_Ax (2x40G)

        • Host interface: PCI Express 3.0 x8

        • Device ID: 15b3:1007

        • Firmware version: 2.42.5000

      • NVIDIA® ConnectX®-3 Pro 40G MCX354A-FCCT (2x40G)

        • Host interface: PCI Express 3.0 x8

        • Device ID: 15b3:1007

        • Firmware version: 2.42.5000

      • NVIDIA® ConnectX®-4 Lx 25G MCX4121A-ACAT (2x25G)

        • Host interface: PCI Express 3.0 x8

        • Device ID: 15b3:1015

        • Firmware version: 14.32.1010 and above

      • NVIDIA® ConnectX®-4 Lx 50G MCX4131A-GCAT (1x50G)

        • Host interface: PCI Express 3.0 x8

        • Device ID: 15b3:1015

        • Firmware version: 14.32.1010 and above

      • NVIDIA® ConnectX®-5 100G MCX516A-CCAT (2x100G)

        • Host interface: PCI Express 3.0 x16

        • Device ID: 15b3:1017

        • Firmware version: 16.36.1010 and above

      • NVIDIA® ConnectX®-5 100G MCX556A-ECAT (2x100G)

        • Host interface: PCI Express 3.0 x16

        • Device ID: 15b3:1017

        • Firmware version: 16.36.1010 and above

      • NVIDIA® ConnectX®-5 100G MCX556A-EDAT (2x100G)

        • Host interface: PCI Express 3.0 x16

        • Device ID: 15b3:1017

        • Firmware version: 16.36.1010 and above

      • NVIDIA® ConnectX®-5 Ex EN 100G MCX516A-CDAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:1019

        • Firmware version: 16.36.1010 and above

      • NVIDIA® ConnectX®-6 Dx EN 100G MCX623106AN-CDAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:101d

        • Firmware version: 22.36.1010 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.36.1010 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.36.1010 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.35.2000 and above

    • Embedded software:

      • Ubuntu 20.04.3

      • MLNX_OFED 5.8-1.0.1.1 and above

      • DOCA 1.5.1 with BlueField 3.9.3

      • 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®-5 100G MCX556A-ECAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:1017

        • Firmware version: 16.36.1010

      • NVIDIA® ConnectX®-6 Dx 100G MCX623106AN-CDAT (2x100G)

        • Host interface: PCI Express 4.0 x16

        • Device ID: 15b3:101d

        • Firmware version: 22.36.1010

    • OFED:

      • MLNX_OFED 5.9-0.5.6.0