doc: add large iavf support to release notes
[dpdk.git] / doc / guides / nics / netvsc.rst
index 0f033e3..19f9940 100644 (file)
@@ -6,7 +6,7 @@ Netvsc poll mode driver
 
 The Netvsc Poll Mode driver (PMD) provides support for the paravirtualized
 network device for Microsoft Hyper-V. It can be used with
-Window Server 2008/2012/2016, Windows 10 and Azure cloud.
+Window Server 2008/2012/2016, Windows 10.
 The device offers multi-queue support (if kernel and host support it),
 checksum and segmentation offloads.
 
@@ -21,22 +21,23 @@ In this release, the hyper PMD driver provides the basic functionality of packet
 
 *   The PMD supports multicast packets and promiscuous mode subject to restrictions on the host.
     In order to this to work, the guest network configuration on Hyper-V must be configured to allow MAC address
-    spoofing. This option is not available on Azure.
+    spoofing.
 
 *   The device has only a single MAC address.
     Hyper-V driver does not support MAC or VLAN filtering because the Hyper-V host does not support it.
 
 *   VLAN tags are always stripped and presented in mbuf tci field.
 
-*   The Hyper-V driver does not use or support Link State or Rx interrupt.
+*   The Hyper-V driver does not use or support interrupts. Link state change
+    callback is done via change events in the packet ring.
 
 *   The maximum number of queues is limited by the host (currently 64).
     When used with 4.16 kernel only a single queue is available.
 
-*   This driver is intended for use with synthetic path only.
-    Accelerated Networking (SR-IOV) acceleration is not supported yet.
-    Use the VDEV_NETVSC device for accelerated networking instead.
-
+*   This driver supports SR-IOV network acceleration.
+    If SR-IOV is enabled then the driver will transparently manage the interface,
+    and send and receive packets using the VF path.
+    The VDEV_NETVSC and FAILSAFE drivers are *not* used when using netvsc PMD.
 
 Installation
 ------------
@@ -88,7 +89,7 @@ operations:
 
 .. Note::
 
-   The dpkd-devbind.py script should not be used. It only handles PCI devices.
+   The dpdk-devbind.py script can not be used since it only handles PCI devices.
 
 
 Prerequisites
@@ -99,3 +100,44 @@ The following prerequisites apply:
 *   Linux kernel support for UIO on vmbus is done with the uio_hv_generic driver.
     Full support of multiple queues requires the 4.17 kernel. It is possible
     to use the netvsc PMD with 4.16 kernel but it is limited to a single queue.
+
+
+Netvsc PMD arguments
+--------------------
+
+The user can specify below argument in devargs.
+
+#.  ``latency``:
+
+    A netvsc device uses a mailbox page to indicate to the host that there
+    is something in the transmit queue. The host scans this page at a
+    periodic interval. This parameter allows adjusting the value that
+    is used by the host. Smaller values improve transmit latency, and larger
+    values save CPU cycles. This parameter is in microseconds.
+    If the value is too large or too small it will be
+    ignored by the host. (Default: 50)
+
+#.  ``rx_copybreak``:
+
+    The rx_copybreak sets the threshold where the driver uses an external
+    mbuf to avoid having to copy data. Setting 0 for copybreak will cause
+    driver to always create an external mbuf. Setting a value greater than
+    the MTU would prevent it from ever making an external mbuf and always
+    copy. The default value is 256 (bytes).
+
+#.  ``tx_copybreak``:
+
+    The tx_copybreak sets the threshold where the driver aggregates
+    multiple small packets into one request. If tx_copybreak is 0 then
+    each packet goes as a VMBus request (no copying). If tx_copybreak is
+    set larger than the MTU, then all packets smaller than the chunk size
+    of the VMBus send buffer will be copied; larger packets always have to
+    go as a single direct request. The default value is 512 (bytes).
+
+#.  ``rx_extmbuf_enable``:
+    The rx_extmbuf_enable is used to control if netvsc should use external
+    mbuf for receiving packets. The default value is 0. (netvsc doesn't use
+    external mbuf, it always allocates mbuf and copy received data to mbuf)
+    A non-zero value tells netvsc to attach external buffers to mbuf on
+    receiving packets, thus avoid copying memory. Use of external buffers
+    requires the application is able to read data from external mbuf.