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

Reply via email to