* Added bus-level parsing of the devargs syntax.
* Kept compatibility with the legacy syntax as parsing fallback.
+* **Updated EAL hugetlbfs mount handling for Linux.**
+
+ * Modified to allow ``--huge-dir`` option to specify a sub-directory
+ within a hugetlbfs mountpoint.
+
+* **Added dmadev library.**
+
+ * Added a DMA device framework for management and provision of
+ hardware and software DMA devices.
+ * Added generic API which support a number of different DMA
+ operations.
+ * Added multi-process support.
+
+* **Added IDXD dmadev driver implementation.**
+
+ The IDXD dmadev driver provide device drivers for the Intel DSA devices.
+ This device driver can be used through the generic dmadev API.
+
+* **Added IOAT dmadev driver implementation.**
+
+ The Intel I/O Acceleration Technology (IOAT) dmadev driver provides a device
+ driver for Intel IOAT devices such as Crystal Beach DMA (CBDMA) on Ice Lake,
+ Skylake and Broadwell. This device driver can be used through the generic dmadev API.
+
+* **Added support to get all MAC addresses of a device.**
+
+ Added ``rte_eth_macaddrs_get`` to allow user to retrieve all Ethernet
+ addresses assigned to given ethernet port.
+
+* **Added new RSS offload types for IPv4/L4 checksum in RSS flow.**
+
+ Added macros ETH_RSS_IPV4_CHKSUM and ETH_RSS_L4_CHKSUM, now IPv4 and
+ TCP/UDP/SCTP header checksum field can be used as input set for RSS.
+
+* **Added L2TPv2 and PPP protocol support in flow API.**
+
+ Added flow pattern items and header formats of L2TPv2 and PPP protocol.
+
+* **Added flow flex item.**
+
+ The configurable flow flex item provides the capability to introduce
+ an arbitrary user-specified network protocol header,
+ configure the hardware accordingly, and perform match on this header
+ with desired patterns and masks.
+
+* **Added ethdev support to control delivery of Rx metadata from the HW to the PMD.**
+
+ A new API, ``rte_eth_rx_metadata_negotiate()``, was added.
+ The following parts of Rx metadata were defined:
+
+ * ``RTE_ETH_RX_METADATA_USER_FLAG``
+ * ``RTE_ETH_RX_METADATA_USER_MARK``
+ * ``RTE_ETH_RX_METADATA_TUNNEL_ID``
+
+* **Added an API to get a proxy port to manage "transfer" flows.**
+
+ A new API, ``rte_flow_pick_transfer_proxy()``, was added.
+
+* **Added ethdev shared Rx queue support.**
+
+ * Added new device capability flag and Rx domain field to switch info.
+ * Added share group and share queue ID to Rx queue configuration.
+ * Added testpmd support and dedicate forwarding engine.
+
+* **Updated af_packet ethdev driver.**
+
+ * Default VLAN strip behavior was changed. VLAN tag won't be stripped
+ unless ``DEV_RX_OFFLOAD_VLAN_STRIP`` offload is enabled.
+
+* **Added API to get device configuration in ethdev.**
+
+ Added an ethdev API which can help users get device configuration.
+
+* **Updated AF_XDP PMD.**
+
+ * Disabled secondary process support.
+
+* **Updated Amazon ENA PMD.**
+
+ Updated the Amazon ENA PMD. The new driver version (v2.5.0) introduced
+ bug fixes and improvements, including:
+
+ * Support for the tx_free_thresh and rx_free_thresh configuration parameters.
+ * NUMA aware allocations for the queue helper structures.
+ * Watchdog's feature which is checking for missing Tx completions.
+
+* **Updated Broadcom bnxt PMD.**
+
+ * Added flow offload support for Thor.
+ * Added TruFlow and AFM SRAM partitioning support.
+ * Implement support for tunnel offload.
+ * Updated HWRM API to version 1.10.2.68.
+ * Added NAT support for dest IP and port combination.
+ * Added support for socket redirection.
+ * Added wildcard match support for ingress flows.
+ * Added support for inner IP header for GRE tunnel flows.
+ * Removed devargs option for stats accumulation.
+
+* **Updated Cisco enic driver.**
+
+ * Added rte_flow support for matching GTP, GTP-C and GTP-U headers.
+
+* **Updated Intel e1000 emulated driver.**
+
+ * Added Intel e1000 support on Windows.
+
+* **Updated Intel iavf driver.**
+
+ * Added Intel iavf support on Windows.
+ * Added IPv4 and L4 (TCP/UDP/SCTP) checksum hash support in RSS flow.
+ * Added PPPoL2TPv2oUDP RSS hash based on inner IP address and TCP/UDP port.
+ * Added Intel iavf inline crypto support.
+
+* **Updated Intel ice driver.**
+
+ * Added protocol agnostic flow offloading support in Flow Director.
+ * Added protocol agnostic flow offloading support in RSS hash.
+ * Added 1PPS out support by a devargs.
+ * Added IPv4 and L4 (TCP/UDP/SCTP) checksum hash support in RSS flow.
+ * Added DEV_RX_OFFLOAD_TIMESTAMP support.
+ * Added timesync API support under scalar path.
+
+* **Updated Intel ixgbe driver.**
+
+ * Added Intel ixgbe support on Windows.
+
* **Updated Marvell cnxk ethdev driver.**
* Added rte_flow support for dual VLAN insert and strip actions.
+ * Added rte_tm support.
+ * Added support for Inline IPsec for CN9K event mode and CN10K
+ poll mode and event mode.
+ * Added support for ingress meter for CN10K platform.
+
+* **Updated Mellanox mlx5 driver.**
+
+ Updated the Mellanox mlx5 driver with new features and improvements, including:
+
+ * Added implicit mempool registration to avoid data path hiccups (opt-out).
+ * Added delay drop support for Rx queue.
+ * Added NIC offloads for the PMD on Windows (TSO, VLAN strip, CRC keep).
+ * Added socket direct mode bonding support.
+
+* **Updated Solarflare network PMD.**
+
+ Updated the Solarflare ``sfc_efx`` driver with changes including:
+
+ * Added port representors support on SN1000 SmartNICs
+ * Added flow API transfer proxy support
+ * Added SN1000 virtual functions (VF) support
+ * Added support for flow counters without service cores
+
+* **Added power monitor API in vhost library.**
+
+ Added an API to support power monitor in vhost library.
+
+* **Updated vhost PMD.**
+
+ Add power monitor support in vhost PMD.
+
+* **Updated virtio PMD.**
+
+ * Initial support for RSS receive mode has been added to the Virtio PMD,
+ with the capability for the application to configure the hash key,
+ the RETA and the hash types.
+ Virtio hash reporting is yet to be added.
+ * Added power monitor support in virtio PMD.
+
+* **Updated Wangxun ngbe driver.**
+
+ * Added offloads and packet type on RxTx.
+ * Added VLAN and MAC filters.
+ * Added device basic statistics and extended stats.
+ * Added multi-queue and RSS.
+ * Added SRIOV.
+ * Added flow control.
+ * Added IEEE 1588.
+
+* **Added new vDPA PMD based on Xilinx devices.**
+
+ Added a new Xilinx vDPA (``sfc_vdpa``) PMD.
+ See the :doc:`../vdpadevs/sfc` guide for more details on this driver.
+
+* **Added telemetry callbacks to cryptodev library.**
+
+ Added telemetry callback functions which allow a list of crypto devices,
+ stats for a crypto device, and other device information to be queried.
+ Also added callback to get cryptodev capabilities.
+
+* **Added telemetry to security library.**
+
+ Added telemetry callback functions to query security capabilities of
+ crypto device.
* **Updated Marvell cnxk crypto PMD.**
* Added Transport mode support in lookaside protocol (IPsec) for CN10K.
* Added UDP encapsulation support in lookaside protocol (IPsec) for CN10K.
* Added support for lookaside protocol (IPsec) offload for CN9K.
+ * Added support for ZUC algorithm with 256-bit key length for CN10K.
+ * Added support for CN98xx dual block.
+ * Added inner checksum support in lookaside protocol (IPsec) for CN10K.
+ * Added AES-CBC NULL auth support in lookaside protocol (IPsec) for CN10K.
+ * Added ESN and anti-replay support in lookaside protocol (IPsec) for CN9K.
* **Added support for event crypto adapter on Marvell CN10K and CN9K.**
* Added event crypto adapter OP_FORWARD mode support.
+* **Updated Mellanox mlx5 crypto driver.**
+
+ * Added Windows support.
+
* **Updated NXP dpaa_sec crypto PMD.**
* Added DES-CBC, AES-XCBC-MAC, AES-CMAC and non-HMAC algo support.
* Added PDCP short MAC-I support.
+ * Added raw vector datapath API support.
* **Updated NXP dpaa2_sec crypto PMD.**
* Added PDCP short MAC-I support.
+ * Added raw vector datapath API support.
+
+* **Added framework for consolidation of IPsec_MB dependent SW Crypto PMDs.**
+
+ * The IPsec_MB framework was added to share common code between Intel
+ SW Crypto PMDs that depend on the intel-ipsec-mb library.
+ * Multiprocess support was added for the consolidated PMDs,
+ which requires v1.1 of the intel-ipsec-mb library.
+ * The following PMDs were moved into a single source folder,
+ however their usage and EAL options remain unchanged.
+ * AESNI_MB PMD.
+ * AESNI_GCM PMD.
+ * KASUMI PMD.
+ * SNOW3G PMD.
+ * ZUC PMD.
+ * CHACHA20_POLY1305 - A new PMD added.
+
+* **Updated the aesni_mb crypto PMD.**
+
+ * Added support for ZUC-EEA3-256 and ZUC-EIA3-256.
+
+* **Added digest appended ops support for Snow3G PMD.**
+
+ * Added support for out-of-place auth-cipher operations that encrypt
+ the digest along with the rest of the raw data.
+ * Added support for partially encrypted digest when using auth-cipher
+ operations.
+
+* **Updated the ACC100 bbdev PMD.**
+
+ Added support for more comprehensive CRC options.
+
+* **Updated the turbo_sw bbdev PMD.**
+
+ Added support for more comprehensive CRC options.
+
+* **Added NXP LA12xx baseband PMD.**
+
+ * Added a new baseband PMD driver for NXP LA12xx Software defined radio.
+ * See the :doc:`../bbdevs/la12xx` for more details.
+
+* **Updated Mellanox compress driver.**
+
+ * Added devargs option to allow manual setting of Huffman block size.
+
+* **Updated Mellanox regex driver.**
+
+ * Added support for new ROF file format.
+
+* **Updated IPsec library.**
+
+ * Added support for more AEAD algorithms AES_CCM, CHACHA20_POLY1305
+ and AES_GMAC.
+ * Added support for NAT-T / UDP encapsulated ESP.
+ * Added support for SA telemetry.
+ * Added support for setting a non default starting ESN value.
+ * Added support for TSO in inline crypto mode.
+
+* **Added optimized Toeplitz hash implementation.**
+
+ Added optimized Toeplitz hash implementation using Galois Fields New Instructions.
* **Added multi-process support for testpmd.**
* Added support for asymmetric crypto throughput performance measurement.
Only modex is supported for now.
+ * Added support for lookaside IPsec protocol offload throughput measurement.
* **Added lookaside protocol (IPsec) tests in dpdk-test.**
* Added tests to verify error reporting with ICV corruption.
* Added tests to verify IV generation.
* Added tests to verify UDP encapsulation.
+ * Added tests to verify UDP encapsulation ports.
* Added tests to validate packets soft expiry.
+ * Added tests to validate packets hard expiry.
+ * Added tests to verify tunnel header verification in IPsec inbound.
+ * Added tests to verify inner checksum.
+ * Added tests for CHACHA20_POLY1305 PMD, including a new testcase for SGL OOP.
+
+* **Updated IPsec Security Gateway sample application with new features.**
+
+ * Added support for TSO (only for inline crypto TCP packets).
+ * Added support for telemetry.
+ * Added support for more AEAD algorithms: AES-GMAC, AES_CTR, AES_XCBC_MAC,
+ AES_CCM, CHACHA20_POLY1305
+ * Added support for event vectors for inline protocol offload mode.
+
+* **Revised packet capture framework.**
+
+ * New dpdk-dumpcap program that has most of the features
+ of the wireshark dumpcap utility including:
+ capture of multiple interfaces, filtering,
+ and stopping after number of bytes, packets.
+ * New library for writing pcapng packet capture files.
+ * Enhancements to the pdump library to support:
+ * Packet filter with BPF.
+ * Pcapng format with timestamps and meta-data.
+ * Fixes packet capture with stripped VLAN tags.
+
+* **Added ASan support.**
+
+ `AddressSanitizer
+ <https://github.com/google/sanitizers/wiki/AddressSanitizer>`_ (ASan)
+ is a widely-used debugging tool to detect memory access errors.
+ It helps to detect issues like use-after-free, various kinds of buffer
+ overruns in C/C++ programs, and other similar errors, as well as
+ printing out detailed debug information whenever an error is detected.
Removed Items
blacklist/whitelist are removed. Users must use the new
block/allow list arguments.
+* mbuf: Removed offload flag ``PKT_RX_EIP_CKSUM_BAD``.
+ ``PKT_RX_OUTER_IP_CKSUM_BAD`` should be used as a replacement.
+
+* ethdev: Removed the port mirroring API. A more fine-grain flow API
+ action ``RTE_FLOW_ACTION_TYPE_SAMPLE`` should be used instead.
+ The structures ``rte_eth_mirror_conf`` and ``rte_eth_vlan_mirror`` and
+ the functions ``rte_eth_mirror_rule_set`` and
+ ``rte_eth_mirror_rule_reset`` along with the associated macros
+ ``ETH_MIRROR_*`` are removed.
+
+* ethdev: Removed ``rte_eth_rx_descriptor_done`` API function and its
+ driver callback. It is replaced by the more complete function
+ ``rte_eth_rx_descriptor_status``.
+
+* ethdev: Removed deprecated ``shared`` attribute of the
+ ``struct rte_flow_action_count``. Shared counters should be managed
+ using indirect actions API (``rte_flow_action_handle_create`` etc).
+
+* i40e: Removed i40evf driver.
+ iavf already became the default VF driver for i40e devices,
+ so there is no need to maintain i40evf.
+
API Changes
-----------
Also, make sure to start the actual text at the margin.
=======================================================
+* eal: The lcore state ``FINISHED`` is removed from
+ the ``enum rte_lcore_state_t``.
+ The lcore state ``WAIT`` is enough to represent the same state.
+
+* eal: Made ``rte_intr_handle`` structure definition hidden.
+
+* kvargs: The experimental function ``rte_kvargs_strcmp()`` has been
+ removed. Its usages have been replaced by a new function
+ ``rte_kvargs_get_with_value()``.
+
+* cmdline: ``cmdline_stdin_exit()`` now frees the ``cmdline`` structure.
+ Calls to ``cmdline_free()`` after it need to be deleted from applications.
+
+* cmdline: Made ``cmdline`` structure definition hidden on Linux and FreeBSD.
+
+* cmdline: Made ``rdline`` structure definition hidden. Functions are added
+ to dynamically allocate and free it, and to access user data in callbacks.
+
+* mempool: Added ``RTE_MEMPOOL_F_NON_IO`` flag to give a hint to DPDK components
+ that objects from this pool will not be used for device IO (e.g. DMA).
+
+* mempool: The mempool flags ``MEMPOOL_F_*`` will be deprecated in the future.
+ Newly added flags with ``RTE_MEMPOOL_F_`` prefix should be used instead.
+
+* mempool: Helper macro ``MEMPOOL_HEADER_SIZE()`` is deprecated.
+ The replacement macro ``RTE_MEMPOOL_HEADER_SIZE()`` is internal only.
+
+* mempool: Macro to register mempool driver ``MEMPOOL_REGISTER_OPS()`` is
+ deprecated. Use replacement ``RTE_MEMPOOL_REGISTER_OPS()``.
+
+* mempool: The mempool API macros ``MEMPOOL_PG_*`` are deprecated and
+ will be removed in DPDK 22.11.
+
+* mbuf: The mbuf offload flags ``PKT_*`` are renamed as ``RTE_MBUF_F_*``. A
+ compatibility layer will be kept until DPDK 22.11.
+* net: Renamed ``s_addr`` and ``d_addr`` fields of ``rte_ether_hdr`` structure
+ to ``src_addr`` and ``dst_addr``, respectively.
+
+* net: Added ``version`` and ``ihl`` bit-fields to ``struct rte_ipv4_hdr``.
+ Existing ``version_ihl`` field is kept for backward compatibility.
+
+* ethdev: Added items and actions ``PORT_REPRESENTOR``, ``REPRESENTED_PORT`` to
+ flow API.
+
+* ethdev: Deprecated items and actions ``PF``, ``VF``, ``PHY_PORT``, ``PORT_ID``.
+ Suggested items and actions ``PORT_REPRESENTOR``, ``REPRESENTED_PORT`` instead.
+
+* ethdev: Deprecated the use of attributes ``ingress`` / ``egress`` combined
+ with ``transfer``. See items ``PORT_REPRESENTOR``, ``REPRESENTED_PORT``.
+
+* ethdev: ``rte_flow_action_modify_data`` structure updated, immediate data
+ array is extended, data pointer field is explicitly added to union, the
+ action behavior is defined in more strict fashion and documentation updated.
+ The immediate value behavior has been changed, the entire immediate field
+ should be provided, and offset for immediate source bitfield is assigned
+ from destination one.
+
+* vhost: ``rte_vdpa_register_device``, ``rte_vdpa_unregister_device``,
+ ``rte_vhost_host_notifier_ctrl`` and ``rte_vdpa_relay_vring_used`` vDPA
+ driver interface are marked as internal.
+
* cryptodev: The API rte_cryptodev_pmd_is_valid_dev is modified to
rte_cryptodev_is_valid_dev as it can be used by the application as
well as PMD to check whether the device is valid or not.
the crypto/security operation. This field will be used to communicate
events such as soft expiry with IPsec in lookaside mode.
+* cryptodev: The field ``dataunit_len`` of the ``struct rte_crypto_cipher_xform``
+ moved to the end of the structure and extended to ``uint32_t``.
+
+* cryptodev: The structure ``rte_crypto_vec`` was updated to add ``tot_len``
+ field to support total buffer length to facilitate protocol offload case.
+
+* cryptodev: The structure ``rte_crypto_sym_vec`` was updated to add
+ ``dest_sgl`` to support out of place processing.
+
+* bbdev: Added device info related to data byte endianness processing.
+
+* eventdev: Moved memory used by timer adapters to hugepage. This will prevent
+ TLB misses if any and aligns to memory structure of other subsystems.
+
+* fib: Added the ``rib_ext_sz`` field to ``rte_fib_conf`` and ``rte_fib6_conf``
+ so that user can specify the size of the RIB extension inside the FIB.
+
ABI Changes
-----------
Also, make sure to start the actual text at the margin.
=======================================================
+* ethdev: All enums & macros updated to have ``RTE_ETH`` prefix and structures
+ updated to have ``rte_eth`` prefix. DPDK components updated to use new names.
+
+* ethdev: Input parameters for ``eth_rx_queue_count_t`` was changed.
+ Instead of pointer to ``rte_eth_dev`` and queue index, now it accepts pointer
+ to internal queue data as input parameter. While this change is transparent
+ to user, it still counts as an ABI change, as ``eth_rx_queue_count_t``
+ is used by public inline function ``rte_eth_rx_queue_count``.
+
+* ethdev: Made ``rte_eth_dev``, ``rte_eth_dev_data``, ``rte_eth_rxtx_callback``
+ private data structures. ``rte_eth_devices[]`` can't be accessed directly
+ by user any more. While it is an ABI breakage, this change is intended
+ to be transparent for both users (no changes in user app is required) and
+ PMD developers (no changes in PMD is required).
+
+* vhost: rename ``struct vhost_device_ops`` to ``struct rte_vhost_device_ops``.
+
+* cryptodev: Made ``rte_cryptodev``, ``rte_cryptodev_data`` private
+ structures internal to DPDK. ``rte_cryptodevs`` can't be accessed directly
+ by user any more. While it is an ABI breakage, this change is intended
+ to be transparent for both users (no changes in user app is required) and
+ PMD developers (no changes in PMD is required).
+
* security: ``rte_security_set_pkt_metadata`` and ``rte_security_get_userdata``
routines used by inline outbound and inline inbound security processing were
made inline and enhanced to do simple 64-bit set/get for PMDs that do not
``rte_security_ipsec_sa_options`` to disable IV generation inside PMD,
so that application can provide its own IV and test known test vectors.
+* security: A new option ``tunnel_hdr_verify`` was added in structure
+ ``rte_security_ipsec_sa_options`` to indicate whether outer header
+ verification need to be done as part of inbound IPsec processing.
+
+* security: A new option ``udp_ports_verify`` was added in structure
+ ``rte_security_ipsec_sa_options`` to indicate whether UDP ports
+ verification need to be done as part of inbound IPsec processing.
+
* security: A new structure ``rte_security_ipsec_lifetime`` was added to
replace ``esn_soft_limit`` in IPsec configuration structure
``rte_security_ipsec_xform`` to allow applications to configure SA soft
and hard expiry limits. Limits can be either in number of packets or bytes.
+* security: The new options ``ip_csum_enable`` and ``l4_csum_enable`` were added
+ in structure ``rte_security_ipsec_sa_options`` to indicate whether inner
+ packet IPv4 header checksum and L4 checksum need to be offloaded to
+ security device.
+
+* security: A new structure ``esn`` was added in structure
+ ``rte_security_ipsec_xform`` to set an initial ESN value. This permits
+ application to start from an arbitrary ESN value for debug and SA lifetime
+ enforcement purposes.
+
+* security: A new structure ``udp`` was added in structure
+ ``rte_security_ipsec_xform`` to allow setting the source and destination ports
+ for UDP encapsulated IPsec traffic.
+
+* bbdev: Added capability related to more comprehensive CRC options,
+ shifting values of the ``enum rte_bbdev_op_ldpcdec_flag_bitmasks``.
+
+* eventdev: New variables ``rx_event_buf_count`` and ``rx_event_buf_size``
+ were added in structure ``rte_event_eth_rx_adapter_stats`` to get additional
+ status.
+
+* eventdev: A new structure ``rte_event_fp_ops`` has been added which is now used
+ by the fastpath inline functions. The structures ``rte_eventdev``,
+ ``rte_eventdev_data`` have been made internal. ``rte_eventdevs[]`` can't be
+ accessed directly by user any more. This change is transparent to both
+ applications and PMDs.
+
+* eventdev: Re-arranged fields in ``rte_event_timer`` to remove holes.
+
Known Issues
------------