With all vmxnet3 version 7 changes incorporated in the vmxnet3 driver, the driver can configure emulation to run at vmxnet3 version 7, provided the emulation advertises support for version 7.
Signed-off-by: Ronak Doshi <dos...@vmware.com> Acked-by: Jochen Behrens <jbehr...@vmware.com> --- doc/guides/nics/vmxnet3.rst | 30 ++++++++++++++++++++++++++---- doc/guides/rel_notes/release_23_07.rst | 6 ++++++ drivers/net/vmxnet3/vmxnet3_ethdev.c | 6 +++++- drivers/net/vmxnet3/vmxnet3_ring.h | 2 +- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/doc/guides/nics/vmxnet3.rst b/doc/guides/nics/vmxnet3.rst index 190cf91a47..db242cd642 100644 --- a/doc/guides/nics/vmxnet3.rst +++ b/doc/guides/nics/vmxnet3.rst @@ -21,10 +21,6 @@ VMXNET3 Implementation in the DPDK For details on the VMXNET3 device, refer to the VMXNET3 driver's vmxnet3 directory and support manual from VMware*. -For performance details, refer to the following link from VMware: - -`http://www.vmware.com/pdf/vsp_4_vmxnet3_perf.pdf <http://www.vmware.com/pdf/vsp_4_vmxnet3_perf.pdf>`_ - As a PMD, the VMXNET3 driver provides the packet reception and transmission callbacks, vmxnet3_recv_pkts and vmxnet3_xmit_pkts. The VMXNET3 PMD handles all the packet buffer memory allocation and resides in guest address space @@ -67,6 +63,32 @@ There are several options available for filtering packets at VMXNET3 device leve * VLAN tag based filtering without load balancing - SUPPORTED +#. Vmxnet3 versions and associated features. + + Vmxnet3 version is tied to corresponding ESXi hardware version and each + version defines a set of compatible features. + + * Vmxnet3 version 7, hw ver 19 + This version adds support for Uniform Passthrough(UPT). + + * Vmxnet3 version 6, hw ver 17 + This version enhanced vmxnet3 to support queues up to 32 and also + removed power-of-two limitations on the queues. + + * Vmxnet3 version 5, hw ver 15 + Features not related to dpdk vmxnet3 PMD. + + * Vmxnet3 version 4, hw ver 14 + This version adds supoprt for UDP and ESP RSS + + * Vmxnet3 version 3, hw ver 13 + This version added performance enhancement features such as + configurable Tx data ring, Receive Data Ring, and the ability + to register memory regions. + + * Vmxnet3 version 2, hw ver 11 + This version adds support for Large Receive offload (LRO). + .. note:: diff --git a/doc/guides/rel_notes/release_23_07.rst b/doc/guides/rel_notes/release_23_07.rst index a9b1293689..907a06cd62 100644 --- a/doc/guides/rel_notes/release_23_07.rst +++ b/doc/guides/rel_notes/release_23_07.rst @@ -55,6 +55,12 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= + * **Added vmxnet3 version 7 support.** + + Added support for vmxnet3 version 7 which includes support + for uniform passthrough(UPT). The patches also add support + for new capability registers, large passthru BAR and some + performance enhancements for UPT. Removed Items ------------- diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index b9cf007429..41073e9798 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -410,7 +410,11 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev) /* Check h/w version compatibility with driver. */ ver = VMXNET3_READ_BAR1_REG(hw, VMXNET3_REG_VRRS); - if (ver & (1 << VMXNET3_REV_6)) { + if (ver & (1 << VMXNET3_REV_7)) { + VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_VRRS, + 1 << VMXNET3_REV_7); + hw->version = VMXNET3_REV_7 + 1; + } else if (ver & (1 << VMXNET3_REV_6)) { VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_VRRS, 1 << VMXNET3_REV_6); hw->version = VMXNET3_REV_6 + 1; diff --git a/drivers/net/vmxnet3/vmxnet3_ring.h b/drivers/net/vmxnet3/vmxnet3_ring.h index 50992349d8..948762db90 100644 --- a/drivers/net/vmxnet3/vmxnet3_ring.h +++ b/drivers/net/vmxnet3/vmxnet3_ring.h @@ -7,7 +7,7 @@ #define VMXNET3_RX_CMDRING_SIZE 2 -#define VMXNET3_DRIVER_VERSION_NUM 0x01012000 +#define VMXNET3_DRIVER_VERSION_NUM 0x01013000 /* Default ring size */ #define VMXNET3_DEF_TX_RING_SIZE 512 -- 2.11.0