mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
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: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3231e5d222
commit
bbbf8430af
2 changed files with 14 additions and 3 deletions
|
@ -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,
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue