[PATCH 5/8] vmxnet3, version 6

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Wed May 4 16:46:50 CEST 2022


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 <pagupta at 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]



More information about the dev mailing list