public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] net: Add 1600Gbps (1.6T) link mode support
@ 2025-11-17 21:18 Tariq Toukan
  2025-11-17 21:18 ` [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed Tariq Toukan
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Tariq Toukan @ 2025-11-17 21:18 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Jay Vosburgh, Saeed Mahameed, Tariq Toukan, Mark Bloch,
	Leon Romanovsky, Heiner Kallweit, netdev, linux-kernel,
	linux-rdma, Gal Pressman, Moshe Shemesh, Shahar Shitrit,
	Yael Chemla, Dragos Tatulea

This series by Yael adds 1600Gbps (1.6T) link mode support.
See detailed description by Yael below.

Regards,
Tariq


This series adds 1600Gbps (1.6T) link mode support end-to-end.
- Introduces 1600Gbps ethtool link modes based on 200Gbps-per-lane
  signaling from IEEE 802.3dj, including KR8/CR8/DR8/DR8-2 PMDs.
- Wires up mlx5e to advertise and handle the new modes (8 lanes x
  200Gbps).
- Extends bonding 802.3ad to accept and operate with 1600Gbps links.

User-visible effects:
- ethtool will report and advertise 1600Gbps modes and PMDs where
  supported.
- mlx5 devices capable of 8x200Gbps lanes will expose 1600Gbps.
- LACP (bonding 3ad) will accept and utilize 1600Gbps partner links.

Compatibility:
- UAPI additions only; existing users are unaffected.
- The new link modes/PMDs are additive and aligned with IEEE 802.3dj
  200G/lane definitions.

Testing:
- Verified ethtool reporting/advertisement and 1600Gbps link bring-up
  using simulated mlx5 hardware.
- No regressions observed at lower speeds.

References:
[1] https://www.ieee802.org/3/dj/public/23_03/opsasnick_3dj_01a_2303.pdf
[2] https://www.ieee802.org/3/dj/projdoc/objectives_P802d3dj_240314.pdf


Yael Chemla (3):
  net: ethtool: Add support for 1600Gbps speed
  net/mlx5e: Add 1600Gbps link modes
  bonding: 3ad: Add support for 1600G speed

 drivers/net/bonding/bond_3ad.c                       | 9 +++++++++
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 5 +++++
 drivers/net/ethernet/mellanox/mlx5/core/port.c       | 1 +
 drivers/net/phy/phy-core.c                           | 4 +++-
 include/uapi/linux/ethtool.h                         | 5 +++++
 net/ethtool/common.c                                 | 8 ++++++++
 6 files changed, 31 insertions(+), 1 deletion(-)


base-commit: c9dfb92de0738eb7fe6a591ad1642333793e8b6e
-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed
  2025-11-17 21:18 [PATCH net-next 0/3] net: Add 1600Gbps (1.6T) link mode support Tariq Toukan
@ 2025-11-17 21:18 ` Tariq Toukan
  2025-11-18 14:16   ` Maxime Chevallier
  2025-11-17 21:18 ` [PATCH net-next 2/3] net/mlx5e: Add 1600Gbps link modes Tariq Toukan
  2025-11-17 21:19 ` [PATCH net-next 3/3] bonding: 3ad: Add support for 1600G speed Tariq Toukan
  2 siblings, 1 reply; 5+ messages in thread
From: Tariq Toukan @ 2025-11-17 21:18 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Jay Vosburgh, Saeed Mahameed, Tariq Toukan, Mark Bloch,
	Leon Romanovsky, Heiner Kallweit, netdev, linux-kernel,
	linux-rdma, Gal Pressman, Moshe Shemesh, Shahar Shitrit,
	Yael Chemla, Dragos Tatulea

From: Yael Chemla <ychemla@nvidia.com>

Add support for 1600Gbps link modes based on 200Gbps per lane [1].
This includes the adopted IEEE 802.3dj copper and optical PMDs that use
200G/lane signaling [2].

Add the following PMD types:
- KR8 (backplane)
- CR8 (copper cable)
- DR8 (SMF 500m)
- DR8-2 (SMF 2km)

These modes are defined in the 802.3dj specifications.
References:
[1] https://www.ieee802.org/3/dj/public/23_03/opsasnick_3dj_01a_2303.pdf
[2] https://www.ieee802.org/3/dj/projdoc/objectives_P802d3dj_240314.pdf

Signed-off-by: Yael Chemla <ychemla@nvidia.com>
Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 drivers/net/phy/phy-core.c   | 4 +++-
 include/uapi/linux/ethtool.h | 5 +++++
 net/ethtool/common.c         | 8 ++++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c
index 605ca20ae192..f5705c75505d 100644
--- a/drivers/net/phy/phy-core.c
+++ b/drivers/net/phy/phy-core.c
@@ -17,7 +17,7 @@
  */
 const char *phy_speed_to_str(int speed)
 {
-	BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 121,
+	BUILD_BUG_ON_MSG(__ETHTOOL_LINK_MODE_MASK_NBITS != 125,
 		"Enum ethtool_link_mode_bit_indices and phylib are out of sync. "
 		"If a speed or mode has been added please update phy_speed_to_str "
 		"and the PHY settings array.\n");
@@ -55,6 +55,8 @@ const char *phy_speed_to_str(int speed)
 		return "400Gbps";
 	case SPEED_800000:
 		return "800Gbps";
+	case SPEED_1600000:
+		return "1600Gbps";
 	case SPEED_UNKNOWN:
 		return "Unknown";
 	default:
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 8bd5ea5469d9..eb7ff2602fbb 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -2077,6 +2077,10 @@ enum ethtool_link_mode_bit_indices {
 	ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT	 = 118,
 	ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT	 = 119,
 	ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT	 = 120,
+	ETHTOOL_LINK_MODE_1600000baseCR8_Full_BIT	 = 121,
+	ETHTOOL_LINK_MODE_1600000baseKR8_Full_BIT	 = 122,
+	ETHTOOL_LINK_MODE_1600000baseDR8_Full_BIT	 = 123,
+	ETHTOOL_LINK_MODE_1600000baseDR8_2_Full_BIT	 = 124,
 
 	/* must be last entry */
 	__ETHTOOL_LINK_MODE_MASK_NBITS
@@ -2190,6 +2194,7 @@ enum ethtool_link_mode_bit_indices {
 #define SPEED_200000		200000
 #define SPEED_400000		400000
 #define SPEED_800000		800000
+#define SPEED_1600000		1600000
 
 #define SPEED_UNKNOWN		-1
 
diff --git a/net/ethtool/common.c b/net/ethtool/common.c
index 55223ebc2a7e..369c05cf8163 100644
--- a/net/ethtool/common.c
+++ b/net/ethtool/common.c
@@ -233,6 +233,10 @@ const char link_mode_names[][ETH_GSTRING_LEN] = {
 	__DEFINE_LINK_MODE_NAME(800000, DR4_2, Full),
 	__DEFINE_LINK_MODE_NAME(800000, SR4, Full),
 	__DEFINE_LINK_MODE_NAME(800000, VR4, Full),
+	__DEFINE_LINK_MODE_NAME(1600000, CR8, Full),
+	__DEFINE_LINK_MODE_NAME(1600000, KR8, Full),
+	__DEFINE_LINK_MODE_NAME(1600000, DR8, Full),
+	__DEFINE_LINK_MODE_NAME(1600000, DR8_2, Full),
 };
 static_assert(ARRAY_SIZE(link_mode_names) == __ETHTOOL_LINK_MODE_MASK_NBITS);
 
@@ -422,6 +426,10 @@ const struct link_mode_info link_mode_params[] = {
 	__DEFINE_LINK_MODE_PARAMS(800000, DR4_2, Full),
 	__DEFINE_LINK_MODE_PARAMS(800000, SR4, Full),
 	__DEFINE_LINK_MODE_PARAMS(800000, VR4, Full),
+	__DEFINE_LINK_MODE_PARAMS(1600000, CR8, Full),
+	__DEFINE_LINK_MODE_PARAMS(1600000, KR8, Full),
+	__DEFINE_LINK_MODE_PARAMS(1600000, DR8, Full),
+	__DEFINE_LINK_MODE_PARAMS(1600000, DR8_2, Full),
 };
 static_assert(ARRAY_SIZE(link_mode_params) == __ETHTOOL_LINK_MODE_MASK_NBITS);
 EXPORT_SYMBOL_GPL(link_mode_params);
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next 2/3] net/mlx5e: Add 1600Gbps link modes
  2025-11-17 21:18 [PATCH net-next 0/3] net: Add 1600Gbps (1.6T) link mode support Tariq Toukan
  2025-11-17 21:18 ` [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed Tariq Toukan
@ 2025-11-17 21:18 ` Tariq Toukan
  2025-11-17 21:19 ` [PATCH net-next 3/3] bonding: 3ad: Add support for 1600G speed Tariq Toukan
  2 siblings, 0 replies; 5+ messages in thread
From: Tariq Toukan @ 2025-11-17 21:18 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Jay Vosburgh, Saeed Mahameed, Tariq Toukan, Mark Bloch,
	Leon Romanovsky, Heiner Kallweit, netdev, linux-kernel,
	linux-rdma, Gal Pressman, Moshe Shemesh, Shahar Shitrit,
	Yael Chemla, Dragos Tatulea

From: Yael Chemla <ychemla@nvidia.com>

Introduce support for a 1600Gbps link mode, utilizing 8 lanes at 200Gbps
per lane.

Signed-off-by: Yael Chemla <ychemla@nvidia.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 5 +++++
 drivers/net/ethernet/mellanox/mlx5/core/port.c       | 1 +
 2 files changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
index 01b8f05a23db..72eeb9593e75 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -261,6 +261,11 @@ void mlx5e_build_ptys2ethtool_map(void)
 				       ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT,
 				       ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT,
 				       ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT);
