X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fnetvsc.rst;h=19f9940fe6e1ba80815632302041f271f4593012;hb=7a483d58db54e54201739e6b6e359078f07ed48d;hp=0f033e3a3d63991a370a59513909315b28a19921;hpb=beff6d8e8e2e50dc341a23c4b947ed09487f4b31;p=dpdk.git diff --git a/doc/guides/nics/netvsc.rst b/doc/guides/nics/netvsc.rst index 0f033e3a3d..19f9940fe6 100644 --- a/doc/guides/nics/netvsc.rst +++ b/doc/guides/nics/netvsc.rst @@ -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.