Re: [PATCH net-next v16 02/15] net: ethtool: Introduce ETHTOOL_LINK_MEDIUM_* values
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-11-19 03:15:22
Also in:
linux-arm-msm, linux-devicetree, lkml, netdev
On Thu, 13 Nov 2025 09:14:04 +0100 Maxime Chevallier wrote:
quoted hunk ↗ jump to hunk
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index c2d8b4ec62eb..ad2b5ed9522b 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h@@ -216,13 +216,26 @@ static inline u8 *ethtool_rxfh_context_key(struct ethtool_rxfh_context *ctx) void ethtool_rxfh_context_lost(struct net_device *dev, u32 context_id); struct link_mode_info { - int speed; - u8 lanes; - u8 duplex; + int speed; + u8 lanes; + u8 min_pairs; + u8 pairs; + u8 duplex; + u16 mediums; }; extern const struct link_mode_info link_mode_params[]; +extern const char ethtool_link_medium_names[][ETH_GSTRING_LEN]; + +static inline const char *phy_mediums(enum ethtool_link_medium medium) +{ + if (medium >= __ETHTOOL_LINK_MEDIUM_LAST) + return "unknown"; + + return ethtool_link_medium_names[medium]; +}
Will this function be called by a lot of drivers? Would be great to find a more suitable place for it, ethtool.h is included by thousands of objects :(
quoted hunk ↗ jump to hunk
/* declare a link mode bitmap */ #define __ETHTOOL_DECLARE_LINK_MODE_MASK(name) \ DECLARE_BITMAP(name, __ETHTOOL_LINK_MODE_MASK_NBITS)diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h index 8bd5ea5469d9..6ed235053aed 100644 --- a/include/uapi/linux/ethtool.h +++ b/include/uapi/linux/ethtool.h@@ -2587,4 +2587,24 @@ enum phy_upstream { PHY_UPSTREAM_PHY, }; +enum ethtool_link_medium { + ETHTOOL_LINK_MEDIUM_BASET = 0, + ETHTOOL_LINK_MEDIUM_BASEK, + ETHTOOL_LINK_MEDIUM_BASES, + ETHTOOL_LINK_MEDIUM_BASEC, + ETHTOOL_LINK_MEDIUM_BASEL, + ETHTOOL_LINK_MEDIUM_BASED, + ETHTOOL_LINK_MEDIUM_BASEE, + ETHTOOL_LINK_MEDIUM_BASEF, + ETHTOOL_LINK_MEDIUM_BASEV, + ETHTOOL_LINK_MEDIUM_BASEMLD, + ETHTOOL_LINK_MEDIUM_NONE, + + __ETHTOOL_LINK_MEDIUM_LAST, +};
Why is this in uAPI? I'd have expected it to either exist in the YAML spec if there's a new uAPI that needs it, or in kernel headers. Let's move it out for now to be safe, we can always move it in.
+#define ETHTOOL_MEDIUM_FIBER_BITS (BIT(ETHTOOL_LINK_MEDIUM_BASES) | \ + BIT(ETHTOOL_LINK_MEDIUM_BASEL) | \ + BIT(ETHTOOL_LINK_MEDIUM_BASEF))
Ditto.