Also, make sure to start the actual text at the margin.
=========================================================
+* **Reworked memory subsystem.**
+
+ Memory subsystem has been reworked to support new functionality.
+
+ On Linux, support for reserving/unreserving hugepage memory at runtime was
+ added, so applications no longer need to pre-reserve memory at startup. Due to
+ reorganized internal workings of memory subsystem, any memory allocated
+ through ``rte_malloc()`` or ``rte_memzone_reserve()`` is no longer guaranteed
+ to be IOVA-contiguous.
+
+ This functionality has introduced the following changes:
+
+ * ``rte_eal_get_physmem_layout()`` was removed
+ * A new flag for memzone reservation (``RTE_MEMZONE_IOVA_CONTIG``) was added
+ to ensure reserved memory will be IOVA-contiguous, for use with device
+ drivers and other cases requiring such memory
+ * New callbacks for memory allocation/deallocation events, allowing user (or
+ drivers) to be notified of new memory being allocated or deallocated
+ * New callbacks for validating memory allocations above specified limit,
+ allowing user to permit or deny memory allocations
+ * A new command-line switch ``--legacy-mem`` to enable EAL behavior similar to
+ how older versions of DPDK worked (memory segments that are IOVA-contiguous,
+ but hugepages are reserved at startup only, and can never be released)
+ * A new command-line switch ``--single-file-segments`` to put all memory
+ segments within a segment list in a single file
+ * A set of convenience function calls to look up and iterate over allocated
+ memory segments
+ * ``-m`` and ``--socket-mem`` command-line arguments now carry an additional
+ meaning and mark pre-reserved hugepages as "unfree-able", thereby acting as
+ a mechanism guaranteeing minimum availability of hugepage memory to the
+ application
+
+ Reserving/unreserving memory at runtime is not currently supported on FreeBSD.
+
* **Added bucket mempool driver.**
Added bucket mempool driver which provides a way to allocate contiguous
The number may be obtained using rte_mempool_ops_get_info() API.
Contiguous blocks may be allocated using rte_mempool_get_contig_blocks() API.
+* **Added support for port representors.**
+
+ The DPDK port representors (also known as "VF representors" in the specific
+ context of VFs), which are to DPDK what the Ethernet switch device driver
+ model (**switchdev**) is to Linux, and which can be thought as a software
+ "patch panel" front-end for applications. DPDK port representors are
+ implemented as additional virtual Ethernet device (**ethdev**) instances,
+ spawned on an as needed basis through configuration parameters passed to the
+ driver of the underlying device using devargs.
+
+* **Added support for VXLAN and NVGRE tunnel endpoint.**
+
+ New actions types have been added to support encapsulation and decapsulation
+ operations for a tunnel endpoint. The new action types are
+ RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_ENCAP, RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_DECAP,
+ RTE_FLOW_ACTION_TYPE_JUMP. New item type RTE_FLOW_ACTION_TYPE_MARK has been
+ added to match a flow against a previously marked flow. It also introduced shared
+ counter to flow API to counte for a group of flows.
+
* **Added PMD-recommended Tx and Rx parameters**
Applications can now query drivers for device-tuned values of
driver the assigned VF gets configured to Rx/Tx directly to VM's virtio
vrings.
+* **Added support for vhost dequeue interrupt mode.**
+
+ Added support for vhost dequeue interrupt mode to release cpus to others when
+ no data to transmit. Applications could register an epoll event fd to associate
+ Rx queues with interrupt vectors.
+
* **Added support for virtio-user server mode.**
In a container environment if the vhost-user backend restarts, there's no way
for it to reconnect to virtio-user. To address this, support for server mode
stats/xstats on shared memory from secondary process, and also pdump packets on
those virtual devices.
+* **Advancement to Packet Framework Library.**
+
+ Design and development of new API functions for Packet Framework library that
+ implements common set of actions such as traffic metering, packet
+ encapsulation, network address translation, TTL update, etc., for pipeline
+ table and input ports to speed up application development. The API functions
+ includes creating action profiles, registering actions to the profiles,
+ instantiating action profiles for pipeline table and input ports, etc.
+
* **Added the BPF Library.**
The BPF Library provides the ability to load and execute
redirect matching traffic to a specific physical port.
* PORT_ID pattern item and actions were added to match and target DPDK
port IDs at a higher level than PHY_PORT.
+ * RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_ENCAP action items were added to support
+ tunnel encapsulation operation for VXLAN and NVGRE type tunnel endpoint.
+ * RTE_FLOW_ACTION_TYPE_[VXLAN/NVGRE]_DECAP action items were added to support
+ tunnel decapsulation operation for VXLAN and NVGRE type tunnel endpoint.
+ * RTE_FLOW_ACTION_TYPE_JUMP action item was added to support a matched flow
+ to be redirected to the specific group.
+ * RTE_FLOW_ACTION_TYPE_MARK item type has been added to match a flow against
+ a previously marked flow.
* ethdev: change flow APIs regarding count action:
* ``rte_flow_create()`` API count action now requires the ``struct rte_flow_action_count``.
Also, make sure to start the actual text at the margin.
=========================================================
+* **Secondary process launch is not reliable.**
+
+ Recent memory hotplug patches have made multiprocess startup less reliable
+ than it was in the past. A number of workarounds are known to work depending
+ on the circumstances. As such it isn't recommended to use the secondary
+ process mechanism for critical systems. The underlying issues will be
+ addressed in upcoming releases.
+
+ The issue is explained in more detail, including potential workarounds,
+ in the Bugzilla entry referenced below.
+
+ Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=50
+
* **pdump is not compatible with old applications.**
As we changed to use generic multi-process communication for pdump negotiation
dpdk-pdump example and any other applications using librte_pdump, cannot work
with older version DPDK primary applications.
+* **rte_abort takes a long time on FreeBSD.**
+
+ DPDK processes now allocates a large area of virtual memory address space,
+ with this change during rte_abort FreeBSD now dumps the contents of the
+ whole reserved memory range, not just the used portion, to a core dump file.
+ Write this large core file can take a significant amount of time, causing
+ processes to appear hung on the system.
+
+ The work around for the issue is to set the system resource limits for core
+ dumps before running any tests e.g."limit coredumpsize 0". This will
+ effectively disable core dumps on FreeBSD. If they are not to be completely
+ disabled, a suitable limit, e.g. 1G might be specified instead of 0. This
+ needs to be run per-shell session, or before every test run. This change
+ can also be made persistent by adding "kern.coredump=0" to /etc/sysctl.conf
+
+ Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=53
+
+* **Bonding PMD may fail to accept new slaves in certain conditions.**
+
+ In certain conditions when using testpmd,
+ bonding may fail to register new slave ports.
+
+ Bugzilla entry: https://dpdk.org/tracker/show_bug.cgi?id=52.
+
Shared Library Versions
-----------------------
* Host interface: PCI Express 3.0 x16
* Device ID: 15b3:1017
* Firmware version: 16.22.0428
+
+* ARM SoC combinations from Cavium (with integrated NICs)
+
+ * SoC:
+
+ * Cavium CN81xx
+ * Cavium CN83xx
+
+ * OS:
+
+ * Ubuntu 16.04.2 LTS with Cavium SDK-6.2.0-Patch2 release support package.
+
+* ARM SoC combinations from NXP (with integrated NICs)
+
+ * SoC:
+
+ * NXP/Freescale QorIQ LS1046A with ARM Cortex A72
+ * NXP/Freescale QorIQ LS2088A with ARM Cortex A72
+
+ * OS:
+
+ * Ubuntu 16.04.3 LTS with NXP QorIQ LSDK 1803 support packages