forked from Minki/linux
r8169: add basic MII ioctl support
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
This commit is contained in:
parent
64e4bfb40c
commit
5f787a1aca
@ -1475,6 +1475,32 @@ static void rtl8169_init_phy(struct net_device *dev, struct rtl8169_private *tp)
|
|||||||
printk(KERN_INFO PFX "%s: TBI auto-negotiating\n", dev->name);
|
printk(KERN_INFO PFX "%s: TBI auto-negotiating\n", dev->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rtl8169_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||||
|
{
|
||||||
|
struct rtl8169_private *tp = netdev_priv(dev);
|
||||||
|
struct mii_ioctl_data *data = if_mii(ifr);
|
||||||
|
|
||||||
|
if (!netif_running(dev))
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
switch (cmd) {
|
||||||
|
case SIOCGMIIPHY:
|
||||||
|
data->phy_id = 32; /* Internal PHY */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case SIOCGMIIREG:
|
||||||
|
data->val_out = mdio_read(tp->mmio_addr, data->reg_num & 0x1f);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case SIOCSMIIREG:
|
||||||
|
if (!capable(CAP_NET_ADMIN))
|
||||||
|
return -EPERM;
|
||||||
|
mdio_write(tp->mmio_addr, data->reg_num & 0x1f, data->val_in);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
static int __devinit
|
static int __devinit
|
||||||
rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
@ -1639,6 +1665,8 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
tp->phy_reset_enable = rtl8169_xmii_reset_enable;
|
tp->phy_reset_enable = rtl8169_xmii_reset_enable;
|
||||||
tp->phy_reset_pending = rtl8169_xmii_reset_pending;
|
tp->phy_reset_pending = rtl8169_xmii_reset_pending;
|
||||||
tp->link_ok = rtl8169_xmii_link_ok;
|
tp->link_ok = rtl8169_xmii_link_ok;
|
||||||
|
|
||||||
|
dev->do_ioctl = rtl8169_ioctl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get MAC address. FIXME: read EEPROM */
|
/* Get MAC address. FIXME: read EEPROM */
|
||||||
|
Loading…
Reference in New Issue
Block a user