return -ENODEV; 
return err; 
static int __init eepro_probe1(struct net_device *dev, int autoprobe){	unsigned short station_addr[3], id, counter;	int i;	struct eepro_local *lp;	int ioaddr = dev->base_addr;	/* Grab the region so we can find another board if autoIRQ fails. */	if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { 		if (!autoprobe)			printk(KERN_WARNING "EEPRO: io-port 0x%04x in use \n",				ioaddr);		return -EBUSY;	}	/* Now, we are going to check for the signature of the	   ID_REG (register 2 of bank 0) */	id = inb(ioaddr + ID_REG);	if ((id & ID_REG_MASK) != ID_REG_SIG)		goto exit;	/* We seem to have the 82595 signature, let's	   play with its counter (last 2 bits of	   register 2 of bank 0) to be sure. */	counter = id & R_ROBIN_BITS;	if ((inb(ioaddr + ID_REG) & R_ROBIN_BITS) != (counter + 0x40))		goto exit;	lp = netdev_priv(dev);	memset(lp, 0, sizeof(struct eepro_local));	lp->xmt_bar = XMT_BAR_PRO;	lp->xmt_lower_limit_reg = XMT_LOWER_LIMIT_REG_PRO;	lp->xmt_upper_limit_reg = XMT_UPPER_LIMIT_REG_PRO;	lp->eeprom_reg = EEPROM_REG_PRO;	spin_lock_init(&lp->lock);	/* Now, get the ethernet hardware address from	   the EEPROM */	station_addr[0] = read_eeprom(ioaddr, 2, dev);	/* FIXME - find another way to know that we've found	 * an Etherexpress 10	 */	if (station_addr[0] == 0x0000 || station_addr[0] == 0xffff) {		lp->eepro = LAN595FX_10ISA;		lp->eeprom_reg = EEPROM_REG_10;		lp->xmt_lower_limit_reg = XMT_LOWER_LIMIT_REG_10;		lp->xmt_upper_limit_reg = XMT_UPPER_LIMIT_REG_10;		lp->xmt_bar = XMT_BAR_10;		station_addr[0] = read_eeprom(ioaddr, 2, dev);	}	/* get all words at once. will be used here and for ethtool */	for (i = 0; i < 8; i++) {		lp->word[i] = read_eeprom(ioaddr, i, dev);	}	station_addr[1] = lp->word[3];	station_addr[2] = lp->word[4];	if (!lp->eepro) {		if (lp->word[7] == ee_FX_INT2IRQ)			lp->eepro = 2;		else if (station_addr[2] == SA_ADDR1)			lp->eepro = 1;	}	/* Fill in the 'dev' fields. */	for (i=0; i < 6; i++)		dev->dev_addr[i] = ((unsigned char *) station_addr)[5-i];	/* RX buffer must be more than 3K and less than 29K */	if (dev->mem_end < 3072 || dev->mem_end > 29696)		lp->rcv_ram = RCV_DEFAULT_RAM;	/* calculate {xmt,rcv}_{lower,upper}_limit */	eepro_recalc(dev);	if (GetBit(lp->word[5], ee_BNC_TPE))		dev->if_port = BNC;	else		dev->if_port = TPE; 	if (dev->irq < 2 && lp->eepro != 0) { 		/* Mask off INT number */ 		int count = lp->word[1] & 7; 		unsigned irqMask = lp->word[7];  		while (count--) 			irqMask &= irqMask - 1;  		count = ffs(irqMask);  		if (count) 			dev->irq = count - 1;  		if (dev->irq < 2) { 			printk(KERN_ERR " Duh! illegal interrupt vector stored in EEPROM.\n"); 			goto exit; 		} else if (dev->irq == 2) { 			dev->irq = 9; 		} 	}  	dev->open               = eepro_open; 	dev->stop               = eepro_close; 	dev->hard_start_xmit    = eepro_send_packet; 	dev->get_stats          = eepro_get_stats; 	dev->set_multicast_list = &set_multicast_list; 	dev->tx_timeout		= eepro_tx_timeout; 	dev->watchdog_timeo	= TX_TIMEOUT;	dev->ethtool_ops	= &eepro_ethtool_ops; 	/* print boot time info */	eepro_print_info(dev);	/* reset 82595 */	eepro_reset(ioaddr);	return 0;exit: 	release_region(dev->base_addr, EEPRO_IO_EXTENT); 	return -ENODEV;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b1fc5505e0dbcc3fd7c75bfe6bee39ec50080963/eepro.c/buggy/drivers/net/eepro.c