2. DPDK Release 23.03

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

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

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

2.4. ABI Changes

  • No ABI change that would break compatibility with 22.11.

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