]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: ethtool: Add support for 80Gbps speed
authorMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 15 Jan 2026 11:56:44 +0000 (12:56 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 19 Jan 2026 20:09:58 +0000 (12:09 -0800)
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>
Link: https://patch.msgid.link/20260115115646.328898-3-mika.westerberg@linux.intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/phy-caps.h
drivers/net/phy/phy-core.c
drivers/net/phy/phy_caps.c
drivers/net/phy/phylink.c
include/linux/phylink.h
include/uapi/linux/ethtool.h

index 5f3f757e0b2f8f0660cf305217f3e6956e000207..421088e6f6e8f1d9c2612c89526d20c0c779f3f7 100644 (file)
@@ -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,
index 3badf6e84554169e19f5d4e1629c29887a65d367..d7a4a977fc8ad8772582002a1292b080b0703f09 100644 (file)
@@ -48,6 +48,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:
index 17a63c9313354dd71f143f88c05ef6b7828d2576..942d43191561e2b44e4935a4bbc5ef6e18946b16 100644 (file)
@@ -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;
index 43d8380aaefb91dbcc8ff183b47ab2b988778503..c8fd6b91cdd41ddbbd2e5997c0844819b6df8328 100644 (file)
@@ -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) },
index 38363e566ac3d5467004db6e70499fd22c421280..20996f5778d1c9f5934b143f031e39ed651a5b9d 100644 (file)
@@ -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)
index ce9aeb65a8e14ada945b900caa1f06768c034acf..b74b80508553963e8df05803b57b9609b7dd08d5 100644 (file)
@@ -2203,6 +2203,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