Also, make sure to start the actual text at the margin.
=========================================================
+* **Reorganized the mbuf structure.**
+
+ * Align fields to facilitate the writing of ``data_off``, ``refcnt``, and
+ ``nb_segs`` in one operation.
+ * Use 2 bytes for port and number of segments.
+ * Move the sequence number in the second cache line.
+ * Add a timestamp field.
+ * Set default value for ``refcnt``, ``next`` and ``nb_segs`` at mbuf free.
+
+* **Added mbuf raw free API**
+
+ Moved ``rte_mbuf_raw_free()`` and ``rte_pktmbuf_prefree_seg()`` functions to
+ the public API.
+
* **Added free Tx mbuf on demand API.**
Added a new function ``rte_eth_tx_done_cleanup()`` which allows an application
to request the driver to release mbufs from their Tx ring that are no longer
in use, independent of whether or not the ``tx_rs_thresh`` has been crossed.
+* **Added EAL dynamic log framework.**
+
+ Added new APIs to dynamically register named log types, and control
+ the level of each type independently.
+
* **Added descriptor status ethdev API.**
Added a new API to get the status of a descriptor.
sPAPR IOMMU based pci probing enabled for vfio-pci devices.
+* **Kept consistent PMD batching behaviour.**
+
+ Removed the limit of fm10k/i40e/ixgbe TX burst size and vhost RX/TX burst size
+ in order to support the same policy of "make an best effort to RX/TX pkts"
+ for PMDs.
+
* **Updated the ixgbe base driver.**
Updated the ixgbe base driver, including the following changes:
i40e PMD and its vector PMD enabled by default in powerpc.
+* **Added VF max bandwidth setting on i40e.**
+
+ i40e HW supports to set the max bandwidth for a VF. Enable this capability.
+
+* **Added VF TC min bandwidth setting on i40e.**
+
+ i40e HW supports to set the allocated bandwidth for a TC on a VF. Enable this
+ capability.
+
+* **Added VF TC max bandwidth setting on i40e.**
+
+ i40e HW supports to set the max bandwidth for a TC on a VF. Enable this
+ capability.
+
+* **Added TC strict priority mode setting on i40e.**
+
+ There're 2 TX scheduling modes supported for TCs by i40e HW, round ribon mode
+ and strict priority mode. By default it's round robin mode. Enable the
+ capability to change the TX scheduling mode for a TC. It's a global setting
+ on a physical port.
+
+* **Added i40e dynamic device personalization support.**
+
+ * Added dynamic device personalization processing to i40e FW.
+
+* **Added TSO support for tunneled and non-tunneled packets on mlx5 driver.**
+
+ Added support for Hardware TSO for tunneled and non-tunneled packets.
+ Tunneling protocols supported are GRE and VXLAN.
+
+* **Added support for Rx interrupts on mlx5 driver.**
+
+ Rx queues can be armed with an interrupt which will trigger on the
+ next packet arrival.
+
+* **Updated the sfc_efx driver.**
+
+ * Generic flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and TCP
+ pattern items with QUEUE action for ingress traffic.
+
+ * Support virtual functions (VFs)
+
+* **Added LiquidIO network PMD.**
+
+ Added poll mode driver support for Cavium LiquidIO II server adapter VFs.
+
+* **Added support for the Wind River Systems AVP PMD.**
+
+ Added a new networking driver for the AVP device type. Theses devices are
+ specific to the Wind River Systems virtualization platforms.
+
+* **Added vmxnet3 version 3 support.**
+
+ Added support for vmxnet3 version 3 which includes several
+ performance enhancements viz. configurable TX data ring, Receive
+ Data Ring, ability to register memory regions.
+
+* **Updated the tap driver.**
+
+ * Support MTU modification.
+ * Support packet type for Rx.
+ * Support segmented packets on Rx and Tx.
+ * Speed up Rx on tap when no packets are available.
+ * Support capturing traffic from another netdevice.
+ * Dynamically change link status when the underlying interface state changes.
+ * Generic flow API support for Ethernet, VLAN, IPv4, IPv6, UDP and TCP pattern
+ items with DROP, QUEUE and PASSTHRU actions for ingress traffic.
+
+* **Added MTU feature support to Virtio and Vhost.**
+
+ Implemented new Virtio MTU feature into Vhost and Virtio:
+
+ * Add ``rte_vhost_mtu_get()`` API to Vhost library.
+ * Enable Vhost PMD's MTU get feature.
+ * Get max MTU value from host in Virtio PMD
+
+* **Added interrupt mode support for virtio-user.**
+
+ Implemented Rxq interrupt mode and LSC support for virtio-user as a virtual
+ device. Supported cases:
+
+ * Rxq interrupt for virtio-user + vhost-user as the backend.
+ * Rxq interrupt for virtio-user + vhost-kernel as the backend.
+ * LSC interrupt for virtio-user + vhost-user as the backend.
+
+* **Added event driven programming model library (rte_eventdev).**
+
+ This API introduces event driven programming model.
+
+ In a polling model, lcores poll ethdev ports and associated
+ rx queues directly to look for packet. In an event driven model,
+ by contrast, lcores call the scheduler that selects packets for
+ them based on programmer-specified criteria. Eventdev library
+ added support for event driven programming model, which offer
+ applications automatic multicore scaling, dynamic load balancing,
+ pipelining, packet ingress order maintenance and
+ synchronization services to simplify application packet processing.
+
+ By introducing event driven programming model, DPDK can support
+ both polling and event driven programming models for packet processing,
+ and applications are free to choose whatever model
+ (or combination of the two) that best suits their needs.
+
+* **Added Software Eventdev PMD.**
+
+ Added support for the software eventdev PMD. The software eventdev is a
+ software based scheduler device that implements the eventdev API. This
+ PMD allows an application to configure a pipeline using the eventdev
+ library, and run the scheduling workload on a CPU core.
+
+* **Added Cavium OCTEONTX Eventdev PMD.**
+
+ Added the new octeontx ssovf eventdev driver for OCTEONTX devices. See the
+ "Event Device Drivers" document for more details on this new driver.
+
+* **Added information metric library.**
+
+ A library that allows information metrics to be added and updated
+ by producers, typically other libraries, for later retrieval by
+ consumers such as applications. It is intended to provide a
+ reporting mechanism that is independent of other libraries such
+ as ethdev.
+
+* **Added bit-rate calculation library.**
+
+ A library that can be used to calculate device bit-rates. Calculated
+ bitrates are reported using the metrics library.
+
+* **Added latency stats library.**
+
+ A library that measures packet latency. The collected statistics are jitter
+ and latency. For latency the minimum, average, and maximum is measured.
+
Resolved Issues
---------------
Also, make sure to start the actual text at the margin.
=========================================================
+* **LSC interrupt cannot work for virtio-user + vhost-kernel.**
+
+ LSC interrupt cannot be detected when setting the backend, tap device,
+ up/down as we fail to find a way to monitor such event.
+
API Changes
-----------
flagged by the compiler. The return value usage should be checked
while fixing the compiler error due to the extra parameter.
+* **Reworked rte_vhost library**
+
+ The rte_vhost library has been reworked to make it generic enough so that
+ user could build other vhost-user drivers on top of it. To achieve that,
+ following changes have been made:
+
+ * The following vhost-pmd APIs are removed:
+
+ * ``rte_eth_vhost_feature_disable``
+ * ``rte_eth_vhost_feature_enable``
+ * ``rte_eth_vhost_feature_get``
+
+ * The vhost API ``rte_vhost_driver_callback_register(ops)`` is reworked to
+ be per vhost-user socket file. Thus, it takes one more argument:
+ ``rte_vhost_driver_callback_register(path, ops)``.
+
+ * The vhost API ``rte_vhost_get_queue_num`` is deprecated, instead,
+ ``rte_vhost_get_vring_num`` should be used.
+
+ * Following macros are removed in ``rte_virtio_net.h``
+
+ * ``VIRTIO_RXQ``
+ * ``VIRTIO_TXQ``
+ * ``VIRTIO_QNUM``
+
+ * Following net specific header files are removed in ``rte_virtio_net.h``
+
+ * ``linux/virtio_net.h``
+ * ``sys/socket.h``
+ * ``linux/if.h``
+ * ``rte_ether.h``
+
+ * The vhost struct ``virtio_net_device_ops`` is renamed to
+ ``vhost_device_ops``
+
+ * The vhost API ``rte_vhost_driver_session_start`` is removed. Instead,
+ ``rte_vhost_driver_start`` should be used, and no need to create a
+ thread to call it.
+
+ * The vhost public header file ``rte_virtio_net.h`` is renamed to
+ ``rte_vhost.h``
+
+
ABI Changes
-----------
Also, make sure to start the actual text at the margin.
=========================================================
+* **Reorganized the mbuf structure.**
+
+ The order and size of the fields in the ``mbuf`` structure changed,
+ as described in the `New Features`_ section.
+
Removed Items
-------------
.. code-block:: diff
librte_acl.so.2
+ + librte_bitratestats.so.1
librte_cfgfile.so.2
librte_cmdline.so.2
librte_cryptodev.so.2
librte_jobstats.so.1
librte_kni.so.2
librte_kvargs.so.1
+ + librte_latencystats.so.1
librte_lpm.so.2
- librte_mbuf.so.2
+ + librte_mbuf.so.3
librte_mempool.so.2
librte_meter.so.1
+ + librte_metrics.so.1
librte_net.so.1
librte_pdump.so.1
librte_pipeline.so.3