Commit b0bade51 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller
Browse files

net: phy: Expose phydev::dev_flags through sysfs



phydev::dev_flags contains a bitmask of configuration bits requested by
the consumer of a PHY device (Ethernet MAC or switch) towards the PHY
driver. Since these flags are often used for requesting LED or other
type of configuration being able to quickly audit them without
instrumenting the kernel is useful.

Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ee47ed08
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -51,3 +51,15 @@ Description:
		Boolean value indicating whether the PHY device is used in
		standalone mode, without a net_device associated, by PHYLINK.
		Attribute created only when this is the case.

What:		/sys/class/mdio_bus/<bus>/<device>/phy_dev_flags
Date:		March 2021
KernelVersion:	5.13
Contact:	netdev@vger.kernel.org
Description:
		32-bit hexadecimal number representing a bit mask of the
		configuration bits passed from the consumer of the PHY
		(Ethernet MAC, switch, etc.) to the PHY driver. The flags are
		only used internally by the kernel and their placement are
		not meant to be stable across kernel versions. This is intended
		for facilitating the debugging of PHY drivers.
+11 −0
Original line number Diff line number Diff line
@@ -512,10 +512,21 @@ phy_has_fixups_show(struct device *dev, struct device_attribute *attr,
}
static DEVICE_ATTR_RO(phy_has_fixups);

static ssize_t phy_dev_flags_show(struct device *dev,
				  struct device_attribute *attr,
				  char *buf)
{
	struct phy_device *phydev = to_phy_device(dev);

	return sprintf(buf, "0x%08x\n", phydev->dev_flags);
}
static DEVICE_ATTR_RO(phy_dev_flags);

static struct attribute *phy_dev_attrs[] = {
	&dev_attr_phy_id.attr,
	&dev_attr_phy_interface.attr,
	&dev_attr_phy_has_fixups.attr,
	&dev_attr_phy_dev_flags.attr,
	NULL,
};
ATTRIBUTE_GROUPS(phy_dev);