patch-2.4.0-test2 linux/drivers/net/3c503.c

Next file: linux/drivers/net/3c507.c
Previous file: linux/drivers/macintosh/via-pmu.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/drivers/net/3c503.c linux/drivers/net/3c503.c
@@ -99,7 +99,7 @@
     if (base_addr > 0x1ff)	/* Check a single specified location. */
 	return el2_probe1(dev, base_addr);
     else if (base_addr != 0)		/* Don't probe at all. */
-	return ENXIO;
+	return -ENXIO;
 
     for (addr = addrs; *addr; addr++) {
 	int i;
@@ -118,7 +118,7 @@
 #if ! defined(no_probe_nonshared_memory) && ! defined (HAVE_DEVLIST)
     return el2_pio_probe(dev);
 #else
-    return ENODEV;
+    return -ENODEV;
 #endif
 }
 
@@ -134,7 +134,7 @@
     if (base_addr > 0x1ff)	/* Check a single specified location. */
 	return el2_probe1(dev, base_addr);
     else if (base_addr != 0)	/* Don't probe at all. */
-	return ENXIO;
+	return -ENXIO;
 
     for (i = 0; netcard_portlist[i]; i++) {
 	int ioaddr = netcard_portlist[i];
@@ -144,7 +144,7 @@
 	    return 0;
     }
 
-    return ENODEV;
+    return -ENODEV;
 }
 #endif
 
@@ -161,7 +161,7 @@
     /* Reset and/or avoid any lurking NE2000 */
     if (inb(ioaddr + 0x408) == 0xff) {
     	mdelay(1);
-	return ENODEV;
+	return -ENODEV;
     }
 
     /* We verify that it's a 3C503 board by checking the first three octets
@@ -171,7 +171,7 @@
     /* ASIC location registers should be 0 or have only a single bit set. */
     if (   (iobase_reg  & (iobase_reg - 1))
 	|| (membase_reg & (membase_reg - 1))) {
-	return ENODEV;
+	return -ENODEV;
     }
     saved_406 = inb_p(ioaddr + 0x406);
     outb_p(ECNTRL_RESET|ECNTRL_THIN, ioaddr + 0x406); /* Reset it... */
@@ -183,12 +183,9 @@
     if ((vendor_id != OLD_3COM_ID) && (vendor_id != NEW_3COM_ID)) {
 	/* Restore the register we frobbed. */
 	outb(saved_406, ioaddr + 0x406);
-	return ENODEV;
+	return -ENODEV;
     }
 
-    if (load_8390_module("3c503.c"))
-	return -ENOSYS;
-
     /* We should have a "dev" from Space.c or the static module table. */
     if (dev == NULL) {
 	printk("3c503.c: Passed a NULL device.\n");
@@ -645,6 +642,9 @@
 {
 	int this_dev, found = 0;
 
+	if (load_8390_module("3c503.c"))
+		return -ENOSYS;
+
 	for (this_dev = 0; this_dev < MAX_EL2_CARDS; this_dev++) {
 		struct net_device *dev = &dev_el2[this_dev];
 		dev->irq = irq[this_dev];
@@ -658,14 +658,13 @@
 		if (register_netdev(dev) != 0) {
 			printk(KERN_WARNING "3c503.c: No 3c503 card found (i/o = 0x%x).\n", io[this_dev]);
 			if (found != 0) {	/* Got at least one. */
-				lock_8390_module();
 				return 0;
 			}
+			unload_8390_module();
 			return -ENXIO;
 		}
 		found++;
 	}
-	lock_8390_module();
 	return 0;
 }
 
@@ -684,7 +683,7 @@
 			kfree(priv);
 		}
 	}
-	unlock_8390_module();
+	unload_8390_module();
 }
 #endif /* MODULE */
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)