vhost: introduce API to start a specific driver
[dpdk.git] / doc / guides / rel_notes / release_17_05.rst
index e25ea9f..0373def 100644 (file)
@@ -41,6 +41,135 @@ New Features
      Also, make sure to start the actual text at the margin.
      =========================================================
 
+* **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 descriptor status ethdev API.**
+
+  Added a new API to get the status of a descriptor.
+
+  For Rx, it is almost similar to the ``rx_descriptor_done`` API, except
+  it differentiates descriptors which are hold by the driver and not
+  returned to the hardware. For Tx, it is a new API.
+
+* **Increased number of next hops for LPM IPv6 to 2^21.**
+
+  The next_hop field is extended from 8 bits to 21 bits for IPv6.
+
+* **Added VFIO hotplug support.**
+
+  How hotplug supported with UIO and VFIO drivers.
+
+* **Added powerpc support in pci probing for vfio-pci devices.**
+
+  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:
+
+  * Add link block check for KR.
+  * Complete HW initialization even if SFP is not present.
+  * Add VF xcast promiscuous mode.
+
+* **Added powerpc support for i40e and its vector PMD .**
+
+  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.
+
 
 Resolved Issues
 ---------------
@@ -96,6 +225,11 @@ Known 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
 -----------
@@ -110,6 +244,81 @@ API Changes
    Also, make sure to start the actual text at the margin.
    =========================================================
 
+* The LPM ``next_hop`` field is extended from 8 bits to 21 bits for IPv6
+  while keeping ABI compatibility.
+
+* **Reworked rte_ring library**
+
+  The rte_ring library has been reworked and updated. The following changes
+  have been made to it:
+
+  * removed the build-time setting ``CONFIG_RTE_RING_SPLIT_PROD_CONS``
+  * removed the build-time setting ``CONFIG_RTE_LIBRTE_RING_DEBUG``
+  * removed the build-time setting ``CONFIG_RTE_RING_PAUSE_REP_COUNT``
+  * removed the function ``rte_ring_set_water_mark`` as part of a general
+    removal of watermarks support in the library.
+  * added an extra parameter to the burst/bulk enqueue functions to
+    return the number of free spaces in the ring after enqueue. This can
+    be used by an application to implement its own watermark functionality.
+  * added an extra parameter to the burst/bulk dequeue functions to return
+    the number elements remaining in the ring after dequeue.
+  * changed the return value of the enqueue and dequeue bulk functions to
+    match that of the burst equivalents. In all cases, ring functions which
+    operate on multiple packets now return the number of elements enqueued
+    or dequeued, as appropriate. The updated functions are:
+
+    - ``rte_ring_mp_enqueue_bulk``
+    - ``rte_ring_sp_enqueue_bulk``
+    - ``rte_ring_enqueue_bulk``
+    - ``rte_ring_mc_dequeue_bulk``
+    - ``rte_ring_sc_dequeue_bulk``
+    - ``rte_ring_dequeue_bulk``
+
+    NOTE: the above functions all have different parameters as well as
+    different return values, due to the other listed changes above. This
+    means that all instances of the functions in existing code will be
+    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.
+
 
 ABI Changes
 -----------