Also, make sure to start the actual text at the margin.
=======================================================
+* **Added write combining store APIs.**
+
+ Added ``rte_write32_wc`` and ``rte_write32_wc_relaxed`` APIs
+ that enable write combining stores (depending on architecture).
+ The functions are provided as a generic stubs and
+ x86 specific implementation.
+
+* **Added prefetch with intention to write APIs.**
+
+ Added new prefetch function variants e.g. ``rte_prefetch0_write``,
+ which allow the programmer to prefetch a cache line and also indicate
+ the intention to write.
+
+* **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.
+
+* **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.
+
+* **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.
+
+* **Updated Cisco enic driver.**
+
+ * Added support for VF representors with single-queue Tx/Rx and flow API
+ * Added support for egress PORT_ID action
+ * Added support for non-zero priorities for group 0 flows
+ * Added support for VXLAN decap combined with VLAN pop
+
+* **Added hns3 FEC PMD, for supporting query and config FEC mode.**
+
+ 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 Solarflare network PMD.**
+
+ Updated the Solarflare ``sfc_efx`` driver with changes including:
+
+ * Added SR-IOV PF support
+
+* **Updated Virtio driver.**
+
+ * Added support for Vhost-vDPA backend to Virtio-user PMD.
+ * Changed default link speed to unknown.
+ * Added support for 200G link speed.
+
+* **Updated Intel i40e driver.**
+
+ Updated the Intel i40e driver to use write combining stores.
+
+* **Updated Intel ixgbe 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.
+
+* **Added Ice Lake (Gen4) support for Intel NTB.**
+
+ Added NTB device support (4th generation) for Intel Ice Lake platform.
+
+* **Added UDP/IPv4 GRO support for VxLAN and non-VxLAN packets.**
+
+ For VxLAN packets, added inner UDP/IPv4 support.
+ For non-VxLAN packets, added UDP/IPv4 support.
+
+* **Extended flow-perf application.**
+
+ * Started supporting user order instead of bit mask:
+ Now the user can create any structure of rte_flow
+ using flow performance application with any order,
+ moreover the app also now starts to support inner
+ items matching as well.
+ * Added header modify actions.
+ * Added flag action.
+ * Added raw encap/decap actions.
+ * Added VXLAN encap/decap actions.
+ * Added ICMP and ICMP6 matching items.
+ * Added option to set port mask for insertion/deletion:
+ ``--portmask=N``
+ where N represents the hexadecimal bitmask of ports used.
+
+* **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 ioat rawdev driver**
+
+ The ioat rawdev driver has been updated and enhanced. Changes include:
+
+ * Added support for Intel\ |reg| Data Streaming Accelerator hardware.
+ For more information, see https://01.org/blogs/2019/introducing-intel-data-streaming-accelerator
+ * Added support for the fill operation via the API ``rte_ioat_enqueue_fill()``,
+ where the hardware fills an area of memory with a repeating pattern.
+ * Added a per-device configuration flag to disable management
+ of user-provided completion handles.
+ * Renamed the ``rte_ioat_do_copies()`` API to ``rte_ioat_perform_ops()``,
+ and renamed the ``rte_ioat_completed_copies()`` API to ``rte_ioat_completed_ops()``
+ to better reflect the APIs' purposes, and remove the implication that
+ they are limited to copy operations only.
+ [Note: The old API is still provided but marked as deprecated in the code]
+ * Added a new API ``rte_ioat_fence()`` to add a fence between operations.
+ This API replaces the ``fence`` flag parameter in the ``rte_ioat_enqueue_copies()`` function,
+ and is clearer as there is no ambiguity as to whether the flag should be
+ set on the last operation before the fence or the first operation after it.
+
+* **Updated the pipeline library for alignment with the P4 language.**
+
+ Added new Software Switch (SWX) pipeline type that provides more
+ flexibility through API and feature alignment with the P4 language.
+
+ * The packet headers, meta-data, actions, tables and pipelines are
+ dynamically defined instead of selected from pre-defined set.
+ * The actions and the pipeline are defined with instructions.
+ * Extern objects and functions can be plugged into the pipeline.
+ * Transaction-oriented table updates.
+
+* **Add new AVX512 specific classify algorithms for ACL library.**
+
+ * Added new ``RTE_ACL_CLASSIFY_AVX512X16`` vector implementation,
+ which can process up to 16 flows in parallel. Requires AVX512 support.
+
+ * Added new ``RTE_ACL_CLASSIFY_AVX512X32`` vector implementation,
+ which can process up to 32 flows in parallel. Requires AVX512 support.
+
+* **Added support to update subport bandwidth dynamically.**
+
+ * Added new API ``rte_sched_port_subport_profile_add`` to add new
+ subport bandwidth profile to subport porfile table at runtime.
+
+ * Added support to update subport rate dynamically.
+
Removed Items
-------------
Also, make sure to start the actual text at the margin.
=======================================================
+* vhost: Dequeue zero-copy support has been removed.
+
+* kernel: The module ``igb_uio`` has been moved to the git repository
+ ``dpdk-kmods`` in a new directory ``linux/igb_uio``.
+
+* Removed Python 2 support since it was EOL'd in January 2020.
API Changes
-----------
Also, make sure to start the actual text at the margin.
=======================================================
+* build macros: The macros defining ``RTE_MACHINE_CPUFLAG_*`` are removed.
+ The information provided by these macros is available through standard
+ compiler macros.
+
* eal: The ``rte_logs`` struct and global symbol was made private
and is no longer part of the API.
* eal: Made the ``rte_dev_event`` structure private to the EAL as no public API
used it.
+* eal: ``rte_cio_rmb()`` and ``rte_cio_wmb()`` were deprecated since 20.08
+ and are removed in this release.
+
* mem: Removed the unioned field ``phys_addr`` from
the structures ``rte_memseg`` and ``rte_memzone``.
The field ``iova`` is remaining from the old unions.
* ethdev: Removed the ``kdrv`` field in the ethdev ``rte_eth_dev_data``
structure as it gave no useful abstracted information to the applications.
+* ethdev: ``rte_eth_rx_descriptor_done()`` API has been deprecated.
+
+* Renamed internal ethdev APIs:
+
+ * ``_rte_eth_dev_callback_process()`` -> ``rte_eth_dev_callback_process()``
+ * ``_rte_eth_dev_reset`` -> ``rte_eth_dev_internal_reset()``
+
+* ethdev: Modified field type of ``base`` and ``nb_queue`` in struct
+ ``rte_eth_dcb_tc_queue_mapping`` from ``uint8_t`` to ``uint16_t``.
+ As the data of ``uint8_t`` will be truncated when queue number under
+ a TC is greater than 256.
+
+* vhost: Moved vDPA APIs from experimental to stable.
+
* 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()``,
and the function ``rte_rawdev_queue_conf_get()``
from ``void`` to ``int`` allowing the return of error codes from drivers.
+* rawdev: The running of a drivers ``selftest()`` function can now be done
+ using the ``rawdev_autotest`` command in the ``dpdk-test`` binary. This
+ command now calls the self-test function for each rawdev found on the
+ system, and does not require a specific command per device type.
+ Following this change, the ``ioat_rawdev_autotest`` command has been
+ removed as no longer needed.
+
+* raw/ioat: As noted above, the ``rte_ioat_do_copies()`` and
+ ``rte_ioat_completed_copies()`` functions have been renamed to
+ ``rte_ioat_perform_ops()`` and ``rte_ioat_completed_ops()`` respectively.
+
+* stack: the experimental tag has been dropped from the stack library, and its
+ interfaces are considered stable as of DPDK 20.11.
+
* bpf: ``RTE_BPF_XTYPE_NUM`` has been dropped from ``rte_bpf_xtype``.
+* 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.
+
+* sched: Added ``subport_profile_id`` as argument
+ to function ``rte_sched_subport_config``.
+
+* sched: Removed ``tb_rate``, ``tc_rate``, ``tc_period`` and ``tb_size``
+ from ``struct rte_sched_subport_params``.
+
ABI Changes
-----------
Also, make sure to start the actual text at the margin.
=======================================================
+* eal: Removed the not implemented function ``rte_dump_registers()``.
+
+* ``ethdev`` changes
+
+ * Following device operation function pointers moved
+ from ``struct eth_dev_ops`` to ``struct rte_eth_dev``:
+
+ * ``eth_rx_queue_count_t rx_queue_count;``
+ * ``eth_rx_descriptor_done_t rx_descriptor_done;``
+ * ``eth_rx_descriptor_status_t rx_descriptor_status;``
+ * ``eth_tx_descriptor_status_t tx_descriptor_status;``
+
+ * ``struct eth_dev_ops`` is no more accessible by applications,
+ which was already internal data structure.
+
+ * ``ethdev`` internal functions are marked with ``__rte_internal`` tag.
+
+* sched: Added new fields to ``struct rte_sched_subport_port_params``.
+
Known Issues
------------