patch-2.4.0-test2 linux/drivers/net/smc-ultra.c

Next file: linux/drivers/net/smc-ultra32.c
Previous file: linux/drivers/net/smc-mca.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/drivers/net/smc-ultra.c linux/drivers/net/smc-ultra.c
@@ -114,7 +114,7 @@
 	if (base_addr > 0x1ff)		/* Check a single specified location. */
 		return ultra_probe1(dev, base_addr);
 	else if (base_addr != 0)	/* Don't probe at all. */
-		return ENXIO;
+		return -ENXIO;
 
 	for (i = 0; ultra_portlist[i]; i++) {
 		int ioaddr = ultra_portlist[i];
@@ -124,7 +124,7 @@
 			return 0;
 	}
 
-	return ENODEV;
+	return -ENODEV;
 }
 #endif
 
@@ -143,7 +143,7 @@
 	/* Check the ID nibble. */
 	if ((idreg & 0xF0) != 0x20 			/* SMC Ultra */
 		&& (idreg & 0xF0) != 0x40) 		/* SMC EtherEZ */
-		return ENODEV;
+		return -ENODEV;
 
 	/* Select the station address register set. */
 	outb(reg4, ioaddr + 4);
@@ -151,10 +151,7 @@
 	for (i = 0; i < 8; i++)
 		checksum += inb(ioaddr + 8 + i);
 	if ((checksum & 0xff) != 0xFF)
-		return ENODEV;
-
-	if (load_8390_module("smc-ultra.c"))
-		return -ENOSYS;
+		return -ENODEV;
 
 	if (dev == NULL)
 		dev = init_etherdev(0, 0);
@@ -448,6 +445,9 @@
 {
 	int this_dev, found = 0;
 
+	if (load_8390_module("smc-ultra.c"))
+		return -ENOSYS;
+
 	for (this_dev = 0; this_dev < MAX_ULTRA_CARDS; this_dev++) {
 		struct net_device *dev = &dev_ultra[this_dev];
 		dev->irq = irq[this_dev];
@@ -460,6 +460,7 @@
 		if (register_netdev(dev) != 0) {
 			printk(KERN_WARNING "smc-ultra.c: No SMC Ultra card found (i/o = 0x%x).\n", io[this_dev]);
 			if (found != 0) return 0;	/* Got at least one. */
+			unload_8390_module();
 			return -ENXIO;
 		}
 		found++;
@@ -483,7 +484,7 @@
 			kfree(dev->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)