Summary should say what is done. Consider:
net/vmxnet3: support virtual HW version 6
On 5/3/22 07:22, Pankaj Gupta wrote:
vmxnet3 version 6 supports some new features, including but
not limited to:
- Increased max MTU up to 9190
- Increased max number of queues, both for RX and TX
RX -> Rx, TX -> Tx in accordnace with recommended spelling
- Removes power-of-two limitations
- Extended interrupt structures, required implementation for
additional number of queues
Please, be consistent in tense used above, "increased" vs "removes".
Tested, using testpmd, for different hardware version on
ESXi 7.0 Update 2.
Signed-off-by: Pankaj Gupta <pagu...@vmware.com>
---
drivers/net/vmxnet3/base/vmxnet3_defs.h | 135 +++++++++-----
drivers/net/vmxnet3/vmxnet3_ethdev.c | 223 +++++++++++++++++-------
drivers/net/vmxnet3/vmxnet3_ethdev.h | 10 +-
drivers/net/vmxnet3/vmxnet3_rxtx.c | 2 +-
4 files changed, 260 insertions(+), 110 deletions(-)
diff --git a/drivers/net/vmxnet3/base/vmxnet3_defs.h
b/drivers/net/vmxnet3/base/vmxnet3_defs.h
index 8d62b3e116..ceac5d64db 100644
--- a/drivers/net/vmxnet3/base/vmxnet3_defs.h
+++ b/drivers/net/vmxnet3/base/vmxnet3_defs.h
@@ -72,38 +72,42 @@
#endif
typedef enum {
- VMXNET3_CMD_FIRST_SET = 0xCAFE0000,
- VMXNET3_CMD_ACTIVATE_DEV = VMXNET3_CMD_FIRST_SET,
- VMXNET3_CMD_QUIESCE_DEV,
- VMXNET3_CMD_RESET_DEV,
- VMXNET3_CMD_UPDATE_RX_MODE,
- VMXNET3_CMD_UPDATE_MAC_FILTERS,
- VMXNET3_CMD_UPDATE_VLAN_FILTERS,
- VMXNET3_CMD_UPDATE_RSSIDT,
- VMXNET3_CMD_UPDATE_IML,
- VMXNET3_CMD_UPDATE_PMCFG,
- VMXNET3_CMD_UPDATE_FEATURE,
- VMXNET3_CMD_STOP_EMULATION,
- VMXNET3_CMD_LOAD_PLUGIN,
- VMXNET3_CMD_ACTIVATE_VF,
- VMXNET3_CMD_RESERVED3,
- VMXNET3_CMD_RESERVED4,
- VMXNET3_CMD_REGISTER_MEMREGS,
- VMXNET3_CMD_SET_RSS_FIELDS,
-
- VMXNET3_CMD_FIRST_GET = 0xF00D0000,
- VMXNET3_CMD_GET_QUEUE_STATUS = VMXNET3_CMD_FIRST_GET,
- VMXNET3_CMD_GET_STATS,
- VMXNET3_CMD_GET_LINK,
- VMXNET3_CMD_GET_PERM_MAC_LO,
- VMXNET3_CMD_GET_PERM_MAC_HI,
- VMXNET3_CMD_GET_DID_LO,
- VMXNET3_CMD_GET_DID_HI,
- VMXNET3_CMD_GET_DEV_EXTRA_INFO,
- VMXNET3_CMD_GET_CONF_INTR,
- VMXNET3_CMD_GET_ADAPTIVE_RING_INFO,
- VMXNET3_CMD_GET_TXDATA_DESC_SIZE,
- VMXNET3_CMD_RESERVED5,
+ VMXNET3_CMD_FIRST_SET = 0xCAFE0000,
+ VMXNET3_CMD_ACTIVATE_DEV = VMXNET3_CMD_FIRST_SET,
+ VMXNET3_CMD_QUIESCE_DEV,
+ VMXNET3_CMD_RESET_DEV,
+ VMXNET3_CMD_UPDATE_RX_MODE,
+ VMXNET3_CMD_UPDATE_MAC_FILTERS,
+ VMXNET3_CMD_UPDATE_VLAN_FILTERS,
+ VMXNET3_CMD_UPDATE_RSSIDT,
+ VMXNET3_CMD_UPDATE_IML,
+ VMXNET3_CMD_UPDATE_PMCFG,
+ VMXNET3_CMD_UPDATE_FEATURE,
+ VMXNET3_CMD_STOP_EMULATION,
+ VMXNET3_CMD_LOAD_PLUGIN,
+ VMXNET3_CMD_ACTIVATE_VF,
+ VMXNET3_CMD_RESERVED3,
+ VMXNET3_CMD_RESERVED4,
+ VMXNET3_CMD_REGISTER_MEMREGS,
+ VMXNET3_CMD_SET_RSS_FIELDS,
+
+ VMXNET3_CMD_FIRST_GET = 0xF00D0000,
+ VMXNET3_CMD_GET_QUEUE_STATUS = VMXNET3_CMD_FIRST_GET,
+ VMXNET3_CMD_GET_STATS,
+ VMXNET3_CMD_GET_LINK,
+ VMXNET3_CMD_GET_PERM_MAC_LO,
+ VMXNET3_CMD_GET_PERM_MAC_HI,
+ VMXNET3_CMD_GET_DID_LO,
+ VMXNET3_CMD_GET_DID_HI,
+ VMXNET3_CMD_GET_DEV_EXTRA_INFO,
+ VMXNET3_CMD_GET_CONF_INTR,
+ VMXNET3_CMD_GET_ADAPTIVE_RING_INFO,
+ VMXNET3_CMD_GET_TXDATA_DESC_SIZE,
+ VMXNET3_CMD_RESERVED5,
+ VMXNET3_CMD_RESERVED6,
+ VMXNET3_CMD_RESERVED7,
+ VMXNET3_CMD_RESERVED8,
+ VMXNET3_CMD_GET_MAX_QUEUES_CONF,
It is hard to find what is really done above. If you wnat to fix an
alignment, please, do it in a separate prepatch without any real
changes.
} Vmxnet3_Cmd;
/* Adaptive Ring Info Flags */
@@ -571,6 +575,24 @@ enum vmxnet3_intr_type {
/* addition 1 for events */
#define VMXNET3_MAX_INTRS 25
+/* Version 6 and later will use below macros */
+#define VMXNET3_EXT_MAX_TX_QUEUES 32
+#define VMXNET3_EXT_MAX_RX_QUEUES 32
+
+/* Version-dependent MAX RX/TX queues macro */
+#define MAX_RX_QUEUES \
+ (VMXNET3_VERSION_GE_6(hw) ? \
I think it is beter to pass 'hw' argument explicintly.
Otherwise it looks inconsistent and confusing.
+ VMXNET3_EXT_MAX_RX_QUEUES : \
+ VMXNET3_MAX_RX_QUEUES)
+#define MAX_TX_QUEUES \
+ (VMXNET3_VERSION_GE_6(hw) ? \
same here
+ VMXNET3_EXT_MAX_TX_QUEUES : \
+ VMXNET3_MAX_TX_QUEUES)
+
[snip]