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