[v3] net/mlx5: add 200G link speed

Message ID 1588766823-5198-1-git-send-email-asafp@mellanox.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [v3] net/mlx5: add 200G link speed |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/travis-robot warning Travis build: failed
ci/Intel-compilation fail Compilation issues

Commit Message

Asaf Penso May 6, 2020, 12:07 p.m. UTC
  There is no way to report back a link speed of 200Gbps.

Adding 200G link speed.

Signed-off-by: Asaf Penso <asafp@mellanox.com>
---
 app/test-pmd/cmdline.c                      | 12 +++++++-----
 doc/guides/rel_notes/release_20_05.rst      |  2 ++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  2 +-
 drivers/net/mlx5/mlx5_ethdev.c              | 22 +++++++++++++++++++++-
 lib/librte_ethdev/rte_ethdev.c              |  2 ++
 lib/librte_ethdev/rte_ethdev.h              |  2 ++
 6 files changed, 35 insertions(+), 7 deletions(-)
  

Comments

Slava Ovsiienko May 6, 2020, 1:43 p.m. UTC | #1
> -----Original Message-----
> From: Asaf Penso <asafp@mellanox.com>
> Sent: Wednesday, May 6, 2020 15:07
> To: Thomas Monjalon <thomas@monjalon.net>; ferruh.yigit@intel.com;
> arybchenko@solarflare.com; Slava Ovsiienko <viacheslavo@mellanox.com>;
> Matan Azrad <matan@mellanox.com>
> Cc: dev@dpdk.org
> Subject: [PATCH v3] net/mlx5: add 200G link speed
> 
> There is no way to report back a link speed of 200Gbps.
> 
> Adding 200G link speed.
> 
> Signed-off-by: Asaf Penso <asafp@mellanox.com>
For the mlx5-related part:
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

> ---
>  app/test-pmd/cmdline.c                      | 12 +++++++-----
>  doc/guides/rel_notes/release_20_05.rst      |  2 ++
>  doc/guides/testpmd_app_ug/testpmd_funcs.rst |  2 +-
>  drivers/net/mlx5/mlx5_ethdev.c              | 22 +++++++++++++++++++++-
>  lib/librte_ethdev/rte_ethdev.c              |  2 ++
>  lib/librte_ethdev/rte_ethdev.h              |  2 ++
>  6 files changed, 35 insertions(+), 7 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 1375f22..e6c6b68 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -769,7 +769,7 @@ static void cmd_help_long_parsed(void
> *parsed_result,
>  			"    Detach physical or virtual dev by port_id\n\n"
> 
>  			"port config (port_id|all)"
> -			" speed
> (10|100|1000|10000|25000|40000|50000|100000|auto)"
> +			" speed
> (10|100|1000|10000|25000|40000|50000|100000|200000|auto)"
>  			" duplex (half|full|auto)\n"
>  			"    Set speed and duplex for all ports or port_id\n\n"
> 
> @@ -1619,6 +1619,8 @@ parse_and_check_speed_duplex(char *speedstr,
> char *duplexstr, uint32_t *speed)
>  			*speed = ETH_LINK_SPEED_50G;
>  		} else if (!strcmp(speedstr, "100000")) {
>  			*speed = ETH_LINK_SPEED_100G;
> +		} else if (!strcmp(speedstr, "200000")) {
> +			*speed = ETH_LINK_SPEED_200G;
>  		} else if (!strcmp(speedstr, "auto")) {
>  			*speed = ETH_LINK_SPEED_AUTONEG;
>  		} else {
> @@ -1666,7 +1668,7 @@ cmdline_parse_token_string_t
> cmd_config_speed_all_item1 =
>  	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item1,
> "speed");  cmdline_parse_token_string_t cmd_config_speed_all_value1 =
>  	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, value1,
> -
> 	"10#100#1000#10000#25000#40000#50000#100000#auto");
> +
> 	"10#100#1000#10000#25000#40000#50000#100000#200000#auto")
> ;
>  cmdline_parse_token_string_t cmd_config_speed_all_item2 =
>  	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item2,
> "duplex");  cmdline_parse_token_string_t cmd_config_speed_all_value2 =
> @@ -1677,7 +1679,7 @@ cmdline_parse_inst_t cmd_config_speed_all = {
>  	.f = cmd_config_speed_all_parsed,
>  	.data = NULL,
>  	.help_str = "port config all speed "
> -		"10|100|1000|10000|25000|40000|50000|100000|auto
> duplex "
> +
> 	"10|100|1000|10000|25000|40000|50000|100000|200000|auto
> duplex "
>  							"half|full|auto",
>  	.tokens = {
>  		(void *)&cmd_config_speed_all_port,
> @@ -1741,7 +1743,7 @@ cmdline_parse_token_string_t
> cmd_config_speed_specific_item1 =
>  								"speed");
>  cmdline_parse_token_string_t cmd_config_speed_specific_value1 =
>  	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific,
> value1,
> -
> 	"10#100#1000#10000#25000#40000#50000#100000#auto");
> +
> 	"10#100#1000#10000#25000#40000#50000#100000#200000#auto")
> ;
>  cmdline_parse_token_string_t cmd_config_speed_specific_item2 =
>  	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific,
> item2,
>  								"duplex");
> @@ -1753,7 +1755,7 @@ cmdline_parse_inst_t cmd_config_speed_specific
> = {
>  	.f = cmd_config_speed_specific_parsed,
>  	.data = NULL,
>  	.help_str = "port config <port_id> speed "
> -		"10|100|1000|10000|25000|40000|50000|100000|auto
> duplex "
> +
> 	"10|100|1000|10000|25000|40000|50000|100000|200000|auto
> duplex "
>  							"half|full|auto",
>  	.tokens = {
>  		(void *)&cmd_config_speed_specific_port,
> diff --git a/doc/guides/rel_notes/release_20_05.rst
> b/doc/guides/rel_notes/release_20_05.rst
> index 777d36e..eb8a623 100644
> --- a/doc/guides/rel_notes/release_20_05.rst
> +++ b/doc/guides/rel_notes/release_20_05.rst
> @@ -66,6 +66,8 @@ New Features
>    Added tracepoints in ``EAL``, ``ethdev``, ``cryptodev``, ``eventdev`` and
>    ``mempool`` libraries for important functions.
> 
> +* **ethdev: Added a new value to link speed for 200Gbps **
> +
>  * **Added new API for rte_ring.**
> 
>    * New synchronization modes for rte_ring.
> diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> index a360ecc..a1cbb2e 100644
> --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> @@ -2153,7 +2153,7 @@ port config - speed
> 
>  Set the speed and duplex mode for all ports or a specific port::
> 
> -   testpmd> port config (port_id|all) speed
> (10|100|1000|10000|25000|40000|50000|100000|auto) \
> +   testpmd> port config (port_id|all) speed
> + (10|100|1000|10000|25000|40000|50000|100000|200000|auto) \
>              duplex (half|full|auto)
> 
>  port config - queues/descriptors
> diff --git a/drivers/net/mlx5/mlx5_ethdev.c
> b/drivers/net/mlx5/mlx5_ethdev.c index d7d3bc7..47f11b9 100644
> --- a/drivers/net/mlx5/mlx5_ethdev.c
> +++ b/drivers/net/mlx5/mlx5_ethdev.c
> @@ -86,6 +86,7 @@ struct ethtool_link_settings {
>  	uint32_t link_mode_masks[];
>  };
> 
> +/* The kernel values can be found in /include/uapi/linux/ethtool.h */
>  #define ETHTOOL_GLINKSETTINGS 0x0000004c  #define
> ETHTOOL_LINK_MODE_1000baseT_Full_BIT 5  #define
> ETHTOOL_LINK_MODE_Autoneg_BIT 6 @@ -119,6 +120,13 @@ struct
> ethtool_link_settings {  #define
> ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT 38  #define
> ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT 39  #endif
> +#ifndef HAVE_ETHTOOL_LINK_MODE_200G
> +#define ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT 62 #define
> +ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT 63 #define
> +ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT 0 /* 64 - 64 */
> +#define ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT 1 /* 65 - 64 */
> +#define ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT 2 /* 66 - 64 */
> #endif
> 
>  /**
>   * Get master interface name from private structure.
> @@ -537,7 +545,8 @@ mlx5_set_default_params(struct rte_eth_dev *dev,
> struct rte_eth_dev_info *info)
>  	info->default_txportconf.ring_size = 256;
>  	info->default_rxportconf.burst_size = MLX5_RX_DEFAULT_BURST;
>  	info->default_txportconf.burst_size = MLX5_TX_DEFAULT_BURST;
> -	if (priv->link_speed_capa & ETH_LINK_SPEED_100G) {
> +	if ((priv->link_speed_capa & ETH_LINK_SPEED_200G) |
> +		(priv->link_speed_capa & ETH_LINK_SPEED_100G)) {
>  		info->default_rxportconf.nb_queues = 16;
>  		info->default_txportconf.nb_queues = 16;
>  		if (dev->data->nb_rx_queues > 2 ||
> @@ -1028,6 +1037,17 @@ mlx5_link_update_unlocked_gs(struct
> rte_eth_dev *dev,
> 
> MLX5_BITSHIFT(ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT) |
> 
> MLX5_BITSHIFT(ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT)))
>  		priv->link_speed_capa |= ETH_LINK_SPEED_100G;
> +	if (sc &
> (MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT) |
> +
> MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT)))
> +		priv->link_speed_capa |= ETH_LINK_SPEED_200G;
> +
> +	sc = ecmd->link_mode_masks[2] |
> +		((uint64_t)ecmd->link_mode_masks[3] << 32);
> +	if (sc &
> (MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT) |
> +		  MLX5_BITSHIFT(
> +
> 	ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT) |
> +
> MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT)))
> +		priv->link_speed_capa |= ETH_LINK_SPEED_200G;
>  	dev_link.link_duplex = ((ecmd->duplex == DUPLEX_HALF) ?
>  				ETH_LINK_HALF_DUPLEX :
> ETH_LINK_FULL_DUPLEX);
>  	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds & diff --
> git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index
> 72aed59..a64df8f 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -1099,6 +1099,8 @@ rte_eth_speed_bitflag(uint32_t speed, int duplex)
>  		return ETH_LINK_SPEED_56G;
>  	case ETH_SPEED_NUM_100G:
>  		return ETH_LINK_SPEED_100G;
> +	case ETH_SPEED_NUM_200G:
> +		return ETH_LINK_SPEED_200G;
>  	default:
>  		return 0;
>  	}
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 0f6d053..a49242b 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -284,6 +284,7 @@ struct rte_eth_stats {
>  #define ETH_LINK_SPEED_50G      (1 << 12)  /**<  50 Gbps */
>  #define ETH_LINK_SPEED_56G      (1 << 13)  /**<  56 Gbps */
>  #define ETH_LINK_SPEED_100G     (1 << 14)  /**< 100 Gbps */
> +#define ETH_LINK_SPEED_200G     (1 << 15)  /**< 200 Gbps */
> 
>  /**
>   * Ethernet numeric link speeds in Mbps @@ -301,6 +302,7 @@ struct
> rte_eth_stats {
>  #define ETH_SPEED_NUM_50G      50000 /**<  50 Gbps */
>  #define ETH_SPEED_NUM_56G      56000 /**<  56 Gbps */
>  #define ETH_SPEED_NUM_100G    100000 /**< 100 Gbps */
> +#define ETH_SPEED_NUM_200G    200000 /**< 200 Gbps */
> 
>  /**
>   * A structure used to retrieve link-level information of an Ethernet port.
> --
> 2.7.4
  

Patch

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 1375f22..e6c6b68 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -769,7 +769,7 @@  static void cmd_help_long_parsed(void *parsed_result,
 			"    Detach physical or virtual dev by port_id\n\n"
 
 			"port config (port_id|all)"
-			" speed (10|100|1000|10000|25000|40000|50000|100000|auto)"
+			" speed (10|100|1000|10000|25000|40000|50000|100000|200000|auto)"
 			" duplex (half|full|auto)\n"
 			"    Set speed and duplex for all ports or port_id\n\n"
 
@@ -1619,6 +1619,8 @@  parse_and_check_speed_duplex(char *speedstr, char *duplexstr, uint32_t *speed)
 			*speed = ETH_LINK_SPEED_50G;
 		} else if (!strcmp(speedstr, "100000")) {
 			*speed = ETH_LINK_SPEED_100G;
+		} else if (!strcmp(speedstr, "200000")) {
+			*speed = ETH_LINK_SPEED_200G;
 		} else if (!strcmp(speedstr, "auto")) {
 			*speed = ETH_LINK_SPEED_AUTONEG;
 		} else {
@@ -1666,7 +1668,7 @@  cmdline_parse_token_string_t cmd_config_speed_all_item1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item1, "speed");
 cmdline_parse_token_string_t cmd_config_speed_all_value1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, value1,
-				"10#100#1000#10000#25000#40000#50000#100000#auto");
+				"10#100#1000#10000#25000#40000#50000#100000#200000#auto");
 cmdline_parse_token_string_t cmd_config_speed_all_item2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item2, "duplex");
 cmdline_parse_token_string_t cmd_config_speed_all_value2 =
@@ -1677,7 +1679,7 @@  cmdline_parse_inst_t cmd_config_speed_all = {
 	.f = cmd_config_speed_all_parsed,
 	.data = NULL,
 	.help_str = "port config all speed "
-		"10|100|1000|10000|25000|40000|50000|100000|auto duplex "
+		"10|100|1000|10000|25000|40000|50000|100000|200000|auto duplex "
 							"half|full|auto",
 	.tokens = {
 		(void *)&cmd_config_speed_all_port,
@@ -1741,7 +1743,7 @@  cmdline_parse_token_string_t cmd_config_speed_specific_item1 =
 								"speed");
 cmdline_parse_token_string_t cmd_config_speed_specific_value1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, value1,
-				"10#100#1000#10000#25000#40000#50000#100000#auto");
+				"10#100#1000#10000#25000#40000#50000#100000#200000#auto");
 cmdline_parse_token_string_t cmd_config_speed_specific_item2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, item2,
 								"duplex");
@@ -1753,7 +1755,7 @@  cmdline_parse_inst_t cmd_config_speed_specific = {
 	.f = cmd_config_speed_specific_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> speed "
-		"10|100|1000|10000|25000|40000|50000|100000|auto duplex "
+		"10|100|1000|10000|25000|40000|50000|100000|200000|auto duplex "
 							"half|full|auto",
 	.tokens = {
 		(void *)&cmd_config_speed_specific_port,
diff --git a/doc/guides/rel_notes/release_20_05.rst b/doc/guides/rel_notes/release_20_05.rst
index 777d36e..eb8a623 100644
--- a/doc/guides/rel_notes/release_20_05.rst
+++ b/doc/guides/rel_notes/release_20_05.rst
@@ -66,6 +66,8 @@  New Features
   Added tracepoints in ``EAL``, ``ethdev``, ``cryptodev``, ``eventdev`` and
   ``mempool`` libraries for important functions.
 
+* **ethdev: Added a new value to link speed for 200Gbps **
+
 * **Added new API for rte_ring.**
 
   * New synchronization modes for rte_ring.
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index a360ecc..a1cbb2e 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -2153,7 +2153,7 @@  port config - speed
 
 Set the speed and duplex mode for all ports or a specific port::
 
-   testpmd> port config (port_id|all) speed (10|100|1000|10000|25000|40000|50000|100000|auto) \
+   testpmd> port config (port_id|all) speed (10|100|1000|10000|25000|40000|50000|100000|200000|auto) \
             duplex (half|full|auto)
 
 port config - queues/descriptors
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index d7d3bc7..47f11b9 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -86,6 +86,7 @@  struct ethtool_link_settings {
 	uint32_t link_mode_masks[];
 };
 
+/* The kernel values can be found in /include/uapi/linux/ethtool.h */
 #define ETHTOOL_GLINKSETTINGS 0x0000004c
 #define ETHTOOL_LINK_MODE_1000baseT_Full_BIT 5
 #define ETHTOOL_LINK_MODE_Autoneg_BIT 6
@@ -119,6 +120,13 @@  struct ethtool_link_settings {
 #define ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT 38
 #define ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT 39
 #endif
+#ifndef HAVE_ETHTOOL_LINK_MODE_200G
+#define ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT 62
+#define ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT 63
+#define ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT 0 /* 64 - 64 */
+#define ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT 1 /* 65 - 64 */
+#define ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT 2 /* 66 - 64 */
+#endif
 
 /**
  * Get master interface name from private structure.
@@ -537,7 +545,8 @@  mlx5_set_default_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
 	info->default_txportconf.ring_size = 256;
 	info->default_rxportconf.burst_size = MLX5_RX_DEFAULT_BURST;
 	info->default_txportconf.burst_size = MLX5_TX_DEFAULT_BURST;
-	if (priv->link_speed_capa & ETH_LINK_SPEED_100G) {
+	if ((priv->link_speed_capa & ETH_LINK_SPEED_200G) |
+		(priv->link_speed_capa & ETH_LINK_SPEED_100G)) {
 		info->default_rxportconf.nb_queues = 16;
 		info->default_txportconf.nb_queues = 16;
 		if (dev->data->nb_rx_queues > 2 ||
@@ -1028,6 +1037,17 @@  mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 		  MLX5_BITSHIFT(ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT) |
 		  MLX5_BITSHIFT(ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT)))
 		priv->link_speed_capa |= ETH_LINK_SPEED_100G;
+	if (sc & (MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT) |
+		  MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT)))
+		priv->link_speed_capa |= ETH_LINK_SPEED_200G;
+
+	sc = ecmd->link_mode_masks[2] |
+		((uint64_t)ecmd->link_mode_masks[3] << 32);
+	if (sc & (MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT) |
+		  MLX5_BITSHIFT(
+			ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT) |
+		  MLX5_BITSHIFT(ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT)))
+		priv->link_speed_capa |= ETH_LINK_SPEED_200G;
 	dev_link.link_duplex = ((ecmd->duplex == DUPLEX_HALF) ?
 				ETH_LINK_HALF_DUPLEX : ETH_LINK_FULL_DUPLEX);
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index 72aed59..a64df8f 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -1099,6 +1099,8 @@  rte_eth_speed_bitflag(uint32_t speed, int duplex)
 		return ETH_LINK_SPEED_56G;
 	case ETH_SPEED_NUM_100G:
 		return ETH_LINK_SPEED_100G;
+	case ETH_SPEED_NUM_200G:
+		return ETH_LINK_SPEED_200G;
 	default:
 		return 0;
 	}
diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index 0f6d053..a49242b 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -284,6 +284,7 @@  struct rte_eth_stats {
 #define ETH_LINK_SPEED_50G      (1 << 12)  /**<  50 Gbps */
 #define ETH_LINK_SPEED_56G      (1 << 13)  /**<  56 Gbps */
 #define ETH_LINK_SPEED_100G     (1 << 14)  /**< 100 Gbps */
+#define ETH_LINK_SPEED_200G     (1 << 15)  /**< 200 Gbps */
 
 /**
  * Ethernet numeric link speeds in Mbps
@@ -301,6 +302,7 @@  struct rte_eth_stats {
 #define ETH_SPEED_NUM_50G      50000 /**<  50 Gbps */
 #define ETH_SPEED_NUM_56G      56000 /**<  56 Gbps */
 #define ETH_SPEED_NUM_100G    100000 /**< 100 Gbps */
+#define ETH_SPEED_NUM_200G    200000 /**< 200 Gbps */
 
 /**
  * A structure used to retrieve link-level information of an Ethernet port.