Merge branch 'phy-add-new-version-of-phy_do_ioctl-and-convert-suitable-drivers'
Heiner Kallweit says: ==================== net: phy: add new version of phy_do_ioctl and convert suitable drivers We just added phy_do_ioctl, but it turned out that we need another version of this function that doesn't check whether net_device is running. So rename phy_do_ioctl to phy_do_ioctl_running and add a new version of phy_do_ioctl. Eventually convert suitable drivers to use phy_do_ioctl. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
3ccc897b22
|
@ -3651,15 +3651,6 @@ static int et131x_close(struct net_device *netdev)
|
|||
return del_timer_sync(&adapter->error_timer);
|
||||
}
|
||||
|
||||
static int et131x_ioctl(struct net_device *netdev, struct ifreq *reqbuf,
|
||||
int cmd)
|
||||
{
|
||||
if (!netdev->phydev)
|
||||
return -EINVAL;
|
||||
|
||||
return phy_mii_ioctl(netdev->phydev, reqbuf, cmd);
|
||||
}
|
||||
|
||||
/* et131x_set_packet_filter - Configures the Rx Packet filtering */
|
||||
static int et131x_set_packet_filter(struct et131x_adapter *adapter)
|
||||
{
|
||||
|
@ -3899,7 +3890,7 @@ static const struct net_device_ops et131x_netdev_ops = {
|
|||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_get_stats = et131x_stats,
|
||||
.ndo_do_ioctl = et131x_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
};
|
||||
|
||||
static int et131x_pci_setup(struct pci_dev *pdev,
|
||||
|
|
|
@ -1394,14 +1394,6 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
|
|||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
static int ag71xx_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
if (!ndev->phydev)
|
||||
return -EINVAL;
|
||||
|
||||
return phy_mii_ioctl(ndev->phydev, ifr, cmd);
|
||||
}
|
||||
|
||||
static void ag71xx_oom_timer_handler(struct timer_list *t)
|
||||
{
|
||||
struct ag71xx *ag = from_timer(ag, t, oom_timer);
|
||||
|
@ -1618,7 +1610,7 @@ static const struct net_device_ops ag71xx_netdev_ops = {
|
|||
.ndo_open = ag71xx_open,
|
||||
.ndo_stop = ag71xx_stop,
|
||||
.ndo_start_xmit = ag71xx_hard_start_xmit,
|
||||
.ndo_do_ioctl = ag71xx_do_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
.ndo_tx_timeout = ag71xx_tx_timeout,
|
||||
.ndo_change_mtu = ag71xx_change_mtu,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
|
|
|
@ -1536,15 +1536,6 @@ static int ftgmac100_stop(struct net_device *netdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* optional */
|
||||
static int ftgmac100_do_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
if (!netdev->phydev)
|
||||
return -ENXIO;
|
||||
|
||||
return phy_mii_ioctl(netdev->phydev, ifr, cmd);
|
||||
}
|
||||
|
||||
static void ftgmac100_tx_timeout(struct net_device *netdev, unsigned int txqueue)
|
||||
{
|
||||
struct ftgmac100 *priv = netdev_priv(netdev);
|
||||
|
@ -1597,7 +1588,7 @@ static const struct net_device_ops ftgmac100_netdev_ops = {
|
|||
.ndo_start_xmit = ftgmac100_hard_start_xmit,
|
||||
.ndo_set_mac_address = ftgmac100_set_mac_addr,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_do_ioctl = ftgmac100_do_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
.ndo_tx_timeout = ftgmac100_tx_timeout,
|
||||
.ndo_set_rx_mode = ftgmac100_set_rx_mode,
|
||||
.ndo_set_features = ftgmac100_set_features,
|
||||
|
|
|
@ -785,16 +785,6 @@ static const struct ethtool_ops mpc52xx_fec_ethtool_ops = {
|
|||
};
|
||||
|
||||
|
||||
static int mpc52xx_fec_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
struct phy_device *phydev = dev->phydev;
|
||||
|
||||
if (!phydev)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return phy_mii_ioctl(phydev, rq, cmd);
|
||||
}
|
||||
|
||||
static const struct net_device_ops mpc52xx_fec_netdev_ops = {
|
||||
.ndo_open = mpc52xx_fec_open,
|
||||
.ndo_stop = mpc52xx_fec_close,
|
||||
|
@ -802,7 +792,7 @@ static const struct net_device_ops mpc52xx_fec_netdev_ops = {
|
|||
.ndo_set_rx_mode = mpc52xx_fec_set_multicast_list,
|
||||
.ndo_set_mac_address = mpc52xx_fec_set_mac_address,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_do_ioctl = mpc52xx_fec_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
.ndo_tx_timeout = mpc52xx_fec_tx_timeout,
|
||||
.ndo_get_stats = mpc52xx_fec_get_stats,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
|
|
|
@ -498,14 +498,6 @@ static int r6040_close(struct net_device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
if (!dev->phydev)
|
||||
return -EINVAL;
|
||||
|
||||
return phy_mii_ioctl(dev->phydev, rq, cmd);
|
||||
}
|
||||
|
||||
static int r6040_rx(struct net_device *dev, int limit)
|
||||
{
|
||||
struct r6040_private *priv = netdev_priv(dev);
|
||||
|
@ -957,7 +949,7 @@ static const struct net_device_ops r6040_netdev_ops = {
|
|||
.ndo_set_rx_mode = r6040_multicast_list,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_do_ioctl = r6040_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
.ndo_tx_timeout = r6040_tx_timeout,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = r6040_poll_controller,
|
||||
|
|
|
@ -5158,7 +5158,7 @@ static const struct net_device_ops rtl_netdev_ops = {
|
|||
.ndo_fix_features = rtl8169_fix_features,
|
||||
.ndo_set_features = rtl8169_set_features,
|
||||
.ndo_set_mac_address = rtl_set_mac_address,
|
||||
.ndo_do_ioctl = phy_do_ioctl,
|
||||
.ndo_do_ioctl = phy_do_ioctl_running,
|
||||
.ndo_set_rx_mode = rtl_set_rx_mode,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = rtl8169_netpoll,
|
||||
|
|
|
@ -440,13 +440,23 @@ EXPORT_SYMBOL(phy_mii_ioctl);
|
|||
*/
|
||||
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 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);
|
||||
|
||||
void phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies)
|
||||
{
|
||||
mod_delayed_work(system_power_efficient_wq, &phydev->state_queue,
|
||||
|
|
|
@ -1243,6 +1243,7 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,
|
|||
const struct ethtool_link_ksettings *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);
|
||||
void phy_request_interrupt(struct phy_device *phydev);
|
||||
void phy_free_interrupt(struct phy_device *phydev);
|
||||
void phy_print_status(struct phy_device *phydev);
|
||||
|
|
Loading…
Reference in New Issue