* [PATCH net-next v3 1/4] net: thunderbolt: Allow changing MAC address of the device
2026-01-15 11:56 [PATCH net-next v3 0/4] net: thunderbolt: Various improvements Mika Westerberg
@ 2026-01-15 11:56 ` Mika Westerberg
2026-01-15 11:56 ` [PATCH net-next v3 2/4] net: ethtool: Add support for 80Gbps speed Mika Westerberg
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Mika Westerberg @ 2026-01-15 11:56 UTC (permalink / raw)
To: netdev
Cc: Ian MacDonald, Jay Vosburgh, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Heiner Kallweit,
Russell King, Yehezkel Bernat, Simon Horman, Salvatore Bonaccorso,
Nikolay Aleksandrov, Mika Westerberg
The MAC address we use is based on a suggestion in the USB4 Inter-domain
spec but it is not really used in the USB4NET protocol. It is more
targeted for the upper layers of the network stack. There is no reason
why it should not be changed by the userspace for example if needed for
bonding.
Reported-by: Ian MacDonald <ian@netstatz.com>
Closes: https://lore.kernel.org/netdev/CAFJzfF9N4Hak23sc-zh0jMobbkjK7rg4odhic1DQ1cC+=MoQoA@mail.gmail.com/
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/net/thunderbolt/main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/thunderbolt/main.c b/drivers/net/thunderbolt/main.c
index dcaa62377808..57b226afeb84 100644
--- a/drivers/net/thunderbolt/main.c
+++ b/drivers/net/thunderbolt/main.c
@@ -1261,6 +1261,7 @@ static const struct net_device_ops tbnet_netdev_ops = {
.ndo_open = tbnet_open,
.ndo_stop = tbnet_stop,
.ndo_start_xmit = tbnet_start_xmit,
+ .ndo_set_mac_address = eth_mac_addr,
.ndo_get_stats64 = tbnet_get_stats64,
};
@@ -1281,6 +1282,9 @@ static void tbnet_generate_mac(struct net_device *dev)
hash = jhash2((u32 *)xd->local_uuid, 4, hash);
addr[5] = hash & 0xff;
eth_hw_addr_set(dev, addr);
+
+ /* Allow changing it if needed */
+ dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
}
static int tbnet_probe(struct tb_service *svc, const struct tb_service_id *id)
--
2.50.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH net-next v3 2/4] net: ethtool: Add support for 80Gbps speed
2026-01-15 11:56 [PATCH net-next v3 0/4] net: thunderbolt: Various improvements Mika Westerberg
2026-01-15 11:56 ` [PATCH net-next v3 1/4] net: thunderbolt: Allow changing MAC address of the device Mika Westerberg
@ 2026-01-15 11:56 ` Mika Westerberg
2026-01-15 17:44 ` Andrew Lunn
2026-01-15 11:56 ` [PATCH net-next v3 3/4] bonding: 3ad: Add support for SPEED_80000 Mika Westerberg
` (2 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Mika Westerberg @ 2026-01-15 11:56 UTC (permalink / raw)
To: netdev
Cc: Ian MacDonald, Jay Vosburgh, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Heiner Kallweit,
Russell King, Yehezkel Bernat, Simon Horman, Salvatore Bonaccorso,
Nikolay Aleksandrov, Mika Westerberg
USB4 v2 link used in peer-to-peer networking is symmetric 80Gbps so in
order to support reading this link speed, add support for it to ethtool.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
I had to update include/linux/phylink.h as well, I hope it's fine to just
put it into middle and changing all the following bits accordingly. These
does not seem to be user-facing.
drivers/net/phy/phy-caps.h | 1 +
drivers/net/phy/phy-core.c | 2 ++
drivers/net/phy/phy_caps.c | 2 ++
drivers/net/phy/phylink.c | 1 +
include/linux/phylink.h | 7 ++++---
include/uapi/linux/ethtool.h | 1 +
6 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/net/phy/phy-caps.h b/drivers/net/phy/phy-caps.h
index 4951a39f3828..fdc489fe3a2a 100644
--- a/drivers/net/phy/phy-caps.h
+++ b/drivers/net/phy/phy-caps.h
@@ -25,6 +25,7 @@ enum {
LINK_CAPA_40000FD,
LINK_CAPA_50000FD,
LINK_CAPA_56000FD,
+ LINK_CAPA_80000FD,
LINK_CAPA_100000FD,
LINK_CAPA_200000FD,
LINK_CAPA_400000FD,
diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c
index 277c034bc32f..4fd264ece09e 100644
--- a/drivers/net/phy/phy-core.c
+++ b/drivers/net/phy/phy-core.c
@@ -47,6 +47,8 @@ const char *phy_speed_to_str(int speed)
return "50Gbps";
case SPEED_56000:
return "56Gbps";
+ case SPEED_80000:
+ return "80Gbps";
case SPEED_100000:
return "100Gbps";
case SPEED_200000:
diff --git a/drivers/net/phy/phy_caps.c b/drivers/net/phy/phy_caps.c
index 3a05982b39bf..3c53d3a746f2 100644
--- a/drivers/net/phy/phy_caps.c
+++ b/drivers/net/phy/phy_caps.c
@@ -21,6 +21,7 @@ static struct link_capabilities link_caps[__LINK_CAPA_MAX] __ro_after_init = {
{ SPEED_40000, DUPLEX_FULL, {0} }, /* LINK_CAPA_40000FD */
{ SPEED_50000, DUPLEX_FULL, {0} }, /* LINK_CAPA_50000FD */
{ SPEED_56000, DUPLEX_FULL, {0} }, /* LINK_CAPA_56000FD */
+ { SPEED_80000, DUPLEX_FULL, {0} }, /* LINK_CAPA_80000FD */
{ SPEED_100000, DUPLEX_FULL, {0} }, /* LINK_CAPA_100000FD */
{ SPEED_200000, DUPLEX_FULL, {0} }, /* LINK_CAPA_200000FD */
{ SPEED_400000, DUPLEX_FULL, {0} }, /* LINK_CAPA_400000FD */
@@ -49,6 +50,7 @@ static int speed_duplex_to_capa(int speed, unsigned int duplex)
case SPEED_40000: return LINK_CAPA_40000FD;
case SPEED_50000: return LINK_CAPA_50000FD;
case SPEED_56000: return LINK_CAPA_56000FD;
+ case SPEED_80000: return LINK_CAPA_80000FD;
case SPEED_100000: return LINK_CAPA_100000FD;
case SPEED_200000: return LINK_CAPA_200000FD;
case SPEED_400000: return LINK_CAPA_400000FD;
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 43d8380aaefb..c8fd6b91cdd4 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -311,6 +311,7 @@ static struct {
{ MAC_400000FD, SPEED_400000, DUPLEX_FULL, BIT(LINK_CAPA_400000FD) },
{ MAC_200000FD, SPEED_200000, DUPLEX_FULL, BIT(LINK_CAPA_200000FD) },
{ MAC_100000FD, SPEED_100000, DUPLEX_FULL, BIT(LINK_CAPA_100000FD) },
+ { MAC_80000FD, SPEED_80000, DUPLEX_FULL, BIT(LINK_CAPA_80000FD) },
{ MAC_56000FD, SPEED_56000, DUPLEX_FULL, BIT(LINK_CAPA_56000FD) },
{ MAC_50000FD, SPEED_50000, DUPLEX_FULL, BIT(LINK_CAPA_50000FD) },
{ MAC_40000FD, SPEED_40000, DUPLEX_FULL, BIT(LINK_CAPA_40000FD) },
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
index 38363e566ac3..20996f5778d1 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -90,9 +90,10 @@ enum {
MAC_40000FD = BIT(13),
MAC_50000FD = BIT(14),
MAC_56000FD = BIT(15),
- MAC_100000FD = BIT(16),
- MAC_200000FD = BIT(17),
- MAC_400000FD = BIT(18),
+ MAC_80000FD = BIT(16),
+ MAC_100000FD = BIT(17),
+ MAC_200000FD = BIT(18),
+ MAC_400000FD = BIT(19),
};
static inline bool phylink_autoneg_inband(unsigned int mode)
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index eb7ff2602fbb..181243a2d700 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -2190,6 +2190,7 @@ enum ethtool_link_mode_bit_indices {
#define SPEED_40000 40000
#define SPEED_50000 50000
#define SPEED_56000 56000
+#define SPEED_80000 80000
#define SPEED_100000 100000
#define SPEED_200000 200000
#define SPEED_400000 400000
--
2.50.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH net-next v3 2/4] net: ethtool: Add support for 80Gbps speed
2026-01-15 11:56 ` [PATCH net-next v3 2/4] net: ethtool: Add support for 80Gbps speed Mika Westerberg
@ 2026-01-15 17:44 ` Andrew Lunn
0 siblings, 0 replies; 8+ messages in thread
From: Andrew Lunn @ 2026-01-15 17:44 UTC (permalink / raw)
To: Mika Westerberg
Cc: netdev, Ian MacDonald, Jay Vosburgh, Andrew Lunn,
David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Heiner Kallweit, Russell King, Yehezkel Bernat, Simon Horman,
Salvatore Bonaccorso, Nikolay Aleksandrov
On Thu, Jan 15, 2026 at 12:56:44PM +0100, Mika Westerberg wrote:
> USB4 v2 link used in peer-to-peer networking is symmetric 80Gbps so in
> order to support reading this link speed, add support for it to ethtool.
>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v3 3/4] bonding: 3ad: Add support for SPEED_80000
2026-01-15 11:56 [PATCH net-next v3 0/4] net: thunderbolt: Various improvements Mika Westerberg
2026-01-15 11:56 ` [PATCH net-next v3 1/4] net: thunderbolt: Allow changing MAC address of the device Mika Westerberg
2026-01-15 11:56 ` [PATCH net-next v3 2/4] net: ethtool: Add support for 80Gbps speed Mika Westerberg
@ 2026-01-15 11:56 ` Mika Westerberg
2026-01-15 17:09 ` Nikolay Aleksandrov
2026-01-15 11:56 ` [PATCH net-next v3 4/4] net: thunderbolt: Allow reading link settings Mika Westerberg
2026-01-19 20:30 ` [PATCH net-next v3 0/4] net: thunderbolt: Various improvements patchwork-bot+netdevbpf
4 siblings, 1 reply; 8+ messages in thread
From: Mika Westerberg @ 2026-01-15 11:56 UTC (permalink / raw)
To: netdev
Cc: Ian MacDonald, Jay Vosburgh, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Heiner Kallweit,
Russell King, Yehezkel Bernat, Simon Horman, Salvatore Bonaccorso,
Nikolay Aleksandrov, Mika Westerberg
Add support for ethtool SPEED_80000. This is needed to allow
Thunderbolt/USB4 networking driver to be used with the bonding driver.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.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 1a8de2bf8655..be10d31abe0c 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -72,6 +72,7 @@ enum ad_link_speed_type {
AD_LINK_SPEED_40000MBPS,
AD_LINK_SPEED_50000MBPS,
AD_LINK_SPEED_56000MBPS,
+ AD_LINK_SPEED_80000MBPS,
AD_LINK_SPEED_100000MBPS,
AD_LINK_SPEED_200000MBPS,
AD_LINK_SPEED_400000MBPS,
@@ -297,6 +298,7 @@ static inline int __check_agg_selection_timer(struct port *port)
* %AD_LINK_SPEED_40000MBPS
* %AD_LINK_SPEED_50000MBPS
* %AD_LINK_SPEED_56000MBPS
+ * %AD_LINK_SPEED_80000MBPS
* %AD_LINK_SPEED_100000MBPS
* %AD_LINK_SPEED_200000MBPS
* %AD_LINK_SPEED_400000MBPS
@@ -365,6 +367,10 @@ static u16 __get_link_speed(struct port *port)
speed = AD_LINK_SPEED_56000MBPS;
break;
+ case SPEED_80000:
+ speed = AD_LINK_SPEED_80000MBPS;
+ break;
+
case SPEED_100000:
speed = AD_LINK_SPEED_100000MBPS;
break;
@@ -816,6 +822,9 @@ static u32 __get_agg_bandwidth(struct aggregator *aggregator)
case AD_LINK_SPEED_56000MBPS:
bandwidth = nports * 56000;
break;
+ case AD_LINK_SPEED_80000MBPS:
+ bandwidth = nports * 80000;
+ break;
case AD_LINK_SPEED_100000MBPS:
bandwidth = nports * 100000;
break;
--
2.50.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH net-next v3 3/4] bonding: 3ad: Add support for SPEED_80000
2026-01-15 11:56 ` [PATCH net-next v3 3/4] bonding: 3ad: Add support for SPEED_80000 Mika Westerberg
@ 2026-01-15 17:09 ` Nikolay Aleksandrov
0 siblings, 0 replies; 8+ messages in thread
From: Nikolay Aleksandrov @ 2026-01-15 17:09 UTC (permalink / raw)
To: Mika Westerberg, netdev
Cc: Ian MacDonald, Jay Vosburgh, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Heiner Kallweit,
Russell King, Yehezkel Bernat, Simon Horman, Salvatore Bonaccorso
On 15/01/2026 13:56, Mika Westerberg wrote:
> Add support for ethtool SPEED_80000. This is needed to allow
> Thunderbolt/USB4 networking driver to be used with the bonding driver.
>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> drivers/net/bonding/bond_3ad.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v3 4/4] net: thunderbolt: Allow reading link settings
2026-01-15 11:56 [PATCH net-next v3 0/4] net: thunderbolt: Various improvements Mika Westerberg
` (2 preceding siblings ...)
2026-01-15 11:56 ` [PATCH net-next v3 3/4] bonding: 3ad: Add support for SPEED_80000 Mika Westerberg
@ 2026-01-15 11:56 ` Mika Westerberg
2026-01-19 20:30 ` [PATCH net-next v3 0/4] net: thunderbolt: Various improvements patchwork-bot+netdevbpf
4 siblings, 0 replies; 8+ messages in thread
From: Mika Westerberg @ 2026-01-15 11:56 UTC (permalink / raw)
To: netdev
Cc: Ian MacDonald, Jay Vosburgh, Andrew Lunn, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Heiner Kallweit,
Russell King, Yehezkel Bernat, Simon Horman, Salvatore Bonaccorso,
Nikolay Aleksandrov, Mika Westerberg
From: Ian MacDonald <ian@netstatz.com>
In order to use Thunderbolt networking as part of bonding device it
needs to support ->get_link_ksettings() ethtool operation, so that the
bonding driver can read the link speed and the related attributes. Add
support for this to the driver.
Signed-off-by: Ian MacDonald <ian@netstatz.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/net/thunderbolt/main.c | 49 ++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/net/thunderbolt/main.c b/drivers/net/thunderbolt/main.c
index 57b226afeb84..7aae5d915a1e 100644
--- a/drivers/net/thunderbolt/main.c
+++ b/drivers/net/thunderbolt/main.c
@@ -10,6 +10,7 @@
*/
#include <linux/atomic.h>
+#include <linux/ethtool.h>
#include <linux/highmem.h>
#include <linux/if_vlan.h>
#include <linux/jhash.h>
@@ -1265,6 +1266,53 @@ static const struct net_device_ops tbnet_netdev_ops = {
.ndo_get_stats64 = tbnet_get_stats64,
};
+static int tbnet_get_link_ksettings(struct net_device *dev,
+ struct ethtool_link_ksettings *cmd)
+{
+ const struct tbnet *net = netdev_priv(dev);
+ const struct tb_xdomain *xd = net->xd;
+ int speed;
+
+ ethtool_link_ksettings_zero_link_mode(cmd, supported);
+ ethtool_link_ksettings_zero_link_mode(cmd, advertising);
+
+ /* Figure out the current link speed and width */
+ switch (xd->link_speed) {
+ case 40:
+ speed = SPEED_80000;
+ break;
+
+ case 20:
+ if (xd->link_width == 2)
+ speed = SPEED_40000;
+ else
+ speed = SPEED_20000;
+ break;
+
+ case 10:
+ if (xd->link_width == 2) {
+ speed = SPEED_20000;
+ break;
+ }
+ fallthrough;
+
+ default:
+ speed = SPEED_10000;
+ break;
+ }
+
+ cmd->base.speed = speed;
+ cmd->base.duplex = DUPLEX_FULL;
+ cmd->base.autoneg = AUTONEG_DISABLE;
+ cmd->base.port = PORT_OTHER;
+
+ return 0;
+}
+
+static const struct ethtool_ops tbnet_ethtool_ops = {
+ .get_link_ksettings = tbnet_get_link_ksettings,
+};
+
static void tbnet_generate_mac(struct net_device *dev)
{
const struct tbnet *net = netdev_priv(dev);
@@ -1315,6 +1363,7 @@ static int tbnet_probe(struct tb_service *svc, const struct tb_service_id *id)
strcpy(dev->name, "thunderbolt%d");
dev->netdev_ops = &tbnet_netdev_ops;
+ dev->ethtool_ops = &tbnet_ethtool_ops;
/* ThunderboltIP takes advantage of TSO packets but instead of
* segmenting them we just split the packet into Thunderbolt
--
2.50.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH net-next v3 0/4] net: thunderbolt: Various improvements
2026-01-15 11:56 [PATCH net-next v3 0/4] net: thunderbolt: Various improvements Mika Westerberg
` (3 preceding siblings ...)
2026-01-15 11:56 ` [PATCH net-next v3 4/4] net: thunderbolt: Allow reading link settings Mika Westerberg
@ 2026-01-19 20:30 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 8+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-01-19 20:30 UTC (permalink / raw)
To: Mika Westerberg
Cc: netdev, ian, jv, andrew+netdev, davem, edumazet, kuba, pabeni,
hkallweit1, linux, YehezkelShB, horms, carnil, razor
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Thu, 15 Jan 2026 12:56:42 +0100 you wrote:
> Hi all,
>
> This series improves the Thunderbolt networking driver so that it should
> work with the bonding driver.
>
> The discussion that started this patch series can be read below:
>
> [...]
Here is the summary with links:
- [net-next,v3,1/4] net: thunderbolt: Allow changing MAC address of the device
https://git.kernel.org/netdev/net-next/c/8411d7286bcb
- [net-next,v3,2/4] net: ethtool: Add support for 80Gbps speed
https://git.kernel.org/netdev/net-next/c/a9927022c449
- [net-next,v3,3/4] bonding: 3ad: Add support for SPEED_80000
https://git.kernel.org/netdev/net-next/c/2e62e5565bd2
- [net-next,v3,4/4] net: thunderbolt: Allow reading link settings
https://git.kernel.org/netdev/net-next/c/7a3d3279a566
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 8+ messages in thread