* [PATCH 1/1] ethdev: add link speed 800G
@ 2025-08-12 14:42 Thomas Monjalon
2025-08-12 15:34 ` Stephen Hemminger
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Thomas Monjalon @ 2025-08-12 14:42 UTC (permalink / raw)
To: dev; +Cc: Aman Singh, Andrew Rybchenko, Maxime Coquelin, Chenbo Xia
There are some devices supporting 800G speed,
and it is well standardized in IEEE.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
app/test-pmd/cmdline.c | 21 ++++++++++++++-------
app/test-pmd/config.c | 2 ++
app/test-pmd/parameters.c | 3 +++
app/test/test_ethdev_link.c | 3 ++-
doc/guides/rel_notes/release_25_11.rst | 5 +++++
doc/guides/testpmd_app_ug/run_app.rst | 1 +
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 +-
drivers/net/virtio/virtio_ethdev.c | 2 ++
lib/ethdev/rte_ethdev.c | 6 ++++++
lib/ethdev/rte_ethdev.h | 2 ++
10 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 801dee4456..3731fba370 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -710,7 +710,8 @@ 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|2500|5000|10000|25000|40000|50000|100000|200000|400000|auto)"
+ " speed (10|100|1000|2500|5000|10000|25000|40000|50000|"
+ "100000|200000|400000|800000|auto)"
" duplex (half|full|auto)\n"
" Set speed and duplex for all ports or port_id\n\n"
@@ -1430,6 +1431,8 @@ parse_and_check_speed_duplex(char *speedstr, char *duplexstr, uint32_t *speed)
*speed = RTE_ETH_LINK_SPEED_200G;
} else if (!strcmp(speedstr, "400000")) {
*speed = RTE_ETH_LINK_SPEED_400G;
+ } else if (!strcmp(speedstr, "800000")) {
+ *speed = RTE_ETH_LINK_SPEED_800G;
} else if (!strcmp(speedstr, "auto")) {
*speed = RTE_ETH_LINK_SPEED_AUTONEG;
} else {
@@ -1480,7 +1483,8 @@ static cmdline_parse_token_string_t cmd_config_speed_all_item1 =
TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item1, "speed");
static cmdline_parse_token_string_t cmd_config_speed_all_value1 =
TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, value1,
- "10#100#1000#2500#5000#10000#25000#40000#50000#100000#200000#400000#auto");
+ "10#100#1000#2500#5000#10000#25000#40000#50000#"
+ "100000#200000#400000#800000#auto");
static cmdline_parse_token_string_t cmd_config_speed_all_item2 =
TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item2, "duplex");
static cmdline_parse_token_string_t cmd_config_speed_all_value2 =
@@ -1491,8 +1495,9 @@ static 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|2500|5000|10000|25000|40000|50000|100000|200000|400000|auto duplex "
- "half|full|auto",
+ "10|100|1000|2500|5000|10000|25000|40000|50000|"
+ "100000|200000|400000|800000|auto "
+ "duplex half|full|auto",
.tokens = {
(void *)&cmd_config_speed_all_port,
(void *)&cmd_config_speed_all_keyword,
@@ -1555,7 +1560,8 @@ static cmdline_parse_token_string_t cmd_config_speed_specific_item1 =
"speed");
static cmdline_parse_token_string_t cmd_config_speed_specific_value1 =
TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, value1,
- "10#100#1000#2500#5000#10000#25000#40000#50000#100000#200000#400000#auto");
+ "10#100#1000#2500#5000#10000#25000#40000#50000#"
+ "100000#200000#400000#800000#auto");
static cmdline_parse_token_string_t cmd_config_speed_specific_item2 =
TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, item2,
"duplex");
@@ -1567,8 +1573,9 @@ static 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|2500|5000|10000|25000|40000|50000|100000|200000|400000|auto duplex "
- "half|full|auto",
+ "10|100|1000|2500|5000|10000|25000|40000|50000|"
+ "100000|200000|400000|800000|auto "
+ "duplex half|full|auto",
.tokens = {
(void *)&cmd_config_speed_specific_port,
(void *)&cmd_config_speed_specific_keyword,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 08048da6f8..85f148a174 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -634,6 +634,8 @@ device_infos_display_speeds(uint32_t speed_capa)
printf(" 200 Gbps ");
if (speed_capa & RTE_ETH_LINK_SPEED_400G)
printf(" 400 Gbps ");
+ if (speed_capa & RTE_ETH_LINK_SPEED_800G)
+ printf(" 800 Gbps ");
}
void
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 80c6ecae54..f7601df0bf 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -924,6 +924,9 @@ parse_link_speed(int n)
case 400000:
speed |= RTE_ETH_LINK_SPEED_400G;
break;
+ case 800000:
+ speed |= RTE_ETH_LINK_SPEED_800G;
+ break;
case 100:
case 10:
default:
diff --git a/app/test/test_ethdev_link.c b/app/test/test_ethdev_link.c
index f063a5fe26..47c526eb0c 100644
--- a/app/test/test_ethdev_link.c
+++ b/app/test/test_ethdev_link.c
@@ -54,7 +54,7 @@ test_link_status_up_default(void)
"string with HDX");
/* test max str len */
- link_status.link_speed = RTE_ETH_SPEED_NUM_400G;
+ link_status.link_speed = RTE_ETH_SPEED_NUM_800G;
link_status.link_duplex = RTE_ETH_LINK_HALF_DUPLEX;
link_status.link_autoneg = RTE_ETH_LINK_AUTONEG;
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
@@ -131,6 +131,7 @@ test_link_speed_all_values(void)
{ "100 Gbps", RTE_ETH_SPEED_NUM_100G },
{ "200 Gbps", RTE_ETH_SPEED_NUM_200G },
{ "400 Gbps", RTE_ETH_SPEED_NUM_400G },
+ { "800 Gbps", RTE_ETH_SPEED_NUM_800G },
{ "Unknown", RTE_ETH_SPEED_NUM_UNKNOWN },
{ "Invalid", 50505 }
};
diff --git a/doc/guides/rel_notes/release_25_11.rst b/doc/guides/rel_notes/release_25_11.rst
index e81ba33907..122029b3c8 100644
--- a/doc/guides/rel_notes/release_25_11.rst
+++ b/doc/guides/rel_notes/release_25_11.rst
@@ -55,6 +55,11 @@ New Features
Also, make sure to start the actual text at the margin.
=======================================================
+* **Added speed 800G.**
+
+ Added Ethernet link speed for 800 Gb/s as it is well standardized in IEEE,
+ and some devices already support this speed.
+
* **Updated DPAA2 ethernet driver.**
* Enabled software taildrop for ordered queues.
diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst
index 35a0c5528c..171f87e56d 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -409,6 +409,7 @@ The command line options are:
100000 - 100Gbps
200000 - 200Gbps
400000 - 400Gbps
+ 800000 - 800Gbps
...
* ``--disable-link-check``
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 6ad83ae50d..ea0ab9bcab 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -2090,7 +2090,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|2500|5000|10000|25000|40000|50000|100000|200000|400000|auto) \
+ testpmd> port config (port_id|all) speed (10|100|1000|2500|5000|10000|25000|40000|50000|100000|200000|400000|800000|auto) \
duplex (half|full|auto)
port config - queues/descriptors
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 2d2635b669..eebc3ea817 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -2104,6 +2104,8 @@ virtio_dev_speed_capa_get(uint32_t speed)
return RTE_ETH_LINK_SPEED_200G;
case RTE_ETH_SPEED_NUM_400G:
return RTE_ETH_LINK_SPEED_400G;
+ case RTE_ETH_SPEED_NUM_800G:
+ return RTE_ETH_LINK_SPEED_800G;
default:
return 0;
}
diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index 4148c33807..f22139cb38 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -1078,6 +1078,9 @@ rte_eth_speed_bitflag(uint32_t speed, int duplex)
case RTE_ETH_SPEED_NUM_400G:
ret = RTE_ETH_LINK_SPEED_400G;
break;
+ case RTE_ETH_SPEED_NUM_800G:
+ ret = RTE_ETH_LINK_SPEED_800G;
+ break;
default:
ret = 0;
}
@@ -3287,6 +3290,9 @@ rte_eth_link_speed_to_str(uint32_t link_speed)
case RTE_ETH_SPEED_NUM_400G:
ret = "400 Gbps";
break;
+ case RTE_ETH_SPEED_NUM_800G:
+ ret = "800 Gbps";
+ break;
case RTE_ETH_SPEED_NUM_UNKNOWN:
ret = "Unknown";
break;
diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
index 5d7fc5ee9d..d23c143eed 100644
--- a/lib/ethdev/rte_ethdev.h
+++ b/lib/ethdev/rte_ethdev.h
@@ -306,6 +306,7 @@ struct rte_eth_stats {
#define RTE_ETH_LINK_SPEED_100G RTE_BIT32(14) /**< 100 Gbps */
#define RTE_ETH_LINK_SPEED_200G RTE_BIT32(15) /**< 200 Gbps */
#define RTE_ETH_LINK_SPEED_400G RTE_BIT32(16) /**< 400 Gbps */
+#define RTE_ETH_LINK_SPEED_800G RTE_BIT32(17) /**< 800 Gbps */
/**@}*/
/**@{@name Link speed
@@ -326,6 +327,7 @@ struct rte_eth_stats {
#define RTE_ETH_SPEED_NUM_100G 100000 /**< 100 Gbps */
#define RTE_ETH_SPEED_NUM_200G 200000 /**< 200 Gbps */
#define RTE_ETH_SPEED_NUM_400G 400000 /**< 400 Gbps */
+#define RTE_ETH_SPEED_NUM_800G 800000 /**< 800 Gbps */
#define RTE_ETH_SPEED_NUM_UNKNOWN UINT32_MAX /**< Unknown */
/**@}*/
--
2.47.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] ethdev: add link speed 800G
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
@ 2025-08-12 15:34 ` Stephen Hemminger
2025-08-12 18:18 ` Andrew Rybchenko
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Stephen Hemminger @ 2025-08-12 15:34 UTC (permalink / raw)
To: Thomas Monjalon
Cc: dev, Aman Singh, Andrew Rybchenko, Maxime Coquelin, Chenbo Xia
On Tue, 12 Aug 2025 16:42:48 +0200
Thomas Monjalon <thomas@monjalon.net> wrote:
> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
> index 5d7fc5ee9d..d23c143eed 100644
> --- a/lib/ethdev/rte_ethdev.h
> +++ b/lib/ethdev/rte_ethdev.h
> @@ -306,6 +306,7 @@ struct rte_eth_stats {
> #define RTE_ETH_LINK_SPEED_100G RTE_BIT32(14) /**< 100 Gbps */
> #define RTE_ETH_LINK_SPEED_200G RTE_BIT32(15) /**< 200 Gbps */
> #define RTE_ETH_LINK_SPEED_400G RTE_BIT32(16) /**< 400 Gbps */
> +#define RTE_ETH_LINK_SPEED_800G RTE_BIT32(17) /**< 800 Gbps */
Do you want to go further, looking around I see roadmaps for.
1.6Tbs, 3.2 Tbs, 6.4 Tbs (2028) and beyond.
Looks like will run out of bits in 2040...
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] ethdev: add link speed 800G
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
2025-08-12 15:34 ` Stephen Hemminger
@ 2025-08-12 18:18 ` Andrew Rybchenko
2025-08-12 20:07 ` Morten Brørup
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Andrew Rybchenko @ 2025-08-12 18:18 UTC (permalink / raw)
To: Thomas Monjalon, dev; +Cc: Aman Singh, Maxime Coquelin, Chenbo Xia
On 8/12/25 17:42, Thomas Monjalon wrote:
> There are some devices supporting 800G speed,
> and it is well standardized in IEEE.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 1/1] ethdev: add link speed 800G
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
2025-08-12 15:34 ` Stephen Hemminger
2025-08-12 18:18 ` Andrew Rybchenko
@ 2025-08-12 20:07 ` Morten Brørup
2025-08-13 0:26 ` Khadem Ullah
2025-08-13 0:45 ` fengchengwen
4 siblings, 0 replies; 6+ messages in thread
From: Morten Brørup @ 2025-08-12 20:07 UTC (permalink / raw)
To: Thomas Monjalon, dev
Cc: Aman Singh, Andrew Rybchenko, Maxime Coquelin, Chenbo Xia
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Tuesday, 12 August 2025 16.43
>
> There are some devices supporting 800G speed,
> and it is well standardized in IEEE.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
Acked-by: Morten Brørup <mb@smartsharesystems.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] ethdev: add link speed 800G
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
` (2 preceding siblings ...)
2025-08-12 20:07 ` Morten Brørup
@ 2025-08-13 0:26 ` Khadem Ullah
2025-08-13 0:45 ` fengchengwen
4 siblings, 0 replies; 6+ messages in thread
From: Khadem Ullah @ 2025-08-13 0:26 UTC (permalink / raw)
To: Thomas Monjalon
Cc: dev, Aman Singh, Andrew Rybchenko, Maxime Coquelin, Chenbo Xia
[-- Attachment #1: Type: text/plain, Size: 284 bytes --]
Acked-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
On Tue, Aug 12, 2025, 19:43 Thomas Monjalon <thomas@monjalon.net> wrote:
> There are some devices supporting 800G speed,
> and it is well standardized in IEEE.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
>
[-- Attachment #2: Type: text/html, Size: 822 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] ethdev: add link speed 800G
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
` (3 preceding siblings ...)
2025-08-13 0:26 ` Khadem Ullah
@ 2025-08-13 0:45 ` fengchengwen
4 siblings, 0 replies; 6+ messages in thread
From: fengchengwen @ 2025-08-13 0:45 UTC (permalink / raw)
To: Thomas Monjalon, dev
Cc: Aman Singh, Andrew Rybchenko, Maxime Coquelin, Chenbo Xia
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
On 8/12/2025 10:42 PM, Thomas Monjalon wrote:
> There are some devices supporting 800G speed,
> and it is well standardized in IEEE.
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-08-13 0:45 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-08-12 14:42 [PATCH 1/1] ethdev: add link speed 800G Thomas Monjalon
2025-08-12 15:34 ` Stephen Hemminger
2025-08-12 18:18 ` Andrew Rybchenko
2025-08-12 20:07 ` Morten Brørup
2025-08-13 0:26 ` Khadem Ullah
2025-08-13 0:45 ` fengchengwen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).