numam-dpdk/mk
Bruce Richardson dfaff37fc4 vmxnet3: import new vmxnet3 poll mode driver implementation
Poll Mode Driver for Paravirtual VMXNET3 NIC.
As a PMD, the VMXNET3 driver provides the packet reception and transmission
callbacks, vmxnet3_recv_pkts and vmxnet3_xmit_pkts. It does not support
scattered packet reception as part of vmxnet3_recv_pkts and
vmxnet3_xmit_pkts. Also, it does not support scattered packet reception as part of
the device operations supported.

The VMXNET3 PMD handles all the packet buffer memory allocation and resides in
guest address space and it is solely responsible to free that memory when not needed.
The packet buffers and features to be supported are made available to hypervisor via
VMXNET3 PCI configuration space BARs. During RX/TX, the packet buffers are
exchanged by their GPAs, and the hypervisor loads the buffers with packets in the RX
case and sends packets to vSwitch in the TX case.

The VMXNET3 PMD is compiled with vmxnet3 device headers. The interface is similar
to that of the other PMDs available in the Intel(R) DPDK API. The driver pre-allocates the
packet buffers and loads the command ring descriptors in advance. The hypervisor fills
those packet buffers on packet arrival and write completion ring descriptors, which are
eventually pulled by the PMD. After reception, the Intel(R) DPDK application frees the
descriptors and loads new packet buffers for the coming packets. The interrupts are
disabled and there is no notification required. This keeps performance up on the RX
side, even though the device provides a notification feature.

In the transmit routine, the Intel(R) DPDK application fills packet buffer pointers in the
descriptors of the command ring and notifies the hypervisor. In response the hypervisor
takes packets and passes them to the vSwitch. It writes into the completion descriptors
ring. The rings are read by the PMD in the next transmit routine call and the buffers
and descriptors are freed from memory.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:22:32 +01:00
..
arch add FreeBSD support 2014-02-25 21:29:18 +01:00
exec-env add FreeBSD support 2014-02-25 21:29:18 +01:00
internal update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
machine mk: add haswell target 2014-02-25 21:29:18 +01:00
target/generic mk: rework cpu flags detection 2014-02-25 21:29:18 +01:00
toolchain mk: add haswell target 2014-02-25 21:29:18 +01:00
rte.app.mk vmxnet3: import new vmxnet3 poll mode driver implementation 2014-02-26 10:22:32 +01:00
rte.bsdmodule.mk add FreeBSD support 2014-02-25 21:29:18 +01:00
rte.cpuflags.mk mk: rework cpu flags detection 2014-02-25 21:29:18 +01:00
rte.doc.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.extapp.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.extlib.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.extobj.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.extvars.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.gnuconfigure.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.hostapp.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.hostlib.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.install.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.lib.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.module.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.obj.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkbuild.mk add FreeBSD support 2014-02-25 21:29:18 +01:00
rte.sdkconfig.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkdepdirs.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkdoc.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkgcov.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkinstall.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdkroot.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdktest.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sdktestall.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.sharelib.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.subdir.mk update Intel copyright years to 2014 2014-02-25 21:29:14 +01:00
rte.vars.mk config: fix combined/shared lib 2014-02-25 21:29:18 +01:00