Commit bbbf8430 authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller

net: phy: add new version of phy_do_ioctl

Add a new version of phy_do_ioctl that doesn't check whether net_device
is running. It will typically be used if suitable drivers attach the
PHY in probe already.
Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3231e5d2
...@@ -433,18 +433,28 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd) ...@@ -433,18 +433,28 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)
EXPORT_SYMBOL(phy_mii_ioctl); EXPORT_SYMBOL(phy_mii_ioctl);
/** /**
* phy_do_ioctl_running - generic ndo_do_ioctl implementation * phy_do_ioctl - generic ndo_do_ioctl implementation
* @dev: the net_device struct * @dev: the net_device struct
* @ifr: &struct ifreq for socket ioctl's * @ifr: &struct ifreq for socket ioctl's
* @cmd: ioctl cmd to execute * @cmd: ioctl cmd to execute
*/ */
int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd) int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ {
if (!netif_running(dev) || !dev->phydev) if (!dev->phydev)
return -ENODEV; return -ENODEV;
return phy_mii_ioctl(dev->phydev, ifr, cmd); return phy_mii_ioctl(dev->phydev, ifr, cmd);
} }
EXPORT_SYMBOL(phy_do_ioctl);
/* same as phy_do_ioctl, but ensures that net_device is running */
int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd)
{
if (!netif_running(dev))
return -ENODEV;
return phy_do_ioctl(dev, ifr, cmd);
}
EXPORT_SYMBOL(phy_do_ioctl_running); EXPORT_SYMBOL(phy_do_ioctl_running);
void phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies) void phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies)
......
...@@ -1242,6 +1242,7 @@ void phy_ethtool_ksettings_get(struct phy_device *phydev, ...@@ -1242,6 +1242,7 @@ void phy_ethtool_ksettings_get(struct phy_device *phydev,
int phy_ethtool_ksettings_set(struct phy_device *phydev, int phy_ethtool_ksettings_set(struct phy_device *phydev,
const struct ethtool_link_ksettings *cmd); const struct ethtool_link_ksettings *cmd);
int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd); int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd); int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd);
void phy_request_interrupt(struct phy_device *phydev); void phy_request_interrupt(struct phy_device *phydev);
void phy_free_interrupt(struct phy_device *phydev); void phy_free_interrupt(struct phy_device *phydev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment