diff -urN /mnt/disk/linux/drivers/net/ni52.c /linux/drivers/net/ni52.c --- /mnt/disk/linux/drivers/net/ni52.c Thu Nov 16 22:57:16 2000 +++ /linux/drivers/net/ni52.c Sun Nov 19 22:24:09 2000 @@ -256,16 +256,18 @@ */ static int ni52_open(struct net_device *dev) { + int retval; + ni_disint(); alloc586(dev); init586(dev); startrecv586(dev); ni_enaint(); - if(request_irq(dev->irq, &ni52_interrupt,0,"ni5210",dev)) + if((retval = request_irq(dev->irq, &ni52_interrupt, 0, dev->name, dev))) { ni_reset586(); - return -EAGAIN; + return retval; } netif_start_queue(dev); @@ -393,13 +395,13 @@ { int i, size, retval; - if (!request_region(ioaddr, NI52_TOTAL_SIZE, "ni5210")) - return -ENODEV; + if (!request_region(ioaddr, NI52_TOTAL_SIZE, dev->name)) + return -EBUSY; if( !(inb(ioaddr+NI52_MAGIC1) == NI52_MAGICVAL1) || !(inb(ioaddr+NI52_MAGIC2) == NI52_MAGICVAL2)) { retval = -ENODEV; - goto out; + goto err_out; } for(i=0;idev_addr[0] != NI52_ADDR0 || dev->dev_addr[1] != NI52_ADDR1 || dev->dev_addr[2] != NI52_ADDR2) { retval = -ENODEV; - goto out; + goto err_out; } printk("%s: NI5210 found at %#3lx, ",dev->name,dev->base_addr); @@ -421,12 +423,12 @@ if(size != 0x2000 && size != 0x4000) { printk("\n%s: Illegal memory size %d. Allowed is 0x2000 or 0x4000 bytes.\n",dev->name,size); retval = -ENODEV; - goto out; + goto err_out; } if(!check586(dev,(char *) dev->mem_start,size)) { printk("?memcheck, Can't find memory at 0x%lx with size %d!\n",dev->mem_start,size); retval = -ENODEV; - goto out; + goto err_out; } #else if(dev->mem_start != 0) /* no auto-mem-probe */ @@ -437,7 +439,7 @@ if(!check586(dev,(char *) dev->mem_start,size)) { printk("?memprobe, Can't find memory at 0x%lx!\n",dev->mem_start); retval = -ENODEV; - goto out; + goto err_out; } } } @@ -450,7 +452,7 @@ if(!memaddrs[i]) { printk("?memprobe, Can't find io-memory!\n"); retval = -ENODEV; - goto out; + goto err_out; } dev->mem_start = memaddrs[i]; size = 0x2000; /* check for 8K mem */ @@ -468,7 +470,7 @@ if(dev->priv == NULL) { printk("%s: Ooops .. can't allocate private driver memory.\n",dev->name); retval = -ENOMEM; - goto out; + goto err_out; } /* warning: we don't free it on errors */ memset((char *) dev->priv,0,sizeof(struct priv)); @@ -496,7 +498,7 @@ kfree(dev->priv); dev->priv = NULL; retval = -EAGAIN; - goto out; + goto err_out; } printk("IRQ %d (autodetected).\n",dev->irq); } @@ -519,7 +521,8 @@ ether_setup(dev); return 0; -out: + +err_out: release_region(ioaddr, NI52_TOTAL_SIZE); return retval; }