There are some devices supporting 400G speed, and it is well standardized in IEEE.
Signed-off-by: Thomas Monjalon <tho...@monjalon.net> --- app/test-pmd/cmdline.c | 2 ++ app/test-pmd/config.c | 2 ++ app/test-pmd/parameters.c | 3 +++ app/test/test_ethdev_link.c | 3 ++- drivers/net/virtio/virtio_ethdev.c | 2 ++ lib/ethdev/rte_ethdev.c | 6 ++++++ lib/ethdev/rte_ethdev.h | 2 ++ 7 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index bb7ff2b449..e312aa93d6 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1352,6 +1352,8 @@ parse_and_check_speed_duplex(char *speedstr, char *duplexstr, uint32_t *speed) *speed = RTE_ETH_LINK_SPEED_100G; } else if (!strcmp(speedstr, "200000")) { *speed = RTE_ETH_LINK_SPEED_200G; + } else if (!strcmp(speedstr, "400000")) { + *speed = RTE_ETH_LINK_SPEED_400G; } else if (!strcmp(speedstr, "auto")) { *speed = RTE_ETH_LINK_SPEED_AUTONEG; } else { diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 41484c3dde..8f162645ec 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -612,6 +612,8 @@ device_infos_display_speeds(uint32_t speed_capa) printf(" 100 Gbps "); if (speed_capa & RTE_ETH_LINK_SPEED_200G) printf(" 200 Gbps "); + if (speed_capa & RTE_ETH_LINK_SPEED_400G) + printf(" 400 Gbps "); } void diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index e734ad9a02..3b37809baf 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -568,6 +568,9 @@ parse_link_speed(int n) case 200000: speed |= RTE_ETH_LINK_SPEED_200G; break; + case 400000: + speed |= RTE_ETH_LINK_SPEED_400G; + break; case 100: case 10: default: diff --git a/app/test/test_ethdev_link.c b/app/test/test_ethdev_link.c index 6248aea49a..ab52385a12 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_200G; + link_status.link_speed = RTE_ETH_SPEED_NUM_400G; 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); @@ -130,6 +130,7 @@ test_link_speed_all_values(void) { "56 Gbps", RTE_ETH_SPEED_NUM_56G }, { "100 Gbps", RTE_ETH_SPEED_NUM_100G }, { "200 Gbps", RTE_ETH_SPEED_NUM_200G }, + { "400 Gbps", RTE_ETH_SPEED_NUM_400G }, { "Unknown", RTE_ETH_SPEED_NUM_UNKNOWN }, { "Invalid", 50505 } }; diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 0103d95920..dc6856d749 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -2046,6 +2046,8 @@ virtio_dev_speed_capa_get(uint32_t speed) return RTE_ETH_LINK_SPEED_100G; case RTE_ETH_SPEED_NUM_200G: return RTE_ETH_LINK_SPEED_200G; + case RTE_ETH_SPEED_NUM_400G: + return RTE_ETH_LINK_SPEED_400G; default: return 0; } diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c index 055c46082b..27c0ecbf7d 100644 --- a/lib/ethdev/rte_ethdev.c +++ b/lib/ethdev/rte_ethdev.c @@ -978,6 +978,9 @@ rte_eth_speed_bitflag(uint32_t speed, int duplex) case RTE_ETH_SPEED_NUM_200G: ret = RTE_ETH_LINK_SPEED_200G; break; + case RTE_ETH_SPEED_NUM_400G: + ret = RTE_ETH_LINK_SPEED_400G; + break; default: ret = 0; } @@ -2882,6 +2885,9 @@ rte_eth_link_speed_to_str(uint32_t link_speed) case RTE_ETH_SPEED_NUM_200G: ret = "200 Gbps"; break; + case RTE_ETH_SPEED_NUM_400G: + ret = "400 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 c129ca1eaf..89b25c9a0f 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -304,6 +304,7 @@ struct rte_eth_stats { #define RTE_ETH_LINK_SPEED_56G RTE_BIT32(13) /**< 56 Gbps */ #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 */ /**@}*/ /**@{@name Link speed @@ -323,6 +324,7 @@ struct rte_eth_stats { #define RTE_ETH_SPEED_NUM_56G 56000 /**< 56 Gbps */ #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_UNKNOWN UINT32_MAX /**< Unknown */ /**@}*/ -- 2.39.1