case SIOCETHTOOL: return e100_ethtool_ioctl(dev,ifr); 
e100_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd){	struct mii_ioctl_data *data = if_mii(ifr);	struct net_local *np = netdev_priv(dev);	spin_lock(&np->lock); /* Preempt protection */	switch (cmd) {		case SIOCETHTOOL:			return e100_ethtool_ioctl(dev,ifr);		case SIOCGMIIPHY: /* Get PHY address */			data->phy_id = mdio_phy_addr;			break;		case SIOCGMIIREG: /* Read MII register */			data->val_out = e100_get_mdio_reg(dev, mdio_phy_addr, data->reg_num);			break;		case SIOCSMIIREG: /* Write MII register */			e100_set_mdio_reg(dev, mdio_phy_addr, data->reg_num, data->val_in);			break;		/* The ioctls below should be considered obsolete but are */		/* still present for compatability with old scripts/apps  */		case SET_ETH_SPEED_10:                  /* 10 Mbps */			e100_set_speed(dev, 10);			break;		case SET_ETH_SPEED_100:                /* 100 Mbps */			e100_set_speed(dev, 100);			break;		case SET_ETH_SPEED_AUTO:              /* Auto negotiate speed */			e100_set_speed(dev, 0);			break;		case SET_ETH_DUPLEX_HALF:              /* Half duplex. */			e100_set_duplex(dev, half);			break;		case SET_ETH_DUPLEX_FULL:              /* Full duplex. */			e100_set_duplex(dev, full);			break;		case SET_ETH_DUPLEX_AUTO:             /* Autonegotiate duplex*/			e100_set_duplex(dev, autoneg);			break;		default:			return -EINVAL;	}	spin_unlock(&np->lock);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/76f2b4d98c3d6a88a260275acbede99c23a24d60/eth_v10.c/buggy/drivers/net/cris/eth_v10.c