hi i fixed the ioctl support in the net driver to support link detection by ifplugd ond maybe netplugd(not tested) here my patch for drivers/net/au1000.c
bjoern riemer
9,11c9 < * Bjoern Riemer 2004 < * riemer@xxxxxxxxxxxxxxxxxxx or riemer@xxxxxxxxxxxx < * // fixed the link beat detection with ioctls (SIOCGMIIPHY) --- > * 120c118 < "au1000eth.c:1.5 ppopov@xxxxxxxxxx\n"; --- > "au1000eth.c:1.4 ppopov@xxxxxxxxxx\n"; 1388,1391d1385 < /*riemer: fix for startup without cable */ < if (!link) < dev->flags &= ~IFF_RUNNING; < 1448d1441 < 1846,1856c1839 < /* < // This structure is used in all SIOCxMIIxxx ioctl calls < struct mii_ioctl_data { < 0 u16 phy_id; < 1 u16 reg_num; < 2 u16 val_in; < 3 u16 val_out; < };*/ < u16 *data = (u16 *)&rq->ifr_data; < struct au1000_private *aup = (struct au1000_private *) dev->priv; < //struct mii_ioctl_data *data = (struct mii_ioctl_data *) & rq->ifr_data; --- > //u16 *data = (u16 *)&rq->ifr_data; 1859d1841 < 1862,1865c1844 < case SIOCGMIIPHY: < if (!netif_running(dev)) < return -EINVAL; < data[0] = aup->phy_addr; --- > //data[0] = PHY_ADDRESS; 1867,1870c1846,1847 < case SIOCGMIIREG: < data[3] = mdio_read(dev, data[0], data[1]); < //data->val_out = mdio_read(dev,data->phy_id,data->reg_num); < return 0; --- > //data[3] = mdio_read(ioaddr, data[0], data[1]); > return 0; 1872,1876c1849,1850 < case SIOCSMIIREG: < if (!capable(CAP_NET_ADMIN)) < return -EPERM; < mdio_write(dev, data[0], data[1],data[2]); < return 0; --- > //mdio_write(ioaddr, data[0], data[1], data[2]); > return 0; 1878c1852 < return -EOPNOTSUPP; --- > return -EOPNOTSUPP;