+	MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_1600TAUI_8_1600TBASE_CR8_KR8, ext,
+				       ETHTOOL_LINK_MODE_1600000baseCR8_Full_BIT,
+				       ETHTOOL_LINK_MODE_1600000baseKR8_Full_BIT,
+				       ETHTOOL_LINK_MODE_1600000baseDR8_Full_BIT,
+				       ETHTOOL_LINK_MODE_1600000baseDR8_2_Full_BIT);
 }
 
 static void mlx5e_ethtool_get_speed_arr(bool ext,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/port.c b/drivers/net/ethernet/mellanox/mlx5/core/port.c
index aa9f2b0a77d3..1e6654573d81 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/port.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/port.c
@@ -1109,6 +1109,7 @@ mlx5e_ext_link_info[MLX5E_EXT_LINK_MODES_NUMBER] = {
 	[MLX5E_200GAUI_1_200GBASE_CR1_KR1]	= {.speed = 200000, .lanes = 1},
 	[MLX5E_400GAUI_2_400GBASE_CR2_KR2]	= {.speed = 400000, .lanes = 2},
 	[MLX5E_800GAUI_4_800GBASE_CR4_KR4]	= {.speed = 800000, .lanes = 4},
+	[MLX5E_1600TAUI_8_1600TBASE_CR8_KR8]	= {.speed = 1600000, .lanes = 8},
 };
 
 int mlx5_port_query_eth_proto(struct mlx5_core_dev *dev, u8 port, bool ext,
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next 3/3] bonding: 3ad: Add support for 1600G speed
  2025-11-17 21:18 [PATCH net-next 0/3] net: Add 1600Gbps (1.6T) link mode support Tariq Toukan
  2025-11-17 21:18 ` [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed Tariq Toukan
  2025-11-17 21:18 ` [PATCH net-next 2/3] net/mlx5e: Add 1600Gbps link modes Tariq Toukan
@ 2025-11-17 21:19 ` Tariq Toukan
  2 siblings, 0 replies; 5+ messages in thread
From: Tariq Toukan @ 2025-11-17 21:19 UTC (permalink / raw)
  To: Eric Dumazet, Jakub Kicinski, Paolo Abeni, Andrew Lunn,
	David S. Miller
  Cc: Jay Vosburgh, Saeed Mahameed, Tariq Toukan, Mark Bloch,
	Leon Romanovsky, Heiner Kallweit, netdev, linux-kernel,
	linux-rdma, Gal Pressman, Moshe Shemesh, Shahar Shitrit,
	Yael Chemla, Dragos Tatulea

From: Yael Chemla <ychemla@nvidia.com>

Add support for 1600Gbps speed to allow using 3ad mode with 1600G
devices.

Signed-off-by: Yael Chemla <ychemla@nvidia.com>
Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 drivers/net/bonding/bond_3ad.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 49717b7b82a2..1a8de2bf8655 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -76,6 +76,7 @@ enum ad_link_speed_type {
 	AD_LINK_SPEED_200000MBPS,
 	AD_LINK_SPEED_400000MBPS,
 	AD_LINK_SPEED_800000MBPS,
+	AD_LINK_SPEED_1600000MBPS,
 };
 
 /* compare MAC addresses */
@@ -300,6 +301,7 @@ static inline int __check_agg_selection_timer(struct port *port)
  *     %AD_LINK_SPEED_200000MBPS
  *     %AD_LINK_SPEED_400000MBPS
  *     %AD_LINK_SPEED_800000MBPS
+ *     %AD_LINK_SPEED_1600000MBPS
  */
 static u16 __get_link_speed(struct port *port)
 {
@@ -379,6 +381,10 @@ static u16 __get_link_speed(struct port *port)
 			speed = AD_LINK_SPEED_800000MBPS;
 			break;
 
+		case SPEED_1600000:
+			speed = AD_LINK_SPEED_1600000MBPS;
+			break;
+
 		default:
 			/* unknown speed value from ethtool. shouldn't happen */
 			if (slave->speed != SPEED_UNKNOWN)
@@ -822,6 +828,9 @@ static u32 __get_agg_bandwidth(struct aggregator *aggregator)
 		case AD_LINK_SPEED_800000MBPS:
 			bandwidth = nports * 800000;
 			break;
+		case AD_LINK_SPEED_1600000MBPS:
+			bandwidth = nports * 1600000;
+			break;
 		default:
 			bandwidth = 0; /* to silence the compiler */
 		}
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed
  2025-11-17 21:18 ` [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed Tariq Toukan
@ 2025-11-18 14:16   ` Maxime Chevallier
  0 siblings, 0 replies; 5+ messages in thread
From: Maxime Chevallier @ 2025-11-18 14:16 UTC (permalink / raw)
  To: Tariq Toukan, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Andrew Lunn, David S. Miller
  Cc: Jay Vosburgh, Saeed Mahameed, Mark Bloch, Leon Romanovsky,
	Heiner Kallweit, netdev, linux-kernel, linux-rdma, Gal Pressman,
	Moshe Shemesh, Shahar Shitrit, Yael Chemla, Dragos Tatulea

Hi,

On 17/11/2025 22:18, Tariq Toukan wrote:
> From: Yael Chemla <ychemla@nvidia.com>
> 
> Add support for 1600Gbps link modes based on 200Gbps per lane [1].
> This includes the adopted IEEE 802.3dj copper and optical PMDs that use
> 200G/lane signaling [2].
> 
> Add the following PMD types:
> - KR8 (backplane)
> - CR8 (copper cable)
> - DR8 (SMF 500m)
> - DR8-2 (SMF 2km)
> 
> These modes are defined in the 802.3dj specifications.
> References:
> [1] https://www.ieee802.org/3/dj/public/23_03/opsasnick_3dj_01a_2303.pdf
> [2] https://www.ieee802.org/3/dj/projdoc/objectives_P802d3dj_240314.pdf
> 
> Signed-off-by: Yael Chemla <ychemla@nvidia.com>
> Reviewed-by: Shahar Shitrit <shshitrit@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> ---
>  drivers/net/phy/phy-core.c   | 4 +++-
>  include/uapi/linux/ethtool.h | 5 +++++
>  net/ethtool/common.c         | 8 ++++++++

Can you please also update drivers/net/phy/phy_caps.c :

 -> the link_capabilities array
 -> the speed_duplex_to_capa function

Without this update, phylib will fail to load entirely (by design), cf 
phy_caps_init(). A check was added specifically to catch when new speeds
are added without updating phylib alongside :)

Thanks,

Maxime


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-11-18 14:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-17 21:18 [PATCH net-next 0/3] net: Add 1600Gbps (1.6T) link mode support Tariq Toukan
2025-11-17 21:18 ` [PATCH net-next 1/3] net: ethtool: Add support for 1600Gbps speed Tariq Toukan
2025-11-18 14:16   ` Maxime Chevallier
2025-11-17 21:18 ` [PATCH net-next 2/3] net/mlx5e: Add 1600Gbps link modes Tariq Toukan
2025-11-17 21:19 ` [PATCH net-next 3/3] bonding: 3ad: Add support for 1600G speed Tariq Toukan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox