which allow the programmer to prefetch a cache line and also indicate
the intention to write.
+* **Added the rte_cldemote API.**
+
+ Added a hardware hint CLDEMOTE, which is similar to prefetch in reverse.
+ CLDEMOTE moves the cache line to the more remote cache, where it expects
+ sharing to be efficient. Moving the cache line to a level more distant from
+ the processor helps to accelerate core-to-core communication.
+ This API is specific to x86 and implemented as a stub for other
+ architectures.
+
+* **Added support for limiting maximum SIMD bitwidth.**
+
+ Added a new EAL config setting ``max_simd_bitwidth`` to limit the vector
+ path selection at runtime. This value can be set by apps using the
+ ``rte_vect_set_max_simd_bitwidth`` function, or by the user with EAL flag
+ ``--force-max-simd-bitwidth``.
+
+* **Added zero copy APIs for rte_ring.**
+
+ For rings with producer/consumer in ``RTE_RING_SYNC_ST``, ``RTE_RING_SYNC_MT_HTS``
+ modes, these APIs split enqueue/dequeue operation into three phases
+ (enqueue/dequeue start, copy data to/from ring, enqueue/dequeue finish).
+ Along with the advantages of the peek APIs, these provide the ability to
+ copy the data to the ring memory directly without the need for temporary
+ storage.
+
* **Updated CRC modules of the net library.**
* Added runtime selection of the optimal architecture-specific CRC path.
* Added optimized implementations of CRC32-Ethernet and CRC16-CCITT
using the AVX512 and VPCLMULQDQ instruction sets.
+* **Introduced extended buffer description for receiving.**
+
+ Added the extended Rx buffer description for Rx queue setup routine
+ providing the individual settings for each Rx segment with maximal size,
+ buffer offset and memory pool to allocate data buffers from.
+
* **Added the FEC API, for a generic FEC query and config.**
Added the FEC API which provides functions for query FEC capabilities and
current FEC mode from device. Also, API for configuring FEC mode is also provided.
+* **Added thread safety to rte_flow functions.**
+
+ Added ``RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE`` device flag to indicate
+ whether PMD supports thread safe operations. If PMD doesn't set the flag,
+ rte_flow API level functions will protect the flow operations with mutex.
+
+* **Added flow-based traffic sampling support.**
+
+ Added new action: ``RTE_FLOW_ACTION_TYPE_SAMPLE`` to duplicate the matching
+ packets with specified ratio, and apply with own set of actions with a fate
+ action. When the ratio is set to 1 then the packets will be 100% mirrored.
+
+* **Added support of shared action in flow API.**
+
+ Added shared action support to utilize single flow action in multiple flow
+ rules. An update of shared action configuration alters the behavior of all
+ flow rules using it.
+
+ * Added new action: ``RTE_FLOW_ACTION_TYPE_SHARED`` to use shared action
+ as flow action.
+ * Added new flow APIs to create/update/destroy/query shared action.
+
+* **Flow rules allowed to use private PMD items / actions.**
+
+ * Flow rule verification was updated to accept private PMD
+ items and actions.
+
+* **Added generic API to offload tunneled traffic and restore missed packet.**
+
+ * Added a new hardware independent helper to flow API that
+ offloads tunneled traffic and restores missed packets.
+
+* **Updated the ethdev library to support hairpin between two ports.**
+
+ New APIs are introduced to support binding / unbinding 2 ports hairpin.
+ Hairpin Tx part flow rules can be inserted explicitly.
+ New API is added to get the hairpin peer ports list.
+
* **Updated Broadcom bnxt driver.**
Updated the Broadcom bnxt driver with new features and improvements, including:
* Added support for 200G PAM4 link speed.
* Added support for RSS hash level selection.
* Updated HWRM structures to 1.10.1.70 version.
+ * Added TRUFLOW support for Stingray devices.
* **Updated Cisco enic driver.**
Added the FEC PMD which provides functions for query FEC capabilities and
current FEC mode from device. Also, PMD for configuring FEC mode is also provided.
+* **Updated Intel iavf driver.**
+
+ * Added support of AVX512 instructions in Rx and Tx path.
+
+* **Updated Intel ice driver.**
+
+ * Used write combining stores.
+ * Added ACL filter support for Intel DCF.
+
+* **Updated Mellanox mlx5 driver.**
+
+ Updated Mellanox mlx5 driver with new features and improvements, including:
+
+ * Added support for matching on fragmented/non-fragmented IPv4/IPv6 packets.
+ * Updated the supported timeout for Age action to the maximal value supported
+ by rte_flow API.
+ * Added support of Age action query.
+
* **Updated Solarflare network PMD.**
Updated the Solarflare ``sfc_efx`` driver with changes including:
* Added SR-IOV PF support
+ * Added Alveo SN1000 SmartNICs (EF100 architecture) support including
+ flow API transfer rules for switch HW offload
+
+* **Added Wangxun txgbe PMD.**
+
+ Added a new PMD driver for Wangxun 10 Gigabit Ethernet NICs.
+
+ See the :doc:`../nics/txgbe` for more details.
* **Updated Virtio driver.**
Updated the Intel ixgbe driver to use write combining stores.
-* **Updated Intel ice driver.**
-
- Updated the Intel ice driver to use write combining stores.
-
* **Updated Intel qat driver.**
Updated the Intel qat driver to use write combining stores.
+* **Updated Memif PMD.**
+
+ * Added support for abstract socket address.
+ * Changed default socket address type to abstract.
+
* **Added Ice Lake (Gen4) support for Intel NTB.**
Added NTB device support (4th generation) for Intel Ice Lake platform.
* Added flag action.
* Added raw encap/decap actions.
* Added VXLAN encap/decap actions.
- * Added ICMP and ICMP6 matching items.
+ * Added ICMP(code/type/identifier/sequence number) and ICMP6(code/type) matching items.
* Added option to set port mask for insertion/deletion:
``--portmask=N``
where N represents the hexadecimal bitmask of ports used.
+* **Added raw data-path APIs for cryptodev library.**
+
+ Cryptodev is added with raw data-path APIs to accelerate external
+ libraries or applications which need to avail fast cryptodev
+ enqueue/dequeue operations but does not necessarily depends on
+ mbufs and cryptodev operation mempools.
+
+* **Updated the aesni_mb crypto PMD.**
+
+ * Added support for AES-ECB 128, 192 and 256.
+ * Added support for ZUC-EEA3/EIA3 algorithms.
+ * Added support for SNOW3G-UEA2/UIA2 algorithms.
+ * Added support for KASUMI-F8/F9 algorithms.
+ * Added support for Chacha20-Poly1305.
+ * Added support for AES-256 CCM algorithm.
+
+* **Updated the aesni_gcm crypto PMD.**
+
+ * Added SGL support for AES-GMAC.
+
+* **Added Broadcom BCMFS symmetric crypto PMD.**
+
+ Added a symmetric crypto PMD for Broadcom FlexSparc crypto units.
+ See :doc:`../cryptodevs/bcmfs` guide for more details on this new PMD.
+
+* **Updated DPAA2_SEC crypto PMD.**
+
+ * Added DES-CBC support for cipher_only, chain and ipsec protocol.
+ * Added support for non-HMAC auth algorithms
+ (MD5, SHA1, SHA224, SHA256, SHA384, SHA512).
+
+* **Updated Marvell NITROX symmetric crypto PMD.**
+
+ * Added AES-GCM support.
+ * Added cipher only offload support.
+
+* **Updated the OCTEON TX2 crypto PMD.**
+
+ * Updated the OCTEON TX2 crypto PMD lookaside protocol offload for IPsec with
+ IPv6 support.
+
+* **Updated QAT crypto PMD.**
+
+ * Added Raw Data-path APIs support.
+
* **Added Intel ACC100 bbdev PMD.**
Added a new ``acc100`` bbdev driver for the Intel\ |reg| ACC100 accelerator
also known as Mount Bryce. See the
:doc:`../bbdevs/acc100` BBDEV guide for more details on this new driver.
+* **Updated rte_security library to support SDAP.**
+
+ ``rte_security_pdcp_xform`` in ``rte_security`` lib is updated to enable
+ 5G NR processing of SDAP header in PMDs.
+
* **Added Marvell OCTEON TX2 regex PMD.**
Added a new PMD driver for hardware regex offload block for OCTEON TX2 SoC.
See the :doc:`../regexdevs/octeontx2` for more details.
+* **Updated Software Eventdev driver.**
+
+ Added performance tuning arguments to allow tuning the scheduler for
+ better throughtput in high core count use cases.
+
+* **Added a new driver for the Intel Dynamic Load Balancer v1.0 device.**
+
+ Added the new ``dlb`` eventdev driver for the Intel DLB V1.0 device. See the
+ :doc:`../eventdevs/dlb` eventdev guide for more details on this new driver.
+
+* **Added a new driver for the Intel Dynamic Load Balancer v2.0 device.**
+
+ Added the new ``dlb2`` eventdev driver for the Intel DLB V2.0 device. See the
+ :doc:`../eventdevs/dlb2` eventdev guide for more details on this new driver.
+
* **Updated ioat rawdev driver**
The ioat rawdev driver has been updated and enhanced. Changes include:
* Added new ``RTE_ACL_CLASSIFY_AVX512X32`` vector implementation,
which can process up to 32 flows in parallel. Requires AVX512 support.
+* **Added AVX512 lookup implementation for FIB.**
+
+ Added a AVX512 lookup functions implementation into FIB and FIB6 libraries.
+
* **Added support to update subport bandwidth dynamically.**
* Added new API ``rte_sched_port_subport_profile_add`` to add new
* Added support to update subport rate dynamically.
+* **Updated FIPS validation sample application.**
+
+ * Added scatter gather support.
+ * Added NIST GCMVS complaint GMAC test method support.
+
+* **Updated l3wfd-acl sample application.**
+
+ * Added new optional parameter ``--eth-dest`` for the ``l3fwd-acl`` to allow
+ the user to specify the destination mac address for each ethernet port
+ used.
+ * Replaced ``--scalar`` command-line option with ``--alg=<value>``, to allow
+ the user to select the desired classify method.
+
+* **Updated vhost sample application.**
+
+ Added vhost asynchronous APIs support, which demonstrated how the application
+ leverage IOAT DMA channel with vhost asynchronous APIs.
+ See the :doc:`../sample_app_ug/vhost` for more details.
+
Removed Items
-------------
Also, make sure to start the actual text at the margin.
=======================================================
+* build: Support for the Make build system was removed for compiling DPDK,
+ Meson is now the primary build system.
+ Sample applications can still be built with Make standalone, using pkg-config.
+
* vhost: Dequeue zero-copy support has been removed.
* kernel: The module ``igb_uio`` has been moved to the git repository
* Removed Python 2 support since it was EOL'd in January 2020.
+* Removed TEP termination sample application.
+
+
API Changes
-----------
The information provided by these macros is available through standard
compiler macros.
+* eal: Replaced the function ``rte_get_master_lcore()`` to
+ ``rte_get_main_lcore()``. The old function is deprecated.
+
+ The iterator for worker lcores is also changed:
+ ``RTE_LCORE_FOREACH_SLAVE`` is replaced with
+ ``RTE_LCORE_FOREACH_WORKER``.
+
* eal: The ``rte_logs`` struct and global symbol was made private
and is no longer part of the API.
the structures ``rte_mbuf`` and ``rte_mbuf_ext_shared_info``.
The field ``refcnt`` is remaining from the old unions.
+* mbuf: Removed the unioned fields ``userdata`` and ``udata64``
+ from the structure ``rte_mbuf``. It is replaced with dynamic fields.
+
+* mbuf: Removed the field ``seqn`` from the structure ``rte_mbuf``.
+ It is replaced with dynamic fields.
+
+* mbuf: Removed the field ``timestamp`` from the structure ``rte_mbuf``.
+ It is replaced with the dynamic field RTE_MBUF_DYNFIELD_TIMESTAMP_NAME
+ which was previously used only for Tx.
+
* pci: Removed the ``rte_kernel_driver`` enum defined in rte_dev.h and
replaced with a private enum in the PCI subsystem.
* ethdev: ``rte_eth_rx_descriptor_done()`` API has been deprecated.
-* Renamed internal ethdev APIs:
+* ethdev: Renamed basic statistics per queue. An underscore is inserted
+ between the queue number and the rest of the xstat name:
+
+ * ``rx_qN*`` -> ``rx_qN_*``
+ * ``tx_qN*`` -> ``tx_qN_*``
+
+* ethdev: Added capability to query age flow action.
+
+* ethdev: Changed ``rte_eth_dev_stop`` return value from ``void`` to
+ ``int`` to provide a way to report various error conditions.
+
+* ethdev: Added ``int`` return type to ``rte_eth_dev_close()``.
+
+* ethdev: Renamed internal functions:
* ``_rte_eth_dev_callback_process()`` -> ``rte_eth_dev_callback_process()``
* ``_rte_eth_dev_reset`` -> ``rte_eth_dev_internal_reset()``
* vhost: Moved vDPA APIs from experimental to stable.
+* vhost: Add a new function ``rte_vhost_crypto_driver_start`` to be called
+ instead of ``rte_vhost_driver_start`` by crypto applications.
+
+* cryptodev: The structure ``rte_crypto_sym_vec`` is updated to support both
+ cpu_crypto synchrounous operation and asynchronous raw data-path APIs.
+
+* cryptodev: ``RTE_CRYPTO_AEAD_LIST_END`` from ``enum rte_crypto_aead_algorithm``,
+ ``RTE_CRYPTO_CIPHER_LIST_END`` from ``enum rte_crypto_cipher_algorithm`` and
+ ``RTE_CRYPTO_AUTH_LIST_END`` from ``enum rte_crypto_auth_algorithm``
+ are removed to avoid future ABI breakage while adding new algorithms.
+
+* scheduler: Renamed functions ``rte_cryptodev_scheduler_slave_attach``,
+ ``rte_cryptodev_scheduler_slave_detach`` and
+ ``rte_cryptodev_scheduler_slaves_get`` to
+ ``rte_cryptodev_scheduler_worker_attach``,
+ ``rte_cryptodev_scheduler_worker_detach`` and
+ ``rte_cryptodev_scheduler_workers_get`` accordingly.
+
+* scheduler: Renamed the configuration value
+ ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES`` to
+ ``RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS``.
+
+* security: ``hfn_ovrd`` field in ``rte_security_pdcp_xform`` is changed from
+ ``uint32_t`` to ``uint8_t`` so that a new field ``sdap_enabled`` can be added
+ to support SDAP.
+
+* security: The API ``rte_security_session_create`` is updated to take two
+ mempool objects one for session and other for session private data.
+ So the application need to create two mempools and get the size of session
+ private data using API ``rte_security_session_get_size`` for private session
+ mempool.
+
+* ipsec: ``RTE_SATP_LOG2_NUM`` has been dropped from ``enum`` and
+ subsequently moved ``rte_ipsec`` lib from experimental to stable.
+
+* baseband/fpga_lte_fec: Renamed function ``fpga_lte_fec_configure`` to
+ ``rte_fpga_lte_fec_configure`` and structure ``fpga_lte_fec_conf`` to
+ ``rte_fpga_lte_fec_conf``.
+
+* baseband/fpga_5gnr_fec: Renamed function ``fpga_5gnr_fec_configure`` to
+ ``rte_fpga_5gnr_fec_configure`` and structure ``fpga_5gnr_fec_conf`` to
+ ``rte_fpga_5gnr_fec_conf``.
+
* rawdev: Added a structure size parameter to the functions
``rte_rawdev_queue_setup()``, ``rte_rawdev_queue_conf_get()``,
``rte_rawdev_info_get()`` and ``rte_rawdev_configure()``,
* bpf: ``RTE_BPF_XTYPE_NUM`` has been dropped from ``rte_bpf_xtype``.
+* gso: Changed ``rte_gso_segment`` behaviour and return value:
+
+ * ``pkt`` is not saved to ``pkts_out[0]`` if not GSOed.
+ * Return 0 instead of 1 for the above case.
+ * ``pkt`` is not freed, no matter whether it is GSOed, leaving to the caller.
+
* acl: ``RTE_ACL_CLASSIFY_NUM`` enum value has been removed.
This enum value was not used inside DPDK, while it prevented to add new
classify algorithms without causing an ABI breakage.
* ``ethdev`` internal functions are marked with ``__rte_internal`` tag.
+ * Added extensions' attributes to struct ``rte_flow_item_ipv6``.
+ A set of additional values added to struct, indicating the existence of
+ every defined extension header type.
+ Applications should use the new values for identification of existing
+ extensions in the packet header.
+
+ * Added fields ``rx_seg`` and ``rx_nseg`` to ``rte_eth_rxconf`` structure
+ to provide extended description of the receiving buffer.
+
+ * ``struct rte_eth_hairpin_conf`` has two new members:
+
+ * ``uint32_t tx_explicit:1;``
+ * ``uint32_t manual_bind:1;``
+
+ * Added new field ``has_vlan`` to structure ``rte_flow_item_eth``,
+ indicating that packet header contains at least one VLAN.
+
+ * Added new field ``has_more_vlan`` to structure
+ ``rte_flow_item_vlan``, indicating that packet header contains
+ at least one more VLAN, after this VLAN.
+
+* eventdev: Following structures are modified to support DLB/DLB2 PMDs
+ and future extensions:
+
+ * ``rte_event_dev_info``
+ * ``rte_event_dev_config``
+ * ``rte_event_port_conf``
+
* sched: Added new fields to ``struct rte_sched_subport_port_params``.
+* lpm: Removed fields other than ``tbl24`` and ``tbl8`` from the struct
+ ``rte_lpm``. The removed fields were made internal.
+
Known Issues
------------