[v3,next,7/7] net/vmxnet3: update to version 7

Message ID 20230428071055.362-8-doshir@vmware.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/vmxnet3: upgrade to version 7 |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-unit-testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/intel-Functional success Functional PASS

Commit Message

Ronak Doshi April 28, 2023, 7:10 a.m. UTC
  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 <doshir@vmware.com>
Acked-by: Jochen Behrens <jbehrens@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(-)
  

Comments

Ferruh Yigit May 3, 2023, 5:29 p.m. UTC | #1
On 4/28/2023 8:10 AM, Ronak Doshi wrote:
> 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.

Update added as continuation of section comment, I will fix while merging.
  

Patch

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