This adds a phy_ethtool_get_link() function along the same lines as
phy_ethtool_gset(). This provides drivers utilizing PHYLIB an
alternative to using ethtool_op_get_link(). This is more desirable
since the "Link detected" field in ethtool would actually reflect the
state of the PHY register.
Patch depends on previous patch (0/2).
Signed-off-by: Nate Case <[EMAIL PROTECTED]>
Signed-off-by: Andy Fleming <[EMAIL PROTECTED]>
---
--- a/drivers/net/phy/phy.c 2006-06-04 16:01:59.000000000 -0500
+++ b/drivers/net/phy/phy.c 2006-06-05 10:55:31.000000000 -0500
@@ -301,6 +301,22 @@
return 0;
}
+/*
+ * phy_ethtool_get_link:
+ * A generic ethtool get_link function which is more accurate than
+ * the network interface carrier status since it queries the
+ * PHY directly.
+ */
+u32 phy_ethtool_get_link(struct phy_device *phydev)
+{
+ int err;
+
+ err = genphy_update_link(phydev);
+ if (err)
+ return 0;
+
+ return (u32) phydev->link;
+}
/* Note that this function is currently incompatible with the
* PHYCONTROL layer. It changes registers without regard to
--- a/include/linux/phy.h 2006-06-05 11:33:59.000000000 -0500
+++ b/include/linux/phy.h 2006-06-04 19:31:51.000000000 -0500
@@ -374,6 +374,7 @@
void phy_stop_machine(struct phy_device *phydev);
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
+u32 phy_ethtool_get_link(struct phy_device *phydev);
int phy_mii_ioctl(struct phy_device *phydev,
struct mii_ioctl_data *mii_data, int cmd);
int phy_start_interrupts(struct phy_device *phydev);
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html