netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [8390] Do not use dev->name before register_netdev
@ 2004-03-13  2:58 Herbert Xu
  2004-03-13  2:59 ` [3C501] " Herbert Xu
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Herbert Xu @ 2004-03-13  2:58 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

Hi:

This patch replaces/removes all uses of dev->name in 8390 drivers.
As it is, these drivers will do printks or allocate resources with
the name eth%d.

Cheers,
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: devname.2 --]
[-- Type: text/plain, Size: 41389 bytes --]

Index: kernel-2.5/drivers/net/3c503.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/3c503.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 3c503.c
--- kernel-2.5/drivers/net/3c503.c	19 Feb 2004 08:54:53 -0000	1.1.1.6
+++ kernel-2.5/drivers/net/3c503.c	13 Mar 2004 00:58:56 -0000
@@ -147,6 +147,7 @@
 	release_region(dev->base_addr, EL2_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init el2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -161,7 +162,7 @@
 	err = do_el2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -171,6 +172,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Probe for the Etherlink II card at I/O port base IOADDR,
    returning non-zero on success.  If found, set the station
@@ -182,10 +184,10 @@
     static unsigned version_printed;
     unsigned long vendor_id;
 
-    if (!request_region(ioaddr, EL2_IO_EXTENT, dev->name))
+    if (!request_region(ioaddr, EL2_IO_EXTENT, "3c503"))
 	return -EBUSY;
 
-    if (!request_region(ioaddr + 0x400, 8, dev->name)) {
+    if (!request_region(ioaddr + 0x400, 8, "3c503")) {
 	retval = -EBUSY;
 	goto out;
     }
@@ -226,11 +228,11 @@
 
     dev->base_addr = ioaddr;
 
-    printk("%s: 3c503 at i/o base %#3x, node ", dev->name, ioaddr);
+    printk("3c503 at i/o base %#3x", ioaddr);
 
-    /* Retrieve and print the ethernet address. */
+    /* Retrieve the ethernet address. */
     for (i = 0; i < 6; i++)
-	printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+	dev->dev_addr[i] = inb(ioaddr + i);
 
     /* Map the 8390 back into the window. */
     outb(ECNTRL_THIN, ioaddr + 0x406);
@@ -339,16 +341,16 @@
     dev->ethtool_ops = &netdev_ethtool_ops;
 
     if (dev->mem_start)
-	printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
-		dev->name, ei_status.name, (wordlength+1)<<3,
+	printk("3c503: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
+		ei_status.name, (wordlength+1)<<3,
 		dev->mem_start, dev->mem_end-1);
 
     else
     {
 	ei_status.tx_start_page = EL2_MB1_START_PG;
 	ei_status.rx_start_page = EL2_MB1_START_PG + TX_PAGES;
-	printk("\n%s: %s, %dkB RAM, using programmed I/O (REJUMPER for SHARED MEMORY).\n",
-	       dev->name, ei_status.name, (wordlength+1)<<3);
+	printk("3c503: %s, %dkB RAM, using programmed I/O (REJUMPER for SHARED MEMORY).\n",
+	       ei_status.name, (wordlength+1)<<3);
     }
     release_region(ioaddr + 0x400, 8);
     return 0;
@@ -697,7 +699,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_el2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_el2[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/8390.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/8390.c,v
retrieving revision 1.1.1.8
diff -u -r1.1.1.8 8390.c
--- kernel-2.5/drivers/net/8390.c	11 Mar 2004 02:55:22 -0000	1.1.1.8
+++ kernel-2.5/drivers/net/8390.c	13 Mar 2004 00:24:28 -0000
@@ -1024,6 +1024,27 @@
 				ethdev_setup);
 }
 
+/**
+ * register_ei_netdev - register_netdev counterpart for 8390
+ *
+ * Register 8390-specific net_device.
+ */
+int register_ei_netdev(struct net_device *dev)
+{
+	int err;
+	int i;
+
+	err = register_netdev(dev);
+	if (err)
+		return err;
+
+	printk(KERN_INFO "%s: %s found at %#lx, IRQ %d,",
+		dev->name, ei_status.name, dev->base_addr, dev->irq);
+	for (i = 0; i < ETHER_ADDR_LEN; i++)
+		printk("%2.2X%s", dev->dev_addr[i], i == 5 ? ".\n" : ":");
+	return 0;
+}
+
 \f
 
 
Index: kernel-2.5/drivers/net/8390.h
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/8390.h,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 8390.h
--- kernel-2.5/drivers/net/8390.h	19 Feb 2004 08:54:54 -0000	1.1.1.6
+++ kernel-2.5/drivers/net/8390.h	12 Mar 2004 22:56:26 -0000
@@ -48,6 +48,7 @@
 {
 	return __alloc_ei_netdev(0);
 }
+extern int register_ei_netdev(struct net_device *dev);
 
 /* You have one of these per-board */
 struct ei_device {
Index: kernel-2.5/drivers/net/ac3200.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ac3200.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 ac3200.c
--- kernel-2.5/drivers/net/ac3200.c	19 Feb 2004 08:54:55 -0000	1.1.1.6
+++ kernel-2.5/drivers/net/ac3200.c	13 Mar 2004 01:00:51 -0000
@@ -130,6 +130,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init ac3200_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -144,7 +145,7 @@
 	err = do_ac3200_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -154,12 +155,13 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ac_probe1(int ioaddr, struct net_device *dev)
 {
 	int i, retval;
 
-	if (!request_region(ioaddr, AC_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, AC_IO_EXTENT, "ac3200"))
 		return -EBUSY;
 
 	if (inb_p(ioaddr + AC_ID_PORT) == 0xff) {
@@ -179,9 +181,9 @@
 		   inb(ioaddr + AC_ID_PORT + 2), inb(ioaddr + AC_ID_PORT + 3));
 #endif
 
-	printk("AC3200 in EISA slot %d, node", ioaddr/0x1000);
+	printk("AC3200 in EISA slot %d", ioaddr/0x1000);
 	for(i = 0; i < 6; i++)
-		printk(" %02x", dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i));
+		dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i);
 
 #if 0
 	/* Check the vendor ID/prefix. Redundant after checking the EISA ID */
@@ -203,7 +205,7 @@
 		printk(", assigning");
 	}
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ac3200", dev);
 	if (retval) {
 		printk (" nothing! Unable to get IRQ %d.\n", dev->irq);
 		goto out1;
@@ -227,8 +229,8 @@
 	dev->if_port = inb(ioaddr + AC_CONFIG) >> 6;
 	dev->mem_start = config2mem(inb(ioaddr + AC_CONFIG));
 
-	printk("%s: AC3200 at %#3x with %dkB memory at physical address %#lx.\n", 
-			dev->name, ioaddr, AC_STOP_PG/4, dev->mem_start);
+	printk("ac3200: AC3200 at %#3x with %dkB memory at physical address %#lx.\n", 
+			ioaddr, AC_STOP_PG/4, dev->mem_start);
 
 	/*
 	 *  BEWARE!! Some dain-bramaged EISA SCUs will allow you to put
@@ -395,7 +397,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];		/* Currently ignored by driver */
 		if (do_ac3200_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ac32[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/apne.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/apne.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 apne.c
--- kernel-2.5/drivers/net/apne.c	11 Mar 2004 02:55:54 -0000	1.1.1.6
+++ kernel-2.5/drivers/net/apne.c	13 Mar 2004 00:24:37 -0000
@@ -168,7 +168,7 @@
 		return ERR_PTR(-ENODEV);
 	}
 
-	if (!request_region(IOBASE, 0x20, dev->name)) {
+	if (!request_region(IOBASE, 0x20, "apne")) {
 		free_netdev(dev);
 		return ERR_PTR(-EBUSY);
 	}
@@ -179,7 +179,7 @@
 		free_netdev(dev);
 		return ERR_PTR(err);
 	}
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (!err)
 		return dev;
 
@@ -310,15 +310,12 @@
     dev->base_addr = ioaddr;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, "apne", dev);
     if (i) return i;
 
-    for(i = 0; i < ETHER_ADDR_LEN; i++) {
-	printk(" %2.2x", SA_prom[i]);
-	dev->dev_addr[i] = SA_prom[i];
-    }
+    memcpy(dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-    printk("\n%s: %s found.\n", dev->name, name);
+    printk("\n");
 
     ei_status.name = name;
     ei_status.tx_start_page = start_page;
Index: kernel-2.5/drivers/net/e2100.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/e2100.c,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 e2100.c
--- kernel-2.5/drivers/net/e2100.c	19 Feb 2004 08:54:59 -0000	1.1.1.5
+++ kernel-2.5/drivers/net/e2100.c	13 Mar 2004 01:52:57 -0000
@@ -144,6 +144,7 @@
 	release_region(dev->base_addr, E21_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init e2100_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -158,7 +159,7 @@
 	err = do_e2100_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -168,6 +169,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init e21_probe1(struct net_device *dev, int ioaddr)
 {
@@ -175,7 +177,7 @@
 	unsigned char *station_addr = dev->dev_addr;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, E21_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, E21_IO_EXTENT, "e2100"))
 		return -EBUSY;
 
 	/* First check the station address for the Ctron prefix. */
@@ -205,8 +207,7 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	for (i = 0; i < 6; i++)
-		printk(" %02X", station_addr[i]);
+	printk("e2100: E2100 at %#3x", ioaddr);
 
 	if (dev->irq < 2) {
 		int irqlist[] = {15,11,10,12,5,9,3,4}, i;
@@ -438,7 +439,7 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_e2100_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_e21[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/es3210.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/es3210.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 es3210.c
--- kernel-2.5/drivers/net/es3210.c	19 Feb 2004 08:55:00 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/es3210.c	13 Mar 2004 00:25:39 -0000
@@ -161,6 +161,7 @@
 	release_region(dev->base_addr, ES_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init es_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -175,7 +176,7 @@
 	err = do_es_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -185,6 +186,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init es_probe1(struct net_device *dev, int ioaddr)
 {
@@ -221,9 +223,9 @@
 		goto out;
 	}
 
-	printk("es3210.c: ES3210 rev. %ld at %#x, node", eisa_id>>24, ioaddr);
+	printk("es3210.c: ES3210 rev. %ld at %#x", eisa_id>>24, ioaddr);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i)));
+		dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i);
 
 	/* Snarf the interrupt now. */
 	if (dev->irq == 0) {
@@ -434,7 +436,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_es_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_es3210[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/hp-plus.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/hp-plus.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 hp-plus.c
--- kernel-2.5/drivers/net/hp-plus.c	19 Feb 2004 08:55:01 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/hp-plus.c	13 Mar 2004 01:57:57 -0000
@@ -142,6 +142,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_plus_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -156,7 +157,7 @@
 	err = do_hpp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -166,6 +167,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Do the interesting part of the probe at a single address. */
 static int __init hpp_probe1(struct net_device *dev, int ioaddr)
@@ -176,7 +178,7 @@
 	int mem_start;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, "hp-plus"))
 		return -EBUSY;
 
 	/* Check for the HP+ signature, 50 48 0x 53. */
@@ -189,7 +191,7 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: %s at %#3x,", dev->name, name, ioaddr);
+	printk("hp-plus: %s at %#3x,", name, ioaddr);
 
 	/* Retrieve and checksum the station address. */
 	outw(MAC_Page, ioaddr + HP_PAGING);
@@ -456,7 +458,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hpp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_hpp[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/hp.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/hp.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 hp.c
--- kernel-2.5/drivers/net/hp.c	19 Feb 2004 08:55:01 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/hp.c	13 Mar 2004 02:00:32 -0000
@@ -106,6 +106,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -120,7 +121,7 @@
 	err = do_hp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -130,6 +131,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init hp_probe1(struct net_device *dev, int ioaddr)
 {
@@ -137,7 +139,7 @@
 	const char *name;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, "hp"))
 		return -EBUSY;
 
 	/* Check for the HP physical address, 08 00 09 xx xx xx. */
@@ -164,10 +166,10 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: %s (ID %02x) at %#3x,", dev->name, name, board_id, ioaddr);
+	printk("hp: %s (ID %02x) at %#3x", name, board_id, ioaddr);
 
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+		dev->dev_addr[i] = inb(ioaddr + i);
 
 	/* Snarf the interrupt now.  Someday this could be moved to open(). */
 	if (dev->irq < 2) {
@@ -182,7 +184,7 @@
 				outb_p(irqmap[irq] | HP_RUN, ioaddr + HP_CONFIGURE);
 				outb_p( 0x00 | HP_RUN, ioaddr + HP_CONFIGURE);
 				if (irq == probe_irq_off(cookie)		 /* It's a good IRQ line! */
-					&& request_irq (irq, ei_interrupt, 0, dev->name, dev) == 0) {
+					&& request_irq (irq, ei_interrupt, 0, "hp", dev) == 0) {
 					printk(" selecting IRQ %d.\n", irq);
 					dev->irq = *irqp;
 					break;
@@ -197,12 +199,14 @@
 	} else {
 		if (dev->irq == 2)
 			dev->irq = 9;
-		if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+		if ((retval = request_irq(dev->irq, ei_interrupt, 0, "hp", dev))) {
 			printk (" unable to get IRQ %d.\n", dev->irq);
 			goto out;
 		}
 	}
 
+	printk("\n");
+
 	/* Set the base address to point to the NIC, not the "real" base! */
 	dev->base_addr = ioaddr + NIC_OFFSET;
 	dev->open = &hp_open;
@@ -425,7 +429,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_hp[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/hydra.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/hydra.c,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 hydra.c
--- kernel-2.5/drivers/net/hydra.c	11 Mar 2004 02:55:27 -0000	1.1.1.5
+++ kernel-2.5/drivers/net/hydra.c	13 Mar 2004 00:32:58 -0000
@@ -123,10 +123,6 @@
 	return -EAGAIN;
     }
 
-    printk("%s: hydra at 0x%08lx, address %02x:%02x:%02x:%02x:%02x:%02x (hydra.c " HYDRA_VERSION ")\n", dev->name, z->resource.start,
-	dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
-
     ei_status.name = name;
     ei_status.tx_start_page = start_page;
     ei_status.stop_page = stop_page;
@@ -144,7 +140,7 @@
     dev->stop = &hydra_close;
     NS8390_init(dev, 0);
 
-    err = register_netdev(dev);
+    err = register_ei_netdev(dev);
     if (err) {
 	free_irq(IRQ_AMIGA_PORTS, dev);
 	free_netdev(dev);
@@ -235,6 +231,7 @@
 
 static int __init hydra_init_module(void)
 {
+    printk("hydra.c " HYDRA_VERSION "\n");
     return zorro_module_init(&hydra_driver);
 }
 
Index: kernel-2.5/drivers/net/lne390.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/lne390.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 lne390.c
--- kernel-2.5/drivers/net/lne390.c	19 Feb 2004 08:55:01 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/lne390.c	13 Mar 2004 00:33:37 -0000
@@ -112,7 +112,7 @@
 	SET_MODULE_OWNER(dev);
 
 	if (ioaddr > 0x1ff) {		/* Check a single specified location. */
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
 			return -EBUSY;
 		ret = lne390_probe1(dev, ioaddr);
 		if (ret)
@@ -131,7 +131,7 @@
 
 	/* EISA spec allows for up to 16 slots, but 8 is typical. */
 	for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000) {
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
 			continue;
 		if (lne390_probe1(dev, ioaddr) == 0)
 			return 0;
@@ -151,6 +151,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init lne390_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -165,7 +166,7 @@
 	err = do_lne390_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -175,6 +176,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init lne390_probe1(struct net_device *dev, int ioaddr)
 {
@@ -211,10 +213,9 @@
 	}
 #endif
 
-	printk("lne390.c: LNE390%X in EISA slot %d, address", 0xa+revision, ioaddr/0x1000);
+	printk("lne390.c: LNE390%X in EISA slot %d.\nlne3900.c: ", 0xa+revision, ioaddr/0x1000);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + LNE390_SA_PROM + i)));
-	printk(".\nlne390.c: ");
+		dev->dev_addr[i] = inb(ioaddr + LNE390_SA_PROM + i);
 
 	/* Snarf the interrupt now. CFG file has them all listed as `edge' with share=NO */
 	if (dev->irq == 0) {
@@ -228,7 +229,7 @@
 	}
 	printk(" IRQ %d,", dev->irq);
 
-	if ((ret = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+	if ((ret = request_irq(dev->irq, ei_interrupt, 0, "lne390", dev))) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return ret;
 	}
@@ -429,7 +430,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_lne390_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_lne[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/mac8390.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/mac8390.c,v
retrieving revision 1.1.1.8
diff -u -r1.1.1.8 mac8390.c
--- kernel-2.5/drivers/net/mac8390.c	19 Feb 2004 08:55:01 -0000	1.1.1.8
+++ kernel-2.5/drivers/net/mac8390.c	13 Mar 2004 00:34:42 -0000
@@ -273,16 +273,15 @@
 		   of where its memory and registers are. */
 
 		if (nubus_get_func_dir(ndev, &dir) == -1) {
-			printk(KERN_ERR "%s: Unable to get Nubus functional"
+			printk(KERN_ERR "mac8390: Unable to get Nubus functional"
 					" directory for slot %X!\n",
-			       dev->name, ndev->board->slot);
+			       ndev->board->slot);
 			continue;
 		}
 		
 		/* Get the MAC address */
 		if ((nubus_find_rsrc(&dir, NUBUS_RESID_MAC_ADDRESS, &ent)) == -1) {
-			printk(KERN_INFO "%s: Couldn't get MAC address!\n",
-					dev->name);
+			printk(KERN_INFO "mac8390: Couldn't get MAC address!\n");
 			continue;
 		} else {
 			nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
@@ -299,9 +298,9 @@
 		if (useresources[cardtype] == 1) {
 			nubus_rewinddir(&dir);
 			if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_BASEOS, &ent) == -1) {
-				printk(KERN_ERR "%s: Memory offset resource"
+				printk(KERN_ERR "mac8390: Memory offset resource"
 						" for slot %X not found!\n",
-				       dev->name, ndev->board->slot);
+				       ndev->board->slot);
 				continue;
 			}
 			nubus_get_rsrc_mem(&offset, &ent, 4);
@@ -310,10 +309,10 @@
 			dev->base_addr = dev->mem_start + 0x10000;
 			nubus_rewinddir(&dir);
 			if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_LENGTH, &ent) == -1) {
-				printk(KERN_INFO "%s: Memory length resource"
+				printk(KERN_INFO "mac8390: Memory length resource"
 						 " for slot %X not found"
 						 ", probing\n",
-				       dev->name, ndev->board->slot);
+				       ndev->board->slot);
 				offset = mac8390_memsize(dev->mem_start);
 				} else {
 					nubus_get_rsrc_mem(&offset, &ent, 4);
@@ -368,7 +367,7 @@
 
 	if (!ndev)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out;
 	return dev;
@@ -515,18 +514,9 @@
 	NS8390_init(dev, 0);
 
 	/* Good, done, now spit out some messages */
-	printk(KERN_INFO "%s: %s in slot %X (type %s)\n",
-		   dev->name, ndev->board->name, ndev->board->slot, cardname[type]);
-	printk(KERN_INFO "MAC ");
-	{
-		int i;
-		for (i = 0; i < 6; i++) {
-			printk("%2.2x", dev->dev_addr[i]);
-			if (i < 5)
-				printk(":");
-		}
-	}
-	printk(" IRQ %d, shared memory at %#lx-%#lx,  %d-bit access.\n",
+	printk(KERN_INFO "%s in slot %X (type %s)\n",
+		   ndev->board->name, ndev->board->slot, cardname[type]);
+	printk(KERN_INFO "IRQ %d, shared memory at %#lx-%#lx,  %d-bit access.\n",
 		   dev->irq, dev->mem_start, dev->mem_end-1, 
 		   access_bitmode?32:16);
 	return 0;
Index: kernel-2.5/drivers/net/ne.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ne.c,v
retrieving revision 1.1.1.7
diff -u -r1.1.1.7 ne.c
--- kernel-2.5/drivers/net/ne.c	11 Mar 2004 02:55:26 -0000	1.1.1.7
+++ kernel-2.5/drivers/net/ne.c	13 Mar 2004 00:35:03 -0000
@@ -203,6 +203,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -217,7 +218,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -227,6 +228,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_isapnp(struct net_device *dev)
 {
@@ -284,7 +286,7 @@
 	int reg0, ret;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, NE_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, NE_IO_EXTENT, "ne"))
 		return -EBUSY;
 
 	reg0 = inb_p(ioaddr);
@@ -472,13 +474,9 @@
 
 	dev->base_addr = ioaddr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
-		dev->name, name, ioaddr, dev->irq);
+	printk("\n");
 
 	ei_status.name = name;
 	ei_status.tx_start_page = start_page;
@@ -791,7 +789,7 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/ne2.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ne2.c,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 ne2.c
--- kernel-2.5/drivers/net/ne2.c	19 Feb 2004 08:55:02 -0000	1.1.1.5
+++ kernel-2.5/drivers/net/ne2.c	13 Mar 2004 00:35:26 -0000
@@ -284,6 +284,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -298,7 +299,7 @@
 	err = do_ne2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -308,6 +309,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int ne2_procinfo(char *buf, int slot, struct net_device *dev)
 {
@@ -368,7 +370,7 @@
 		irq = irqs[(POS & 0x60)>>5];
 	}
 
-	if (!request_region(base_addr, NE_IO_EXTENT, dev->name))
+	if (!request_region(base_addr, NE_IO_EXTENT, "ne2"))
 		return -EBUSY;
 
 #ifdef DEBUG
@@ -470,7 +472,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ne2", dev);
 	if (retval) {
 		printk (" unable to get IRQ %d (irqval=%d).\n", 
 				dev->irq, retval);
@@ -479,13 +481,9 @@
 
 	dev->base_addr = base_addr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
-			dev->name, name, base_addr, dev->irq);
+	printk("\n");
 
 	mca_set_adapter_procfn(slot, (MCA_ProcFn) ne2_procinfo, dev);
 
@@ -793,7 +791,7 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/ne2k-pci.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ne2k-pci.c,v
retrieving revision 1.1.1.10
diff -u -r1.1.1.10 ne2k-pci.c
--- kernel-2.5/drivers/net/ne2k-pci.c	19 Feb 2004 08:55:02 -0000	1.1.1.10
+++ kernel-2.5/drivers/net/ne2k-pci.c	13 Mar 2004 00:20:04 -0000
@@ -361,17 +361,12 @@
 	dev->ethtool_ops = &ne2k_pci_ethtool_ops;
 	NS8390_init(dev, 0);
 
-	i = register_netdev(dev);
+	memcpy(dev->dev_addr, SA_prom, 6);
+
+	i = register_ei_netdev(dev);
 	if (i)
 		goto err_out_free_netdev;
 
-	printk("%s: %s found at %#lx, IRQ %d, ",
-		   dev->name, pci_clone_list[chip_idx].name, ioaddr, dev->irq);
-	for(i = 0; i < 6; i++) {
-		printk("%2.2X%s", SA_prom[i], i == 5 ? ".\n": ":");
-		dev->dev_addr[i] = SA_prom[i];
-	}
-
 	return 0;
 
 err_out_free_netdev:
Index: kernel-2.5/drivers/net/ne2k_cbus.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ne2k_cbus.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 ne2k_cbus.c
--- kernel-2.5/drivers/net/ne2k_cbus.c	19 Feb 2004 08:55:02 -0000	1.1.1.3
+++ kernel-2.5/drivers/net/ne2k_cbus.c	13 Mar 2004 02:03:51 -0000
@@ -187,6 +187,7 @@
 	ne2k_cbus_destroy(dev);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -201,7 +202,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -211,6 +212,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_cbus(struct net_device *dev, const struct ne2k_cbus_hwinfo *hw, int ioaddr, int irq)
 {
@@ -263,7 +265,7 @@
 
 	for (rlist = hw->regionlist; rlist->range; rlist++)
 		if (!request_region(ioaddr + rlist->start,
-					rlist->range, dev->name)) {
+					rlist->range, "ne2k_cbus")) {
 			ret = -EBUSY;
 			goto err_out;
 		}
@@ -508,13 +510,10 @@
 
 	dev->base_addr = ioaddr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, hardware type %d(%s), using IRQ %d.\n",
-		   dev->name, name, ioaddr, hw->hwtype, hw->hwident, dev->irq);
+	printk("\nne2k_cbus: %s found at %#x, hardware type %d(%s), using IRQ %d.\n",
+		   name, ioaddr, hw->hwtype, hw->hwident, dev->irq);
 
 	ei_status.name = name;
 	ei_status.tx_start_page = start_page;
@@ -847,7 +846,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = hwtype[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/ne3210.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/ne3210.c,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 ne3210.c
--- kernel-2.5/drivers/net/ne3210.c	19 Feb 2004 08:55:02 -0000	1.1.1.5
+++ kernel-2.5/drivers/net/ne3210.c	13 Mar 2004 00:47:38 -0000
@@ -111,13 +111,13 @@
 	device->driver_data = dev;
 	ioaddr = edev->base_addr;
 
-	if (!request_region(ioaddr, NE3210_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, NE3210_IO_EXTENT, "ne3210")) {
 		retval = -EBUSY;
 		goto out;
 	}
 
 	if (!request_region(ioaddr + NE3210_CFG1,
-			    NE3210_CFG_EXTENT, dev->name)) {
+			    NE3210_CFG_EXTENT, "ne3210")) {
 		retval = -EBUSY;
 		goto out1;
 	}
@@ -133,14 +133,14 @@
 	printk("ne3210.c: NE3210 in EISA slot %d, media: %s, addr:",
 		edev->slot, ifmap[port_index]);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + NE3210_SA_PROM + i)));
+		dev->dev_addr[i] = inb(ioaddr + NE3210_SA_PROM + i);
 	
 
 	/* Snarf the interrupt now. CFG file has them all listed as `edge' with share=NO */
 	dev->irq = irq_map[(inb(ioaddr + NE3210_CFG2) >> 3) & 0x07];
 	printk(".\nne3210.c: using IRQ %d, ", dev->irq);
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ne3210", dev);
 	if (retval) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		goto out2;
@@ -163,7 +163,7 @@
 		}
 	}
 	
-	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, dev->name)) {
+	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, "ne3210")) {
 		printk ("ne3210.c: Unable to request shared memory at physical address %#lx\n",
 			phys_mem);
 		goto out3;
@@ -207,7 +207,7 @@
 	dev->stop = &ne3210_close;
 	dev->if_port = ifmap_val[port_index];
 
-	if ((retval = register_netdev (dev)))
+	if ((retval = register_ei_netdev (dev)))
 		goto out5;
 		
 	NS8390_init(dev, 0);
Index: kernel-2.5/drivers/net/oaknet.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/oaknet.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 oaknet.c
--- kernel-2.5/drivers/net/oaknet.c	19 Feb 2004 08:55:02 -0000	1.1.1.3
+++ kernel-2.5/drivers/net/oaknet.c	13 Mar 2004 00:50:27 -0000
@@ -164,18 +164,13 @@
 	ret = -EAGAIN;
 	if (request_irq(dev->irq, ei_interrupt, 0, name, dev)) {
 		printk("%s: unable to request interrupt %d.\n",
-		       dev->name, dev->irq);
+		       name, dev->irq);
 		goto out_region;
 	}
 
 	/* Tell the world about what and where we've found. */
 
-	printk("%s: %s at", dev->name, name);
-	for (i = 0; i < ETHER_ADDR_LEN; ++i) {
-		dev->dev_addr[i] = bip->bi_enetaddr[i];
-		printk("%c%.2x", (i ? ':' : ' '), dev->dev_addr[i]);
-	}
-	printk(", found at %#lx, using IRQ %d.\n", dev->base_addr, dev->irq);
+	memcpy(dev->dev_addr, bip->bi_enetaddr, ETHER_ADDR_LEN);
 
 	/* Set up some required driver fields and then we're done. */
 
@@ -194,7 +189,7 @@
 	dev->stop = oaknet_close;
 
 	NS8390_init(dev, FALSE);
-	ret = register_netdev(dev);
+	ret = register_ei_netdev(dev);
 	if (ret)
 		goto out_irq;
 	
Index: kernel-2.5/drivers/net/smc-mca.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/smc-mca.c,v
retrieving revision 1.1.1.7
diff -u -r1.1.1.7 smc-mca.c
--- kernel-2.5/drivers/net/smc-mca.c	19 Feb 2004 08:55:05 -0000	1.1.1.7
+++ kernel-2.5/drivers/net/smc-mca.c	13 Mar 2004 00:51:12 -0000
@@ -265,7 +265,7 @@
 		goto err_unclaim;
 	}
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, "smc-mca")) {
 		rc = -ENODEV;
 		goto err_unclaim;
 	}
@@ -276,7 +276,7 @@
 	printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x,", slot + 1, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set
 	 * and read the useful registers there.
@@ -327,7 +327,7 @@
 
 	NS8390_init(dev, 0);
 
-	rc = register_netdev(dev);
+	rc = register_ei_netdev(dev);
 	if (rc)
 		goto err_release_region;
 
Index: kernel-2.5/drivers/net/smc-ultra.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/smc-ultra.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 smc-ultra.c
--- kernel-2.5/drivers/net/smc-ultra.c	19 Feb 2004 08:55:05 -0000	1.1.1.6
+++ kernel-2.5/drivers/net/smc-ultra.c	13 Mar 2004 02:17:34 -0000
@@ -167,6 +167,7 @@
 	release_region(dev->base_addr - ULTRA_NIC_OFFSET, ULTRA_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ultra_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -181,7 +182,7 @@
 	err = do_ultra_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -191,6 +192,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ultra_probe1(struct net_device *dev, int ioaddr)
 {
@@ -204,7 +206,7 @@
 	unsigned char idreg = inb(ioaddr + 7);
 	unsigned char reg4 = inb(ioaddr + 4) & 0x7f;
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, "smc-ultra"))
 		return -EBUSY;
 
 	/* Check the ID nibble. */
@@ -229,10 +231,10 @@
 
 	model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";
 
-	printk("%s: %s at %#3x,", dev->name, model_name, ioaddr);
+	printk("smc-ultra: %s at %#3x", model_name, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
@@ -561,7 +563,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ultra_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ultra[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/smc-ultra32.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/smc-ultra32.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 smc-ultra32.c
--- kernel-2.5/drivers/net/smc-ultra32.c	19 Feb 2004 08:55:05 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/smc-ultra32.c	13 Mar 2004 02:17:55 -0000
@@ -141,7 +141,7 @@
 	}
 	if (base >= 0x9000)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -163,7 +163,7 @@
 	unsigned char reg4;
 	const char *ifmap[] = {"UTP No Link", "", "UTP/AUI", "UTP/BNC"};
 
-	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, "smc-ultra32"))
 		return -EBUSY;
 
 	if (inb(ioaddr + ULTRA32_IDPORT) == 0xff ||
@@ -202,10 +202,10 @@
 
 	model_name = "SMC Ultra32";
 
-	printk("%s: %s at 0x%X,", dev->name, model_name, ioaddr);
+	printk("smc-ultra32: %s at 0x%X,", model_name, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
Index: kernel-2.5/drivers/net/stnic.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/stnic.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 stnic.c
--- kernel-2.5/drivers/net/stnic.c	19 Feb 2004 08:55:05 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/stnic.c	13 Mar 2004 00:53:55 -0000
@@ -127,14 +127,14 @@
 
   /* Snarf the interrupt now.  There's no point in waiting since we cannot
      share and the board will usually be enabled. */
-  err = request_irq (dev->irq, ei_interrupt, 0, dev->name, dev);
+  err = request_irq (dev->irq, ei_interrupt, 0, "stnic", dev);
   if (err)  {
       printk (KERN_EMERG " unable to get IRQ %d.\n", dev->irq);
       free_netdev(dev);
       return err;
     }
 
-  ei_status.name = dev->name;
+  ei_status.name = "stnic";
   ei_status.word16 = 1;
 #ifdef __LITTLE_ENDIAN__ 
   ei_status.bigendian = 0;
@@ -152,7 +152,7 @@
 
   stnic_init (dev);
 
-  err = register_netdev(dev);
+  err = register_ei_netdev(dev);
   if (err) {
     free_irq(dev->irq, dev);
     free_netdev(dev);
Index: kernel-2.5/drivers/net/wd.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/wd.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 wd.c
--- kernel-2.5/drivers/net/wd.c	19 Feb 2004 08:55:07 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/wd.c	13 Mar 2004 02:18:23 -0000
@@ -131,6 +131,7 @@
 	release_region(dev->base_addr - WD_NIC_OFFSET, WD_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init wd_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -145,7 +146,7 @@
 	err = do_wd_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -155,6 +156,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init wd_probe1(struct net_device *dev, int ioaddr)
 {
@@ -182,9 +184,9 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: WD80x3 at %#3x,", dev->name, ioaddr);
+	printk("wd: WD80x3 at %#3x,", ioaddr);
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* The following PureData probe code was contributed by
 	   Mike Jagdis <jaggy@purplet.demon.co.uk>. Puredata does software
@@ -300,7 +302,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	i = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	i = request_irq(dev->irq, ei_interrupt, 0, "wd", dev);
 	if (i) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return i;
@@ -512,7 +514,7 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = mem_end[this_dev];
 		if (do_wd_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_wd[found++] = dev;
 				continue;
 			}
Index: kernel-2.5/drivers/net/zorro8390.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/zorro8390.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 zorro8390.c
--- kernel-2.5/drivers/net/zorro8390.c	11 Mar 2004 02:55:33 -0000	1.1.1.4
+++ kernel-2.5/drivers/net/zorro8390.c	13 Mar 2004 00:56:56 -0000
@@ -115,7 +115,7 @@
     if (!dev)
 	return -ENOMEM;
     SET_MODULE_OWNER(dev);
-    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, dev->name)) {
+    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, "zorro8390")) {
 	free_netdev(dev);
 	return -EBUSY;
     }
@@ -198,7 +198,7 @@
     dev->irq = IRQ_AMIGA_PORTS;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, "zorro8390", dev);
     if (i) return i;
 
     for(i = 0; i < ETHER_ADDR_LEN; i++) {
@@ -208,11 +208,6 @@
 	dev->dev_addr[i] = SA_prom[i];
     }
 
-    printk("%s: %s at 0x%08lx, Ethernet Address "
-	   "%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, name, board,
-	   dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	   dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
-
     ei_status.name = name;
     ei_status.tx_start_page = start_page;
     ei_status.stop_page = stop_page;
@@ -228,7 +223,7 @@
     dev->open = &zorro8390_open;
     dev->stop = &zorro8390_close;
     NS8390_init(dev, 0);
-    err = register_netdev(dev);
+    err = register_ei_netdev(dev);
     if (err)
 	free_irq(IRQ_AMIGA_PORTS, dev);
     return err;

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [3C501] Do not use dev->name before register_netdev
  2004-03-13  2:58 [8390] Do not use dev->name before register_netdev Herbert Xu
@ 2004-03-13  2:59 ` Herbert Xu
  2004-03-13  4:16 ` [8390] " Luis R. Rodriguez
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: Herbert Xu @ 2004-03-13  2:59 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 473 bytes --]

On Sat, Mar 13, 2004 at 01:58:59PM +1100, herbert wrote:
> 
> This patch replaces/removes all uses of dev->name in 8390 drivers.
> As it is, these drivers will do printks or allocate resources with
> the name eth%d.

Here is the same fix for 3c501.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: devname.1 --]
[-- Type: text/plain, Size: 2316 bytes --]

Index: kernel-2.5/drivers/net/3c501.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/3c501.c,v
retrieving revision 1.1.1.9
diff -u -r1.1.1.9 3c501.c
--- kernel-2.5/drivers/net/3c501.c	19 Feb 2004 08:54:53 -0000	1.1.1.9
+++ kernel-2.5/drivers/net/3c501.c	12 Mar 2004 22:49:08 -0000
@@ -182,20 +182,12 @@
 	} else if (io != 0) {
 		err = -ENXIO;		/* Don't probe at all. */
 	} else {
-		for (port = ports; *port && el1_probe1(dev, *port); port++)
-			;
-		if (!*port)
-			err = -ENODEV;
+		for (port = ports; *port; port++)
+			if (!(err = el1_probe1(dev, *port)))
+				break;
 	}
-	if (err)
-		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
-	return dev;
-out1:
-	release_region(dev->base_addr, EL1_IO_EXTENT);
-out:
+	if (err == 0)
+		return dev;
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
@@ -220,12 +212,13 @@
 	unsigned char station_addr[6];
 	int autoirq = 0;
 	int i;
+	int err;
 
 	/*
 	 *	Reserve I/O resource for exclusive use by this driver
 	 */
 
-	if (!request_region(ioaddr, EL1_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, EL1_IO_EXTENT, "3c501"))
 		return -ENODEV;
 
 	/*
@@ -295,16 +288,6 @@
 	if (autoirq)
 		dev->irq = autoirq;
 
-	printk(KERN_INFO "%s: %s EtherLink at %#lx, using %sIRQ %d.\n", dev->name, mname, dev->base_addr,
-			autoirq ? "auto":"assigned ", dev->irq);
-
-#ifdef CONFIG_IP_MULTICAST
-	printk(KERN_WARNING "WARNING: Use of the 3c501 in a multicast kernel is NOT recommended.\n");
-#endif
-
-	if (el_debug)
-		printk(KERN_DEBUG "%s", version);
-
 	memset(dev->priv, 0, sizeof(struct net_local));
 	lp=dev->priv;
 	spin_lock_init(&lp->lock);
@@ -321,6 +304,23 @@
 	dev->get_stats = &el1_get_stats;
 	dev->set_multicast_list = &set_multicast_list;
 	dev->ethtool_ops = &netdev_ethtool_ops;
+
+	err = register_netdev(dev);
+	if (err) {
+		release_region(ioaddr, EL1_IO_EXTENT);
+		return err;
+	}
+
+	printk(KERN_INFO "%s: %s EtherLink at %#lx, using %sIRQ %d.\n", dev->name, mname, dev->base_addr,
+			autoirq ? "auto":"assigned ", dev->irq);
+
+#ifdef CONFIG_IP_MULTICAST
+	printk(KERN_WARNING "WARNING: Use of the 3c501 in a multicast kernel is NOT recommended.\n");
+#endif
+
+	if (el_debug)
+		printk(KERN_DEBUG "%s", version);
+
 	return 0;
 }
 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [8390] Do not use dev->name before register_netdev
  2004-03-13  2:58 [8390] Do not use dev->name before register_netdev Herbert Xu
  2004-03-13  2:59 ` [3C501] " Herbert Xu
@ 2004-03-13  4:16 ` Luis R. Rodriguez
  2004-03-13  5:42   ` Herbert Xu
  2004-03-14  6:53 ` Herbert Xu
       [not found] ` <405C294D.5040508@pobox.com>
  3 siblings, 1 reply; 14+ messages in thread
From: Luis R. Rodriguez @ 2004-03-13  4:16 UTC (permalink / raw)
  To: Herbert Xu; +Cc: Jeff Garzik, netdev

On Sat, Mar 13, 2004 at 01:58:59PM +1100, Herbert Xu wrote:
> Hi:
> 
> This patch replaces/removes all uses of dev->name in 8390 drivers.
> As it is, these drivers will do printks or allocate resources with
> the name eth%d.

Why is using dev->name a bad thing? 

	Luis

-- 
GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84  A34A 6ADD 4937 E20A 525E

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [8390] Do not use dev->name before register_netdev
  2004-03-13  4:16 ` [8390] " Luis R. Rodriguez
@ 2004-03-13  5:42   ` Herbert Xu
  0 siblings, 0 replies; 14+ messages in thread
From: Herbert Xu @ 2004-03-13  5:42 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: Jeff Garzik, netdev

On Fri, Mar 12, 2004 at 11:16:34PM -0500, Luis R. Rodriguez wrote:
> On Sat, Mar 13, 2004 at 01:58:59PM +1100, Herbert Xu wrote:
> > 
> > This patch replaces/removes all uses of dev->name in 8390 drivers.
> > As it is, these drivers will do printks or allocate resources with
> > the name eth%d.
> 
> Why is using dev->name a bad thing? 

It's a bad thing if it's set to eth%d and a number hasn't been
allocated yet.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [8390] Do not use dev->name before register_netdev
  2004-03-13  2:58 [8390] Do not use dev->name before register_netdev Herbert Xu
  2004-03-13  2:59 ` [3C501] " Herbert Xu
  2004-03-13  4:16 ` [8390] " Luis R. Rodriguez
@ 2004-03-14  6:53 ` Herbert Xu
       [not found] ` <405C294D.5040508@pobox.com>
  3 siblings, 0 replies; 14+ messages in thread
From: Herbert Xu @ 2004-03-14  6:53 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 553 bytes --]

On Sat, Mar 13, 2004 at 01:58:59PM +1100, herbert wrote:
> 
> This patch replaces/removes all uses of dev->name in 8390 drivers.
> As it is, these drivers will do printks or allocate resources with
> the name eth%d.

I forgot to export register_ei_netdev for the modules.  Here is a
patch on top of the last one which does this.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 541 bytes --]

Index: kernel-2.5/drivers/net/8390.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/drivers/net/8390.c,v
retrieving revision 1.2
diff -u -r1.2 8390.c
--- kernel-2.5/drivers/net/8390.c	13 Mar 2004 02:27:30 -0000	1.2
+++ kernel-2.5/drivers/net/8390.c	14 Mar 2004 06:51:59 -0000
@@ -1148,6 +1148,7 @@
 EXPORT_SYMBOL(ei_tx_timeout);
 EXPORT_SYMBOL(NS8390_init);
 EXPORT_SYMBOL(__alloc_ei_netdev);
+EXPORT_SYMBOL(register_ei_netdev);
 
 #if defined(MODULE)
 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers
       [not found] ` <405C294D.5040508@pobox.com>
@ 2004-05-20 11:19   ` Herbert Xu
  2004-05-22  7:44     ` 2/x: [NETDRV] Use driver-specific name for resources Herbert Xu
  2004-05-27 19:22     ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Jeff Garzik
  0 siblings, 2 replies; 14+ messages in thread
From: Herbert Xu @ 2004-05-20 11:19 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

On Sat, Mar 20, 2004 at 06:21:49AM -0500, Jeff Garzik wrote:
> 
> I like the patch, but it is awfully big and wants splitting up.
> 
> Some early pieces to send (each as a separate patch):
> 
> * add #ifndef MODULE where appropriate

Thanks for the comments.

I'll split it up.  Here is the bit which conditionalises the
builtin-only probe functions.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 13134 bytes --]

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.1807  -> 1.1808 
#	drivers/net/eexpress.c	1.17    -> 1.18   
#	drivers/net/hp-plus.c	1.14    -> 1.15   
#	    drivers/net/wd.c	1.17    -> 1.18   
#	 drivers/net/lance.c	1.21    -> 1.22   
#	drivers/net/smc-ultra.c	1.20    -> 1.21   
#	    drivers/net/hp.c	1.12    -> 1.13   
#	drivers/net/ne2k_cbus.c	1.5     -> 1.6    
#	drivers/net/ne-h8300.c	1.1     -> 1.2    
#	 drivers/net/hp100.c	1.27    -> 1.28   
#	    drivers/net/ne.c	1.20    -> 1.21   
#	 drivers/net/3c523.c	1.14    -> 1.15   
#	drivers/net/ac3200.c	1.17    -> 1.18   
#	 drivers/net/3c503.c	1.18    -> 1.19   
#	 drivers/net/eepro.c	1.23    -> 1.24   
#	drivers/net/es3210.c	1.12    -> 1.13   
#	drivers/net/cs89x0.c	1.22    -> 1.23   
#	drivers/net/eth16i.c	1.17    -> 1.18   
#	 drivers/net/e2100.c	1.16    -> 1.17   
#	drivers/net/lne390.c	1.12    -> 1.13   
#	drivers/net/isa-skeleton.c	1.12    -> 1.13   
#	 drivers/net/ewrk3.c	1.28    -> 1.29   
#	   drivers/net/ne2.c	1.14    -> 1.15   
#	 drivers/net/3c505.c	1.28    -> 1.29   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 04/05/20	herbert@gondor.apana.org.au	1.1808
# [NETDRV] Conditionalise builtin-only probe function in ISA/MCA drivers.
# --------------------------------------------
#
diff -Nru a/drivers/net/3c503.c b/drivers/net/3c503.c
--- a/drivers/net/3c503.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/3c503.c	Thu May 20 21:16:23 2004
@@ -147,6 +147,7 @@
 	release_region(dev->base_addr, EL2_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init el2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -171,6 +172,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Probe for the Etherlink II card at I/O port base IOADDR,
    returning non-zero on success.  If found, set the station
diff -Nru a/drivers/net/3c505.c b/drivers/net/3c505.c
--- a/drivers/net/3c505.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/3c505.c	Thu May 20 21:16:23 2004
@@ -1614,6 +1614,7 @@
 	return err;
 }
 
+#ifndef MODULE
 struct net_device * __init elplus_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(elp_device));
@@ -1632,7 +1633,7 @@
 	return dev;
 }
 
-#ifdef MODULE
+#else
 static struct net_device *dev_3c505[ELP_MAX_CARDS];
 static int io[ELP_MAX_CARDS];
 static int irq[ELP_MAX_CARDS];
diff -Nru a/drivers/net/3c523.c b/drivers/net/3c523.c
--- a/drivers/net/3c523.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/3c523.c	Thu May 20 21:16:23 2004
@@ -585,6 +585,7 @@
 	release_region(dev->base_addr, ELMC_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init elmc_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct priv));
@@ -609,6 +610,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /**********************************************
  * init the chip (elmc-interrupt should be disabled?!)
diff -Nru a/drivers/net/ac3200.c b/drivers/net/ac3200.c
--- a/drivers/net/ac3200.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ac3200.c	Thu May 20 21:16:23 2004
@@ -130,6 +130,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init ac3200_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -154,6 +155,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ac_probe1(int ioaddr, struct net_device *dev)
 {
diff -Nru a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
--- a/drivers/net/cs89x0.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/cs89x0.c	Thu May 20 21:16:23 2004
@@ -261,7 +261,6 @@
 }
 
 __setup("cs89x0_media=", media_fn);
-#endif
 
 \f
 /* Check for a network adaptor of this type, and return '0' iff one exists.
@@ -318,6 +317,7 @@
 	printk(KERN_WARNING "cs89x0: no cs8900 or cs8920 detected.  Be sure to disable PnP with SETUP\n");
 	return ERR_PTR(err);
 }
+#endif
 
 static int
 readreg(struct net_device *dev, int portno)
diff -Nru a/drivers/net/e2100.c b/drivers/net/e2100.c
--- a/drivers/net/e2100.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/e2100.c	Thu May 20 21:16:23 2004
@@ -144,6 +144,7 @@
 	release_region(dev->base_addr, E21_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init e2100_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -168,6 +169,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init e21_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/eepro.c b/drivers/net/eepro.c
--- a/drivers/net/eepro.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/eepro.c	Thu May 20 21:16:23 2004
@@ -577,6 +577,7 @@
 	return -ENODEV;
 }
 
+#ifndef MODULE
 struct net_device * __init eepro_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct eepro_local));
@@ -603,6 +604,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static void __init printEEPROMInfo(short ioaddr, struct net_device *dev)
 {
diff -Nru a/drivers/net/eexpress.c b/drivers/net/eexpress.c
--- a/drivers/net/eexpress.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/eexpress.c	Thu May 20 21:16:23 2004
@@ -423,6 +423,7 @@
 	return -ENODEV;
 }
 
+#ifndef MODULE
 struct net_device * __init express_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct net_local));
@@ -443,6 +444,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /*
  * open and initialize the adapter, ready for use
diff -Nru a/drivers/net/es3210.c b/drivers/net/es3210.c
--- a/drivers/net/es3210.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/es3210.c	Thu May 20 21:16:23 2004
@@ -161,6 +161,7 @@
 	release_region(dev->base_addr, ES_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init es_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -185,6 +186,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init es_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/eth16i.c b/drivers/net/eth16i.c
--- a/drivers/net/eth16i.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/eth16i.c	Thu May 20 21:16:23 2004
@@ -458,6 +458,7 @@
 	return -ENODEV;
 }
 
+#ifndef MODULE
 struct net_device * __init eth16i_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct eth16i_local));
@@ -483,6 +484,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init eth16i_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
--- a/drivers/net/ewrk3.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ewrk3.c	Thu May 20 21:16:23 2004
@@ -341,6 +341,7 @@
     mdelay(1);\
 }
 
+#ifndef MODULE
 struct net_device * __init ewrk3_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct ewrk3_private));
@@ -364,6 +365,7 @@
 	return ERR_PTR(err);
 	
 }
+#endif
 
 static int __init ewrk3_probe1(struct net_device *dev, u_long iobase, int irq)
 {
diff -Nru a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
--- a/drivers/net/hp-plus.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/hp-plus.c	Thu May 20 21:16:23 2004
@@ -142,6 +142,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_plus_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -166,6 +167,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Do the interesting part of the probe at a single address. */
 static int __init hpp_probe1(struct net_device *dev, int ioaddr)
diff -Nru a/drivers/net/hp.c b/drivers/net/hp.c
--- a/drivers/net/hp.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/hp.c	Thu May 20 21:16:23 2004
@@ -106,6 +106,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -130,6 +131,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init hp_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/hp100.c b/drivers/net/hp100.c
--- a/drivers/net/hp100.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/hp100.c	Thu May 20 21:16:23 2004
@@ -386,6 +386,7 @@
 }
 
 
+#ifndef MODULE
 struct net_device * __init hp100_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct hp100_private));
@@ -420,6 +421,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init hp100_probe1(struct net_device *dev, int ioaddr,
 			       u_char bus, struct pci_dev *pci_dev)
diff -Nru a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
--- a/drivers/net/isa-skeleton.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/isa-skeleton.c	Thu May 20 21:16:23 2004
@@ -161,6 +161,7 @@
 	release_region(dev->base_addr, NETCARD_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init netcard_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(sizeof(struct net_local));
@@ -185,6 +186,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /*
  * This is the real probe routine. Linux has a history of friendly device
diff -Nru a/drivers/net/lance.c b/drivers/net/lance.c
--- a/drivers/net/lance.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/lance.c	Thu May 20 21:16:23 2004
@@ -432,6 +432,7 @@
 	return -ENODEV;
 }
 
+#ifndef MODULE
 struct net_device * __init lance_probe(int unit)
 {
 	struct net_device *dev = alloc_etherdev(0);
@@ -456,6 +457,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int options)
 {
diff -Nru a/drivers/net/lne390.c b/drivers/net/lne390.c
--- a/drivers/net/lne390.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/lne390.c	Thu May 20 21:16:23 2004
@@ -151,6 +151,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init lne390_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -175,6 +176,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init lne390_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/ne-h8300.c b/drivers/net/ne-h8300.c
--- a/drivers/net/ne-h8300.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ne-h8300.c	Thu May 20 21:16:23 2004
@@ -156,6 +156,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -187,6 +188,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/ne.c b/drivers/net/ne.c
--- a/drivers/net/ne.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ne.c	Thu May 20 21:16:23 2004
@@ -203,6 +203,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -227,6 +228,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_isapnp(struct net_device *dev)
 {
diff -Nru a/drivers/net/ne2.c b/drivers/net/ne2.c
--- a/drivers/net/ne2.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ne2.c	Thu May 20 21:16:23 2004
@@ -284,6 +284,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -308,6 +309,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int ne2_procinfo(char *buf, int slot, struct net_device *dev)
 {
diff -Nru a/drivers/net/ne2k_cbus.c b/drivers/net/ne2k_cbus.c
--- a/drivers/net/ne2k_cbus.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/ne2k_cbus.c	Thu May 20 21:16:23 2004
@@ -187,6 +187,7 @@
 	ne2k_cbus_destroy(dev);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -211,6 +212,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_cbus(struct net_device *dev, const struct ne2k_cbus_hwinfo *hw, int ioaddr, int irq)
 {
diff -Nru a/drivers/net/smc-ultra.c b/drivers/net/smc-ultra.c
--- a/drivers/net/smc-ultra.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/smc-ultra.c	Thu May 20 21:16:23 2004
@@ -178,6 +178,7 @@
 	release_region(dev->base_addr - ULTRA_NIC_OFFSET, ULTRA_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ultra_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -202,6 +203,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ultra_probe1(struct net_device *dev, int ioaddr)
 {
diff -Nru a/drivers/net/wd.c b/drivers/net/wd.c
--- a/drivers/net/wd.c	Thu May 20 21:16:23 2004
+++ b/drivers/net/wd.c	Thu May 20 21:16:23 2004
@@ -131,6 +131,7 @@
 	release_region(dev->base_addr - WD_NIC_OFFSET, WD_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init wd_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -155,6 +156,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init wd_probe1(struct net_device *dev, int ioaddr)
 {

^ permalink raw reply	[flat|nested] 14+ messages in thread

* 2/x: [NETDRV] Use driver-specific name for resources
  2004-05-20 11:19   ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Herbert Xu
@ 2004-05-22  7:44     ` Herbert Xu
  2004-05-29  8:41       ` 3/x: [NETDRV] Add register_ei_netdev Herbert Xu
  2004-05-27 19:22     ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Jeff Garzik
  1 sibling, 1 reply; 14+ messages in thread
From: Herbert Xu @ 2004-05-22  7:44 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 625 bytes --]

On Thu, May 20, 2004 at 09:19:37PM +1000, herbert wrote:
> 
> Thanks for the comments.
> 
> I'll split it up.  Here is the bit which conditionalises the
> builtin-only probe functions.

Here is the next part which uses a driver-specific name instead of
dev->name for resource allocations prior to netdev registration.
It also changes printks that are in direct response to errors in
resource allocations.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 33175 bytes --]

diff -Nru a/drivers/net/3c501.c b/drivers/net/3c501.c
--- a/drivers/net/3c501.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/3c501.c	Sat May 22 17:40:55 2004
@@ -225,7 +225,7 @@
 	 *	Reserve I/O resource for exclusive use by this driver
 	 */
 
-	if (!request_region(ioaddr, EL1_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, EL1_IO_EXTENT, DRV_NAME))
 		return -ENODEV;
 
 	/*
diff -Nru a/drivers/net/3c503.c b/drivers/net/3c503.c
--- a/drivers/net/3c503.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/3c503.c	Sat May 22 17:40:55 2004
@@ -184,10 +184,10 @@
     static unsigned version_printed;
     unsigned long vendor_id;
 
-    if (!request_region(ioaddr, EL2_IO_EXTENT, dev->name))
+    if (!request_region(ioaddr, EL2_IO_EXTENT, DRV_NAME))
 	return -EBUSY;
 
-    if (!request_region(ioaddr + 0x400, 8, dev->name)) {
+    if (!request_region(ioaddr + 0x400, 8, DRV_NAME)) {
 	retval = -EBUSY;
 	goto out;
     }
diff -Nru a/drivers/net/3c507.c b/drivers/net/3c507.c
--- a/drivers/net/3c507.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/3c507.c	Sat May 22 17:40:55 2004
@@ -373,7 +373,7 @@
 		init_ID_done = 1;
 	}
 
-	if (!request_region(ioaddr, EL16_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, EL16_IO_EXTENT, DRV_NAME))
 		return -ENODEV;
 
 	if ((inb(ioaddr) != '*') || (inb(ioaddr + 1) != '3') || 
@@ -392,7 +392,7 @@
 
 	irq = inb(ioaddr + IRQ_CONFIG) & 0x0f;
 
-	irqval = request_irq(irq, &el16_interrupt, 0, dev->name, dev);
+	irqval = request_irq(irq, &el16_interrupt, 0, DRV_NAME, dev);
 	if (irqval) {
 		printk ("unable to get IRQ %d (irqval=%d).\n", irq, irqval);
 		retval = -EAGAIN;
diff -Nru a/drivers/net/3c523.c b/drivers/net/3c523.c
--- a/drivers/net/3c523.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/3c523.c	Sat May 22 17:40:55 2004
@@ -445,7 +445,7 @@
 			slot = mca_find_adapter(ELMC_MCA_ID, slot + 1);
 			continue;
 		}
-		if (!request_region(dev->base_addr, ELMC_IO_EXTENT, dev->name)) {
+		if (!request_region(dev->base_addr, ELMC_IO_EXTENT, DRV_NAME)) {
 			slot = mca_find_adapter(ELMC_MCA_ID, slot + 1);
 			continue;
 		}
diff -Nru a/drivers/net/3c527.c b/drivers/net/3c527.c
--- a/drivers/net/3c527.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/3c527.c	Sat May 22 17:40:55 2004
@@ -434,10 +434,10 @@
 	 *	Grab the IRQ
 	 */
 
-	err = request_irq(dev->irq, &mc32_interrupt, SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev);
+	err = request_irq(dev->irq, &mc32_interrupt, SA_SHIRQ | SA_SAMPLE_RANDOM, DRV_NAME, dev);
 	if (err) {
 		release_region(dev->base_addr, MC32_IO_EXTENT);
-		printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, dev->irq);
+		printk(KERN_ERR "%s: unable to get IRQ %d.\n", DRV_NAME, dev->irq);
 		goto err_exit_ports;
 	}
 
diff -Nru a/drivers/net/82596.c b/drivers/net/82596.c
--- a/drivers/net/82596.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/82596.c	Sat May 22 17:40:55 2004
@@ -63,6 +63,8 @@
 static char version[] __initdata =
 	"82596.c $Revision: 1.5 $\n";
 
+#define DRV_NAME	"82596"
+
 /* DEBUG flags
  */
 
@@ -1191,7 +1193,7 @@
 		/* this is easy the ethernet interface can only be at 0x300 */
 		/* first check nothing is already registered here */
 
-		if (!request_region(ioaddr, I596_TOTAL_SIZE, dev->name)) {
+		if (!request_region(ioaddr, I596_TOTAL_SIZE, DRV_NAME)) {
 			printk(KERN_ERR "82596: IO address 0x%04x in use\n", ioaddr);
 			err = -EBUSY;
 			goto out;
diff -Nru a/drivers/net/ac3200.c b/drivers/net/ac3200.c
--- a/drivers/net/ac3200.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ac3200.c	Sat May 22 17:40:55 2004
@@ -39,6 +39,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME	"ac3200"
+
 /* Offsets from the base address. */
 #define AC_NIC_BASE	0x00
 #define AC_SA_PROM	0x16			/* The station address PROM. */
@@ -161,7 +163,7 @@
 {
 	int i, retval;
 
-	if (!request_region(ioaddr, AC_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, AC_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	if (inb_p(ioaddr + AC_ID_PORT) == 0xff) {
@@ -205,7 +207,7 @@
 		printk(", assigning");
 	}
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev);
 	if (retval) {
 		printk (" nothing! Unable to get IRQ %d.\n", dev->irq);
 		goto out1;
diff -Nru a/drivers/net/acenic.c b/drivers/net/acenic.c
--- a/drivers/net/acenic.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/acenic.c	Sat May 22 17:40:55 2004
@@ -85,6 +85,8 @@
 #include <asm/uaccess.h>
 
 
+#define DRV_NAME "acenic"
+
 #undef INDEX_DEBUG
 
 #ifdef CONFIG_ACENIC_OMIT_TIGON_I
@@ -1454,10 +1456,10 @@
 	}
 
 	ecode = request_irq(pdev->irq, ace_interrupt, SA_SHIRQ,
-			    dev->name, dev);
+			    DRV_NAME, dev);
 	if (ecode) {
 		printk(KERN_WARNING "%s: Requested IRQ %d is busy\n",
-		       dev->name, pdev->irq);
+		       DRV_NAME, pdev->irq);
 		goto init_error;
 	} else
 		dev->irq = pdev->irq;
diff -Nru a/drivers/net/apne.c b/drivers/net/apne.c
--- a/drivers/net/apne.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/apne.c	Sat May 22 17:40:55 2004
@@ -49,6 +49,8 @@
 
 /* ---- No user-serviceable parts below ---- */
 
+#define DRV_NAME "apne"
+
 #define NE_BASE	 (dev->base_addr)
 #define NE_CMD	 		0x00
 #define NE_DATAPORT		0x10            /* NatSemi-defined port window offset. */
@@ -168,7 +170,7 @@
 		return ERR_PTR(-ENODEV);
 	}
 
-	if (!request_region(IOBASE, 0x20, dev->name)) {
+	if (!request_region(IOBASE, 0x20, DRV_NAME)) {
 		free_netdev(dev);
 		return ERR_PTR(-EBUSY);
 	}
@@ -310,7 +312,7 @@
     dev->base_addr = ioaddr;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, DRV_NAME, dev);
     if (i) return i;
 
     for(i = 0; i < ETHER_ADDR_LEN; i++) {
diff -Nru a/drivers/net/at1700.c b/drivers/net/at1700.c
--- a/drivers/net/at1700.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/at1700.c	Sat May 22 17:40:55 2004
@@ -65,6 +65,8 @@
 static char version[] __initdata =
 	"at1700.c:v1.15 4/7/98  Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
 
+#define DRV_NAME "at1700"
+
 /* Tunable parameters. */
 
 /* When to switch from the 64-entry multicast filter to Rx-all-multicast. */
@@ -322,11 +324,11 @@
 	struct net_local *lp = netdev_priv(dev);
 
 #ifndef CONFIG_X86_PC9800
-	if (!request_region(ioaddr, AT1700_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, AT1700_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 #else
 	for (i = 0; i < 0x2000; i += 0x0200) {
-		if (!request_region(ioaddr + i, 2, dev->name)) {
+		if (!request_region(ioaddr + i, 2, DRV_NAME)) {
 			while (i > 0) {
 				i -= 0x0200;
 				release_region(ioaddr + i, 2);
@@ -542,7 +544,7 @@
 	lp->jumpered = is_fmv18x;
 	lp->mca_slot = slot;
 	/* Snarf the interrupt vector now. */
-	ret = request_irq(irq, &net_interrupt, 0, dev->name, dev);
+	ret = request_irq(irq, &net_interrupt, 0, DRV_NAME, dev);
 	if (ret) {
 		printk ("  AT1700 at %#3x is unusable due to a conflict on"
 				"IRQ %d.\n", ioaddr, irq);
diff -Nru a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
--- a/drivers/net/cs89x0.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/cs89x0.c	Sat May 22 17:40:55 2004
@@ -141,6 +141,8 @@
 static char version[] __initdata =
 "cs89x0.c: v2.4.3-pre1 Russell Nelson <nelson@crynwr.com>, Andrew Morton <andrewm@uow.edu.au>\n";
 
+#define DRV_NAME "cs89x0"
+
 /* First, a few definitions that the brave might change.
    A zero-terminated list of I/O addresses to be probed. Some special flags..
       Addr & 1 = Read back the address port, look for signature and reset
@@ -425,9 +427,9 @@
 
 	/* Grab the region so we can find another board if autoIRQ fails. */
 	/* WTF is going on here? */
-	if (!request_region(ioaddr & ~3, NETCARD_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr & ~3, NETCARD_IO_EXTENT, DRV_NAME)) {
 		printk(KERN_ERR "%s: request_region(0x%x, 0x%x) failed\n",
-				dev->name, ioaddr, NETCARD_IO_EXTENT);
+				DRV_NAME, ioaddr, NETCARD_IO_EXTENT);
 		retval = -EBUSY;
 		goto out1;
 	}
diff -Nru a/drivers/net/defxx.c b/drivers/net/defxx.c
--- a/drivers/net/defxx.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/defxx.c	Sat May 22 17:40:55 2004
@@ -219,6 +219,8 @@
 static char version[] __devinitdata =
 	"defxx.c:v1.06 2003/08/04  Lawrence V. Stefani and others\n";
 
+#define DRV_NAME "defxx"
+
 #define DYNAMIC_BUFFERS 1
 
 #define SKBUFF_RX_COPYBREAK 200
@@ -435,9 +437,9 @@
 
 	bp = dev->priv;
 
-	if (!request_region (ioaddr, pdev ? PFI_K_CSR_IO_LEN : PI_ESIC_K_CSR_IO_LEN, dev->name)) {
+	if (!request_region (ioaddr, pdev ? PFI_K_CSR_IO_LEN : PI_ESIC_K_CSR_IO_LEN, DRV_NAME)) {
 		printk (KERN_ERR "%s: Cannot reserve I/O resource 0x%x @ 0x%lx, aborting\n",
-			dev->name, PFI_K_CSR_IO_LEN, ioaddr);
+			DRV_NAME, PFI_K_CSR_IO_LEN, ioaddr);
 		err = -EBUSY;
 		goto err_out;
 	}
diff -Nru a/drivers/net/e2100.c b/drivers/net/e2100.c
--- a/drivers/net/e2100.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/e2100.c	Sat May 22 17:40:55 2004
@@ -51,6 +51,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "e2100"
+
 static int e21_probe_list[] = {0x300, 0x280, 0x380, 0x220, 0};
 
 /* Offsets from the base_addr.
@@ -177,7 +179,7 @@
 	unsigned char *station_addr = dev->dev_addr;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, E21_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, E21_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	/* First check the station address for the Ctron prefix. */
diff -Nru a/drivers/net/eepro.c b/drivers/net/eepro.c
--- a/drivers/net/eepro.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/eepro.c	Sat May 22 17:40:55 2004
@@ -151,6 +151,8 @@
 #include <asm/io.h>
 #include <asm/dma.h>
 
+#define DRV_NAME "eepro"
+
 #define compat_dev_kfree_skb( skb, mode ) dev_kfree_skb( (skb) )
 /* I had reports of looong delays with SLOW_DOWN defined as udelay(2) */
 #define SLOW_DOWN inb(0x80)
@@ -747,7 +749,7 @@
 	int ioaddr = dev->base_addr;
 
 	/* Grab the region so we can find another board if autoIRQ fails. */
-	if (!request_region(ioaddr, EEPRO_IO_EXTENT, dev->name)) { 
+	if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { 
 		if (!autoprobe)
 			printk(KERN_WARNING "EEPRO: io-port 0x%04x in use \n",
 				ioaddr);
diff -Nru a/drivers/net/eth16i.c b/drivers/net/eth16i.c
--- a/drivers/net/eth16i.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/eth16i.c	Sat May 22 17:40:55 2004
@@ -493,7 +493,7 @@
 	int retval;
 
 	/* Let's grab the region */
-	if (!request_region(ioaddr, ETH16I_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ETH16I_IO_EXTENT, cardname))
 		return -EBUSY;
 
 	/*
@@ -540,9 +540,9 @@
 
 	/* Try to obtain interrupt vector */
 
-	if ((retval = request_irq(dev->irq, (void *)&eth16i_interrupt, 0, dev->name, dev))) {
-		printk(KERN_WARNING "%s: %s at %#3x, but is unusable due conflicting IRQ %d.\n", 
-		       dev->name, cardname, ioaddr, dev->irq);
+	if ((retval = request_irq(dev->irq, (void *)&eth16i_interrupt, 0, cardname, dev))) {
+		printk(KERN_WARNING "%s at %#3x, but is unusable due to conflicting IRQ %d.\n", 
+		       cardname, ioaddr, dev->irq);
 		goto out;
 	}
 
diff -Nru a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
--- a/drivers/net/ewrk3.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ewrk3.c	Sat May 22 17:40:55 2004
@@ -1271,7 +1271,7 @@
 	for (; (i < maxSlots) && (dev != NULL);
 	     iobase += EWRK3_IOP_INC, i++)
 	{
-		if (request_region(iobase, EWRK3_TOTAL_SIZE, dev->name)) {
+		if (request_region(iobase, EWRK3_TOTAL_SIZE, DRV_NAME)) {
 			if (DevicePresent(iobase) == 0) {
 				int irq = dev->irq;
 				ret = ewrk3_hw_init(dev, iobase);
@@ -1312,7 +1312,7 @@
 
 	for (i = 1; (i < maxSlots) && (dev != NULL); i++, iobase += EISA_SLOT_INC) {
 		if (EISA_signature(name, EISA_ID) == 0) {
-			if (request_region(iobase, EWRK3_TOTAL_SIZE, dev->name) &&
+			if (request_region(iobase, EWRK3_TOTAL_SIZE, DRV_NAME) &&
 			    DevicePresent(iobase) == 0) {
 				int irq = dev->irq;
 				ret = ewrk3_hw_init(dev, iobase);
diff -Nru a/drivers/net/fmv18x.c b/drivers/net/fmv18x.c
--- a/drivers/net/fmv18x.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/fmv18x.c	Sat May 22 17:40:55 2004
@@ -57,6 +57,8 @@
 #include <asm/io.h>
 #include <asm/dma.h>
 
+#define DRV_NAME "fmv18x"
+
 static unsigned fmv18x_probe_list[] __initdata = {
 	0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x300, 0x340, 0
 };
@@ -192,7 +194,7 @@
 	   That means we have to be careful with the register values we probe for.
 	   */
 
-	if (!request_region(ioaddr, FMV18X_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, FMV18X_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	dev->irq = irq;
@@ -224,7 +226,7 @@
 	}
 
 	/* Snarf the interrupt vector now. */
-	retval = request_irq(dev->irq, &net_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, &net_interrupt, 0, DRV_NAME, dev);
 	if (retval) {
 		printk ("FMV-18x found at %#3x, but it's unusable due to a conflict on"
 				"IRQ %d.\n", ioaddr, dev->irq);
diff -Nru a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
--- a/drivers/net/forcedeth.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/forcedeth.c	Sat May 22 17:40:55 2004
@@ -81,6 +81,7 @@
  * superfluous timer interrupts from the nic.
  */
 #define FORCEDETH_VERSION		"0.25"
+#define DRV_NAME			"forcedeth"
 
 #include <linux/module.h>
 #include <linux/types.h>
@@ -1424,7 +1425,7 @@
 
 	pci_set_master(pci_dev);
 
-	err = pci_request_regions(pci_dev, dev->name);
+	err = pci_request_regions(pci_dev, DRV_NAME);
 	if (err < 0)
 		goto out_disable;
 
diff -Nru a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
--- a/drivers/net/hp-plus.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/hp-plus.c	Sat May 22 17:40:55 2004
@@ -37,6 +37,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "hp-plus"
+
 /* A zero-terminated list of I/O addresses to be probed. */
 static unsigned int hpplus_portlist[] __initdata =
 {0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0};
@@ -178,7 +180,7 @@
 	int mem_start;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	/* Check for the HP+ signature, 50 48 0x 53. */
diff -Nru a/drivers/net/hp.c b/drivers/net/hp.c
--- a/drivers/net/hp.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/hp.c	Sat May 22 17:40:55 2004
@@ -37,6 +37,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "hp"
+
 /* A zero-terminated list of I/O addresses to be probed. */
 static unsigned int hppclan_portlist[] __initdata =
 { 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240, 0};
@@ -139,7 +141,7 @@
 	const char *name;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	/* Check for the HP physical address, 08 00 09 xx xx xx. */
@@ -184,7 +186,7 @@
 				outb_p(irqmap[irq] | HP_RUN, ioaddr + HP_CONFIGURE);
 				outb_p( 0x00 | HP_RUN, ioaddr + HP_CONFIGURE);
 				if (irq == probe_irq_off(cookie)		 /* It's a good IRQ line! */
-					&& request_irq (irq, ei_interrupt, 0, dev->name, dev) == 0) {
+					&& request_irq (irq, ei_interrupt, 0, DRV_NAME, dev) == 0) {
 					printk(" selecting IRQ %d.\n", irq);
 					dev->irq = *irqp;
 					break;
@@ -199,7 +201,7 @@
 	} else {
 		if (dev->irq == 2)
 			dev->irq = 9;
-		if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+		if ((retval = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev))) {
 			printk (" unable to get IRQ %d.\n", dev->irq);
 			goto out;
 		}
diff -Nru a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c
--- a/drivers/net/ibmlana.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ibmlana.c	Sat May 22 17:40:55 2004
@@ -97,6 +97,8 @@
 
 #undef DEBUG
 
+#define DRV_NAME "ibmlana"
+
 /* ------------------------------------------------------------------------
  * global static data - not more since we can handle multiple boards and
  * have to pack all state info into the device struct!
@@ -951,8 +953,8 @@
 	printk(KERN_INFO "%s: IBM LAN Adapter/A found in slot %d\n", dev->name, slot + 1);
 
 	/* try to obtain I/O range */
-	if (!request_region(iobase, IBM_LANA_IORANGE, dev->name)) {
-		printk(KERN_ERR "%s: cannot allocate I/O range at %#x!\n", dev->name, iobase);
+	if (!request_region(iobase, IBM_LANA_IORANGE, DRV_NAME)) {
+		printk(KERN_ERR "%s: cannot allocate I/O range at %#x!\n", DRV_NAME, iobase);
 		startslot = slot + 1;
 		return -EBUSY;
 	}
diff -Nru a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
--- a/drivers/net/jazzsonic.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/jazzsonic.c	Sat May 22 17:40:55 2004
@@ -37,6 +37,8 @@
 #include <asm/jazz.h>
 #include <asm/jazzdma.h>
 
+#define DRV_NAME "jazzsonic"
+
 #define SREGS_PAD(n)    u16 n;
 
 #include "sonic.h"
@@ -151,7 +153,7 @@
 	int err = -ENODEV;
 	int i;
 
-	if (!request_region(base_addr, 0x100, dev->name))
+	if (!request_region(base_addr, 0x100, DRV_NAME))
 		return -EBUSY;
 	/*
 	 * get the Silicon Revision ID. If this is one of the known
diff -Nru a/drivers/net/lne390.c b/drivers/net/lne390.c
--- a/drivers/net/lne390.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/lne390.c	Sat May 22 17:40:55 2004
@@ -49,6 +49,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "lne390"
+
 static int lne390_probe1(struct net_device *dev, int ioaddr);
 
 static int lne390_open(struct net_device *dev);
@@ -112,7 +114,7 @@
 	SET_MODULE_OWNER(dev);
 
 	if (ioaddr > 0x1ff) {		/* Check a single specified location. */
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, DRV_NAME))
 			return -EBUSY;
 		ret = lne390_probe1(dev, ioaddr);
 		if (ret)
@@ -131,7 +133,7 @@
 
 	/* EISA spec allows for up to 16 slots, but 8 is typical. */
 	for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000) {
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, DRV_NAME))
 			continue;
 		if (lne390_probe1(dev, ioaddr) == 0)
 			return 0;
@@ -230,7 +232,7 @@
 	}
 	printk(" IRQ %d,", dev->irq);
 
-	if ((ret = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+	if ((ret = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev))) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return ret;
 	}
diff -Nru a/drivers/net/lp486e.c b/drivers/net/lp486e.c
--- a/drivers/net/lp486e.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/lp486e.c	Sat May 22 17:40:55 2004
@@ -75,6 +75,8 @@
 #include <asm/io.h>
 #include <asm/dma.h>
 
+#define DRV_NAME "lp486e"
+
 /* debug print flags */
 #define LOG_SRCDST    0x80000000
 #define LOG_STATINT   0x40000000
@@ -970,7 +972,7 @@
 		return -ENODEV;
 	probed++;
 
-	if (!request_region(IOADDR, LP486E_TOTAL_SIZE, dev->name)) {
+	if (!request_region(IOADDR, LP486E_TOTAL_SIZE, DRV_NAME)) {
 		printk(KERN_ERR "lp486e: IO address 0x%x in use\n", IOADDR);
 		return -EBUSY;
 	}
diff -Nru a/drivers/net/natsemi.c b/drivers/net/natsemi.c
--- a/drivers/net/natsemi.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/natsemi.c	Sat May 22 17:40:55 2004
@@ -766,7 +766,7 @@
 	SET_MODULE_OWNER(dev);
 	SET_NETDEV_DEV(dev, &pdev->dev);
 
-	i = pci_request_regions(pdev, dev->name);
+	i = pci_request_regions(pdev, DRV_NAME);
 	if (i)
 		goto err_pci_request_regions;
 
diff -Nru a/drivers/net/ne-h8300.c b/drivers/net/ne-h8300.c
--- a/drivers/net/ne-h8300.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ne-h8300.c	Sat May 22 17:40:55 2004
@@ -34,6 +34,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "ne-h8300"
+
 /* Some defines that people can play with if so inclined. */
 
 /* Do we perform extra sanity checks on stuff ? */
@@ -202,7 +204,7 @@
 	struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
 	unsigned char bus_width;
 
-	if (!request_region(ioaddr, NE_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, NE_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	reg0 = inb_p(ioaddr);
diff -Nru a/drivers/net/ne.c b/drivers/net/ne.c
--- a/drivers/net/ne.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ne.c	Sat May 22 17:40:55 2004
@@ -55,6 +55,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "ne"
+
 /* Some defines that people can play with if so inclined. */
 
 /* Do we support clones that don't adhere to 14,15 of the SAprom ? */
@@ -286,7 +288,7 @@
 	int reg0, ret;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, NE_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, NE_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	reg0 = inb_p(ioaddr);
diff -Nru a/drivers/net/ne2.c b/drivers/net/ne2.c
--- a/drivers/net/ne2.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ne2.c	Sat May 22 17:40:55 2004
@@ -82,6 +82,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "ne2"
+
 /* Some defines that people can play with if so inclined. */
 
 /* Do we perform extra sanity checks on stuff ? */
@@ -370,7 +372,7 @@
 		irq = irqs[(POS & 0x60)>>5];
 	}
 
-	if (!request_region(base_addr, NE_IO_EXTENT, dev->name))
+	if (!request_region(base_addr, NE_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 #ifdef DEBUG
@@ -472,7 +474,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev);
 	if (retval) {
 		printk (" unable to get IRQ %d (irqval=%d).\n", 
 				dev->irq, retval);
diff -Nru a/drivers/net/ne2k_cbus.c b/drivers/net/ne2k_cbus.c
--- a/drivers/net/ne2k_cbus.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ne2k_cbus.c	Sat May 22 17:40:55 2004
@@ -37,6 +37,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "ne2k_cbus"
+
 /* Some defines that people can play with if so inclined. */
 
 /* Do we support clones that don't adhere to 14,15 of the SAprom ? */
@@ -265,7 +267,7 @@
 
 	for (rlist = hw->regionlist; rlist->range; rlist++)
 		if (!request_region(ioaddr + rlist->start,
-					rlist->range, dev->name)) {
+					rlist->range, DRV_NAME)) {
 			ret = -EBUSY;
 			goto err_out;
 		}
diff -Nru a/drivers/net/ne3210.c b/drivers/net/ne3210.c
--- a/drivers/net/ne3210.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ne3210.c	Sat May 22 17:40:55 2004
@@ -45,6 +45,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "ne3210"
+
 static int ne3210_open(struct net_device *dev);
 static int ne3210_close(struct net_device *dev);
 
@@ -111,13 +113,13 @@
 	device->driver_data = dev;
 	ioaddr = edev->base_addr;
 
-	if (!request_region(ioaddr, NE3210_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, NE3210_IO_EXTENT, DRV_NAME)) {
 		retval = -EBUSY;
 		goto out;
 	}
 
 	if (!request_region(ioaddr + NE3210_CFG1,
-			    NE3210_CFG_EXTENT, dev->name)) {
+			    NE3210_CFG_EXTENT, DRV_NAME)) {
 		retval = -EBUSY;
 		goto out1;
 	}
@@ -140,7 +142,7 @@
 	dev->irq = irq_map[(inb(ioaddr + NE3210_CFG2) >> 3) & 0x07];
 	printk(".\nne3210.c: using IRQ %d, ", dev->irq);
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev);
 	if (retval) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		goto out2;
@@ -163,7 +165,7 @@
 		}
 	}
 	
-	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, dev->name)) {
+	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, DRV_NAME)) {
 		printk ("ne3210.c: Unable to request shared memory at physical address %#lx\n",
 			phys_mem);
 		goto out3;
diff -Nru a/drivers/net/ni52.c b/drivers/net/ni52.c
--- a/drivers/net/ni52.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ni52.c	Sat May 22 17:40:55 2004
@@ -124,6 +124,8 @@
 
 #include "ni52.h"
 
+#define DRV_NAME "ni52"
+
 #define DEBUG       /* debug on */
 #define SYSBUSVAL 1 /* 8 Bit */
 
@@ -424,7 +426,7 @@
 	dev->mem_start = memstart;
 	dev->mem_end = memend;
 
-	if (!request_region(ioaddr, NI52_TOTAL_SIZE, dev->name))
+	if (!request_region(ioaddr, NI52_TOTAL_SIZE, DRV_NAME))
 		return -EBUSY;
 
 	if( !(inb(ioaddr+NI52_MAGIC1) == NI52_MAGICVAL1) ||
diff -Nru a/drivers/net/ns83820.c b/drivers/net/ns83820.c
--- a/drivers/net/ns83820.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/ns83820.c	Sat May 22 17:40:55 2004
@@ -113,6 +113,8 @@
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
+#define DRV_NAME "ns83820"
+
 /* Global parameters.  See MODULE_PARM near the bottom. */
 static int ihr = 2;
 static int reset_phy = 0;
@@ -1851,7 +1853,7 @@
 		0);
 
 	err = request_irq(pci_dev->irq, ns83820_irq, SA_SHIRQ,
-			  ndev->name, ndev);
+			  DRV_NAME, ndev);
 	if (err) {
 		printk(KERN_INFO "ns83820: unable to register irq %d\n",
 			pci_dev->irq);
diff -Nru a/drivers/net/oaknet.c b/drivers/net/oaknet.c
--- a/drivers/net/oaknet.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/oaknet.c	Sat May 22 17:40:55 2004
@@ -164,7 +164,7 @@
 	ret = -EAGAIN;
 	if (request_irq(dev->irq, ei_interrupt, 0, name, dev)) {
 		printk("%s: unable to request interrupt %d.\n",
-		       dev->name, dev->irq);
+		       name, dev->irq);
 		goto out_region;
 	}
 
diff -Nru a/drivers/net/r8169.c b/drivers/net/r8169.c
--- a/drivers/net/r8169.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/r8169.c	Sat May 22 17:40:55 2004
@@ -716,7 +716,7 @@
 		goto err_out_disable;
 	}
 
-	rc = pci_request_regions(pdev, dev->name);
+	rc = pci_request_regions(pdev, MODULENAME);
 	if (rc) {
 		printk(KERN_ERR PFX "%s: Could not request regions.\n", pdev->slot_name);
 		goto err_out_disable;
diff -Nru a/drivers/net/smc-mca.c b/drivers/net/smc-mca.c
--- a/drivers/net/smc-mca.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/smc-mca.c	Sat May 22 17:40:55 2004
@@ -51,6 +51,8 @@
 #include "8390.h"
 #include "smc-mca.h"
 
+#define DRV_NAME "smc-mca"
+
 static int ultramca_open(struct net_device *dev);
 static void ultramca_reset_8390(struct net_device *dev);
 static void ultramca_get_8390_hdr(struct net_device *dev,
@@ -265,7 +267,7 @@
 		goto err_unclaim;
 	}
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, DRV_NAME)) {
 		rc = -ENODEV;
 		goto err_unclaim;
 	}
diff -Nru a/drivers/net/smc-ultra.c b/drivers/net/smc-ultra.c
--- a/drivers/net/smc-ultra.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/smc-ultra.c	Sat May 22 17:40:55 2004
@@ -72,6 +72,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "smc-ultra"
+
 /* A zero-terminated list of I/O addresses to be probed. */
 static unsigned int ultra_portlist[] __initdata =
 {0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380, 0};
@@ -217,7 +219,7 @@
 	unsigned char idreg = inb(ioaddr + 7);
 	unsigned char reg4 = inb(ioaddr + 4) & 0x7f;
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	/* Check the ID nibble. */
diff -Nru a/drivers/net/smc-ultra32.c b/drivers/net/smc-ultra32.c
--- a/drivers/net/smc-ultra32.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/smc-ultra32.c	Sat May 22 17:40:55 2004
@@ -61,6 +61,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "smc-ultra32"
+
 static int ultra32_probe1(struct net_device *dev, int ioaddr);
 static int ultra32_open(struct net_device *dev);
 static void ultra32_reset_8390(struct net_device *dev);
@@ -163,7 +165,7 @@
 	unsigned char reg4;
 	const char *ifmap[] = {"UTP No Link", "", "UTP/AUI", "UTP/BNC"};
 
-	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	if (inb(ioaddr + ULTRA32_IDPORT) == 0xff ||
diff -Nru a/drivers/net/smc9194.c b/drivers/net/smc9194.c
--- a/drivers/net/smc9194.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/smc9194.c	Sat May 22 17:40:55 2004
@@ -78,6 +78,8 @@
 
 #include "smc9194.h"
 
+#define DRV_NAME "smc9194"
+
 /*------------------------------------------------------------------------
  .
  . Configuration options, for the experienced user to change.
@@ -843,7 +845,7 @@
 	word memory_cfg_register;
 
 	/* Grab the region so that no one else tries to probe our ioports. */
-	if (!request_region(ioaddr, SMC_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
 
 	dev->irq = irq;
@@ -1001,9 +1003,9 @@
 	memset(dev->priv, 0, sizeof(struct smc_local));
 
 	/* Grab the IRQ */
-      	retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev);
+      	retval = request_irq(dev->irq, &smc_interrupt, 0, DRV_NAME, dev);
       	if (retval) {
-		printk("%s: unable to get IRQ %d (irqval=%d).\n", dev->name,
+		printk("%s: unable to get IRQ %d (irqval=%d).\n", DRV_NAME,
 			dev->irq, retval);
   	  	goto err_out;
       	}
diff -Nru a/drivers/net/starfire.c b/drivers/net/starfire.c
--- a/drivers/net/starfire.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/starfire.c	Sat May 22 17:40:55 2004
@@ -880,7 +880,7 @@
 
 	irq = pdev->irq;
 
-	if (pci_request_regions (pdev, dev->name)) {
+	if (pci_request_regions (pdev, DRV_NAME)) {
 		printk(KERN_ERR DRV_NAME " %d: cannot reserve PCI resources, aborting\n", card_idx);
 		goto err_out_free_netdev;
 	}
diff -Nru a/drivers/net/stnic.c b/drivers/net/stnic.c
--- a/drivers/net/stnic.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/stnic.c	Sat May 22 17:40:55 2004
@@ -28,6 +28,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "stnic"
+
 #define byte	unsigned char
 #define half	unsigned short
 #define word	unsigned int
@@ -130,7 +132,7 @@
 
   /* Snarf the interrupt now.  There's no point in waiting since we cannot
      share and the board will usually be enabled. */
-  err = request_irq (dev->irq, ei_interrupt, 0, dev->name, dev);
+  err = request_irq (dev->irq, ei_interrupt, 0, DRV_NAME, dev);
   if (err)  {
       printk (KERN_EMERG " unable to get IRQ %d.\n", dev->irq);
       free_netdev(dev);
diff -Nru a/drivers/net/sun3_82586.c b/drivers/net/sun3_82586.c
--- a/drivers/net/sun3_82586.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/sun3_82586.c	Sat May 22 17:40:55 2004
@@ -53,6 +53,8 @@
 
 #include "sun3_82586.h"
 
+#define DRV_NAME "sun3_82586"
+
 #define DEBUG       /* debug on */
 #define SYSBUSVAL 0 /* 16 Bit */
 #define SUN3_82586_TOTAL_SIZE	PAGE_SIZE
@@ -336,7 +338,7 @@
 {
 	int i, size, retval;
 
-	if (!request_region(ioaddr, SUN3_82586_TOTAL_SIZE, dev->name))
+	if (!request_region(ioaddr, SUN3_82586_TOTAL_SIZE, DRV_NAME))
 		return -EBUSY;
 
 	/* copy in the ethernet address from the prom */
diff -Nru a/drivers/net/sungem.c b/drivers/net/sungem.c
--- a/drivers/net/sungem.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/sungem.c	Sat May 22 17:40:55 2004
@@ -2717,7 +2717,7 @@
 
 	gp = dev->priv;
 
-	err = pci_request_regions(pdev, dev->name);
+	err = pci_request_regions(pdev, DRV_NAME);
 	if (err) {
 		printk(KERN_ERR PFX "Cannot obtain PCI resources, "
 		       "aborting.\n");
diff -Nru a/drivers/net/sunhme.c b/drivers/net/sunhme.c
--- a/drivers/net/sunhme.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/sunhme.c	Sat May 22 17:40:55 2004
@@ -68,6 +68,8 @@
 #include "sunhme.h"
 
 
+#define DRV_NAME "sunhme"
+
 static int macaddr[6];
 
 /* accept MAC address of the form macaddr=0x08,0x00,0x20,0x30,0x40,0x50 */
@@ -3085,7 +3087,7 @@
 		printk(KERN_ERR "happymeal(PCI): Cannot find proper PCI device base address.\n");
 		goto err_out_clear_quattro;
 	}
-	if (pci_request_regions(pdev, dev->name)) {
+	if (pci_request_regions(pdev, DRV_NAME)) {
 		printk(KERN_ERR "happymeal(PCI): Cannot obtain PCI resources, "
 		       "aborting.\n");
 		goto err_out_clear_quattro;
diff -Nru a/drivers/net/wd.c b/drivers/net/wd.c
--- a/drivers/net/wd.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/wd.c	Sat May 22 17:40:55 2004
@@ -43,6 +43,8 @@
 
 #include "8390.h"
 
+#define DRV_NAME "wd"
+
 /* A zero-terminated list of I/O addresses to be probed. */
 static unsigned int wd_portlist[] __initdata =
 {0x300, 0x280, 0x380, 0x240, 0};
@@ -302,7 +304,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	i = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	i = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev);
 	if (i) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return i;
diff -Nru a/drivers/net/yellowfin.c b/drivers/net/yellowfin.c
--- a/drivers/net/yellowfin.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/yellowfin.c	Sat May 22 17:40:55 2004
@@ -448,7 +448,7 @@
 
 	np = dev->priv;
 
-	if (pci_request_regions(pdev, dev->name))
+	if (pci_request_regions(pdev, DRV_NAME))
 		goto err_out_free_netdev;
 
 	pci_set_master (pdev);
diff -Nru a/drivers/net/zorro8390.c b/drivers/net/zorro8390.c
--- a/drivers/net/zorro8390.c	Sat May 22 17:40:55 2004
+++ b/drivers/net/zorro8390.c	Sat May 22 17:40:55 2004
@@ -36,6 +36,8 @@
 #include "8390.h"
 
 
+#define DRV_NAME	"zorro8390"
+
 #define NE_BASE		(dev->base_addr)
 #define NE_CMD		(0x00*2)
 #define NE_DATAPORT	(0x10*2)	/* NatSemi-defined port window offset. */
@@ -115,7 +117,7 @@
     if (!dev)
 	return -ENOMEM;
     SET_MODULE_OWNER(dev);
-    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, dev->name)) {
+    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, DRV_NAME)) {
 	free_netdev(dev);
 	return -EBUSY;
     }
@@ -198,7 +200,7 @@
     dev->irq = IRQ_AMIGA_PORTS;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, DRV_NAME, dev);
     if (i) return i;
 
     for(i = 0; i < ETHER_ADDR_LEN; i++) {

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers
  2004-05-20 11:19   ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Herbert Xu
  2004-05-22  7:44     ` 2/x: [NETDRV] Use driver-specific name for resources Herbert Xu
@ 2004-05-27 19:22     ` Jeff Garzik
  1 sibling, 0 replies; 14+ messages in thread
From: Jeff Garzik @ 2004-05-27 19:22 UTC (permalink / raw)
  To: Herbert Xu; +Cc: netdev

applied patches #1 and #2 in this series (i.e. all I've received so far).

I will probably wait until 2.6.7 release to push these, since they are 
not necessarily release candidate changes.

	Jeff

^ permalink raw reply	[flat|nested] 14+ messages in thread

* 3/x: [NETDRV] Add register_ei_netdev
  2004-05-22  7:44     ` 2/x: [NETDRV] Use driver-specific name for resources Herbert Xu
@ 2004-05-29  8:41       ` Herbert Xu
  2004-06-02 20:24         ` Jeff Garzik
  0 siblings, 1 reply; 14+ messages in thread
From: Herbert Xu @ 2004-05-29  8:41 UTC (permalink / raw)
  To: Jeff Garzik, netdev

[-- Attachment #1: Type: text/plain, Size: 356 bytes --]

Hi Jeff:

Here is the patch that adds register_ei_netdev which lets us get rid of
some of the duplicated printk's in the 8390 drivers.
 
Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 1047 bytes --]

===== drivers/net/8390.c 1.21 vs edited =====
--- 1.21/drivers/net/8390.c	2004-04-14 04:12:07 +10:00
+++ edited/drivers/net/8390.c	2004-05-29 18:36:06 +10:00
@@ -1033,6 +1033,29 @@
 				ethdev_setup);
 }
 
+/**
+ * register_ei_netdev - register_netdev counterpart for 8390
+ *
+ * Register 8390-specific net_device.
+ */
+int register_ei_netdev(struct net_device *dev)
+{
+	int err;
+	int i;
+
+	err = register_netdev(dev);
+	if (err)
+		return err;
+
+	printk(KERN_INFO "%s: %s at 0x%lx, ",
+		dev->name, ei_status.name, dev->base_addr);
+	for (i = 0; i < ETHER_ADDR_LEN; i++)
+		printk("%2.2x%c", dev->dev_addr[i],
+			i == ETHER_ADDR_LEN - 1 ? ',' : ':');
+	printk(" IRQ %d.\n", dev->irq);
+	return 0;
+}
+
 \f
 
 
===== drivers/net/8390.h 1.17 vs edited =====
--- 1.17/drivers/net/8390.h	2004-05-25 19:53:07 +10:00
+++ edited/drivers/net/8390.h	2004-05-29 18:17:51 +10:00
@@ -52,6 +52,7 @@
 {
 	return __alloc_ei_netdev(0);
 }
+extern int register_ei_netdev(struct net_device *dev);
 
 /* You have one of these per-board */
 struct ei_device {

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: 3/x: [NETDRV] Add register_ei_netdev
  2004-05-29  8:41       ` 3/x: [NETDRV] Add register_ei_netdev Herbert Xu
@ 2004-06-02 20:24         ` Jeff Garzik
  2004-06-05  5:27           ` 4/x: [NETDRV] Merge register_netdev calls Herbert Xu
  0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2004-06-02 20:24 UTC (permalink / raw)
  To: Herbert Xu; +Cc: netdev

Herbert Xu wrote:
> Hi Jeff:
> 
> Here is the patch that adds register_ei_netdev which lets us get rid of
> some of the duplicated printk's in the 8390 drivers.


Patch looks OK, but I would prefer to reject it, and merge it later when 
an accompanying patch appears using this new function.

	Jeff

^ permalink raw reply	[flat|nested] 14+ messages in thread

* 4/x: [NETDRV] Merge register_netdev calls
  2004-06-02 20:24         ` Jeff Garzik
@ 2004-06-05  5:27           ` Herbert Xu
  2004-06-06  8:41             ` 5/x: [NETDRV] Move register_netdev into probe function Herbert Xu
       [not found]             ` <40C8F824.50904@pobox.com>
  0 siblings, 2 replies; 14+ messages in thread
From: Herbert Xu @ 2004-06-05  5:27 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

[-- Attachment #1: Type: text/plain, Size: 805 bytes --]

On Wed, Jun 02, 2004 at 04:24:24PM -0400, Jeff Garzik wrote:
> >
> >Here is the patch that adds register_ei_netdev which lets us get rid of
> >some of the duplicated printk's in the 8390 drivers.
> 
> Patch looks OK, but I would prefer to reject it, and merge it later when 
> an accompanying patch appears using this new function.

Actually I've decided to scrap it in favour of a more generic
ether_print_info() that can be used by all Ethernet drivers.

So in its place I present the following patch that merges duplicate
register_netdev calls by moving them to the probe function.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 24375 bytes --]

===== drivers/net/3c503.c 1.20 vs edited =====
--- 1.20/drivers/net/3c503.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/3c503.c	2004-06-05 14:05:23 +10:00
@@ -162,12 +162,7 @@
 	err = do_el2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -343,6 +338,10 @@
     dev->poll_controller = ei_poll;
 #endif
 
+    retval = register_netdev(dev);
+    if (retval)
+	goto out1;
+
     if (dev->mem_start)
 	printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
 		dev->name, ei_status.name, (wordlength+1)<<3,
@@ -702,11 +701,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_el2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_el2[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_el2[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "3c503.c: No 3c503 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/3c515.c 1.29 vs edited =====
--- 1.29/drivers/net/3c515.c	2004-03-30 20:17:59 +10:00
+++ edited/drivers/net/3c515.c	2004-06-05 15:16:01 +10:00
@@ -373,7 +373,7 @@
 #endif /* __ISAPNP__ */
 
 static struct net_device *corkscrew_scan(int unit);
-static void corkscrew_setup(struct net_device *dev, int ioaddr,
+static int corkscrew_setup(struct net_device *dev, int ioaddr,
 			    struct pnp_dev *idev, int card_number);
 static int corkscrew_open(struct net_device *dev);
 static void corkscrew_timer(unsigned long arg);
@@ -537,10 +537,9 @@
 			printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n",
 		     		inl(ioaddr + 0x2002), inw(ioaddr + 0x2000));
 			/* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */
-			corkscrew_setup(dev, ioaddr, idev, cards_found++);
 			SET_NETDEV_DEV(dev, &idev->dev);
 			pnp_cards++;
-			err = register_netdev(dev);
+			err = corkscrew_setup(dev, ioaddr, idev, cards_found++);
 			if (!err)
 				return dev;
 			cleanup_card(dev);
@@ -556,8 +555,7 @@
 
 		printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n",
 		     inl(ioaddr + 0x2002), inw(ioaddr + 0x2000));
-		corkscrew_setup(dev, ioaddr, NULL, cards_found++);
-		err = register_netdev(dev);
+		err = corkscrew_setup(dev, ioaddr, NULL, cards_found++);
 		if (!err)
 			return dev;
 		cleanup_card(dev);
@@ -566,7 +564,7 @@
 	return NULL;
 }
 
-static void corkscrew_setup(struct net_device *dev, int ioaddr,
+static int corkscrew_setup(struct net_device *dev, int ioaddr,
 			    struct pnp_dev *idev, int card_number)
 {
 	struct corkscrew_private *vp = (struct corkscrew_private *) dev->priv;
@@ -689,6 +687,8 @@
 	dev->get_stats = &corkscrew_get_stats;
 	dev->set_multicast_list = &set_rx_mode;
 	dev->ethtool_ops = &netdev_ethtool_ops;
+
+	return register_netdev(dev);
 }
 \f
 
===== drivers/net/3c523.c 1.16 vs edited =====
--- 1.16/drivers/net/3c523.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/3c523.c	2004-06-05 14:12:44 +10:00
@@ -572,6 +572,10 @@
         dev->flags&=~IFF_MULTICAST;     /* Multicast doesn't work */
 #endif
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto err_out;
+
 	return 0;
 err_out:
 	mca_set_adapter_procfn(slot, NULL, NULL);
@@ -600,12 +604,7 @@
 	err = do_elmc_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -1288,12 +1287,9 @@
 		dev->irq=irq[this_dev];
 		dev->base_addr=io[this_dev];
 		if (do_elmc_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_elmc[this_dev] = dev;
-				found++;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_elmc[this_dev] = dev;
+			found++;
+			continue;
 		}
 		free_netdev(dev);
 		if (io[this_dev]==0)
===== drivers/net/ac3200.c 1.19 vs edited =====
--- 1.19/drivers/net/ac3200.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/ac3200.c	2004-06-05 14:39:11 +10:00
@@ -147,12 +147,7 @@
 	err = do_ac3200_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -284,7 +279,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out2;
 	return 0;
+out2:
+	if (ei_status.reg0)
+		iounmap((void *)dev->mem_start);
 out1:
 	free_irq(dev->irq, dev);
 out:
@@ -402,11 +404,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];		/* Currently ignored by driver */
 		if (do_ac3200_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ac32[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ac32[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "ac3200.c: No ac3200 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/cs89x0.c 1.24 vs edited =====
--- 1.24/drivers/net/cs89x0.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/cs89x0.c	2004-06-05 14:20:36 +10:00
@@ -307,13 +307,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	outw(PP_ChipID, dev->base_addr + ADD_PORT);
-	release_region(dev->base_addr, NETCARD_IO_EXTENT);
 out:
 	free_netdev(dev);
 	printk(KERN_WARNING "cs89x0: no cs8900 or cs8920 detected.  Be sure to disable PnP with SETUP\n");
@@ -718,7 +712,13 @@
 	printk("\n");
 	if (net_debug)
 		printk("cs89x0_probe1() successful\n");
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out3;
 	return 0;
+out3:
+	outw(PP_ChipID, dev->base_addr + ADD_PORT);
 out2:
 	release_region(ioaddr & ~3, NETCARD_IO_EXTENT);
 out1:
@@ -1806,13 +1806,6 @@
 	if (ret)
 		goto out;
 
-        if (register_netdev(dev) != 0) {
-                printk(KERN_ERR "cs89x0.c: No card found at 0x%x\n", io);
-                ret = -ENXIO;
-		outw(PP_ChipID, dev->base_addr + ADD_PORT);
-		release_region(dev->base_addr, NETCARD_IO_EXTENT);
-		goto out;
-        }
 	dev_cs89x0 = dev;
 	return 0;
 out:
===== drivers/net/e2100.c 1.18 vs edited =====
--- 1.18/drivers/net/e2100.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/e2100.c	2004-06-05 14:23:56 +10:00
@@ -161,12 +161,7 @@
 	err = do_e2100_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -278,6 +273,9 @@
 #endif
 	NS8390_init(dev, 0);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, E21_IO_EXTENT);
@@ -445,11 +443,8 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_e2100_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_e21[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_e21[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "e2100.c: No E2100 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/eepro.c 1.25 vs edited =====
--- 1.25/drivers/net/eepro.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/eepro.c	2004-06-05 14:23:09 +10:00
@@ -596,12 +596,7 @@
 	err = do_eepro_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, EEPRO_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -747,6 +742,7 @@
 	struct eepro_local *lp;
 	enum iftype { AUI=0, BNC=1, TPE=2 };
 	int ioaddr = dev->base_addr;
+	int err;
 
 	/* Grab the region so we can find another board if autoIRQ fails. */
 	if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { 
@@ -856,10 +852,16 @@
 
 	/* reset 82595 */
 	eepro_reset(ioaddr);
+
+	err = register_netdev(dev);
+	if (err)
+		goto err;
 	return 0;
 exit:
+	err = -ENODEV;
+err:
  	release_region(dev->base_addr, EEPRO_IO_EXTENT);
- 	return -ENODEV;
+ 	return err;
 }
 
 /* Open/initialize the board.  This is called (in the current kernel)
@@ -1756,11 +1758,8 @@
 		dev->irq = irq[i];
 
 		if (do_eepro_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_eepro[n_eepro++] = dev;
-				continue;
-			}
-			release_region(dev->base_addr, EEPRO_IO_EXTENT);
+			dev_eepro[n_eepro++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
===== drivers/net/eexpress.c 1.18 vs edited =====
--- 1.18/drivers/net/eexpress.c	2004-05-20 21:10:46 +10:00
+++ edited/drivers/net/eexpress.c	2004-06-05 14:27:54 +10:00
@@ -436,11 +436,8 @@
 	netdev_boot_setup_check(dev);
 
 	err = do_express_probe(dev);
-	if (!err) {
-		err = register_netdev(dev);
-		if (!err)
-			return dev;
-	}
+	if (!err)
+		return dev;
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
@@ -1205,7 +1202,8 @@
 	dev->set_multicast_list = &eexp_set_multicast;
 	dev->tx_timeout = eexp_timeout;
 	dev->watchdog_timeo = 2*HZ;
-	return 0;
+
+	return register_netdev(dev);
 }
 
 /*
@@ -1716,7 +1714,7 @@
 				break;
 			printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n");
 		}
-		if (do_express_probe(dev) == 0 && register_netdev(dev) == 0) {
+		if (do_express_probe(dev) == 0) {
 			dev_eexp[this_dev] = dev;
 			found++;
 			continue;
===== drivers/net/es3210.c 1.13 vs edited =====
--- 1.13/drivers/net/es3210.c	2004-05-20 21:10:46 +10:00
+++ edited/drivers/net/es3210.c	2004-06-05 14:27:31 +10:00
@@ -176,12 +176,7 @@
 	err = do_es_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -304,6 +299,10 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
 out1:
 	free_irq(dev->irq, dev);
@@ -439,11 +438,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_es_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_es3210[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_es3210[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "es3210.c: No es3210 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/eth16i.c 1.19 vs edited =====
--- 1.19/drivers/net/eth16i.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/eth16i.c	2004-06-05 14:28:57 +10:00
@@ -473,13 +473,7 @@
 	err = do_eth16i_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
-	release_region(dev->base_addr, ETH16I_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -569,7 +563,13 @@
 	dev->tx_timeout 	= eth16i_timeout;
 	dev->watchdog_timeo	= TX_TIMEOUT;
 	spin_lock_init(&lp->lock);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	free_irq(dev->irq, dev);
 out:
 	release_region(ioaddr, ETH16I_IO_EXTENT);
 	return retval;
@@ -1462,12 +1462,8 @@
 		}
 
 		if (do_eth16i_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_eth16i[found++] = dev;
-				continue;
-			}
-			free_irq(dev->irq, dev);
-			release_region(dev->base_addr, ETH16I_IO_EXTENT);
+			dev_eth16i[found++] = dev;
+			continue;
 		}
 		printk(KERN_WARNING "eth16i.c No Eth16i card found (i/o = 0x%x).\n",
 		       io[this_dev]);
===== drivers/net/hp-plus.c 1.16 vs edited =====
--- 1.16/drivers/net/hp-plus.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/hp-plus.c	2004-06-05 14:29:37 +10:00
@@ -159,12 +159,7 @@
 	err = do_hpp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -271,6 +266,9 @@
 	/* Leave the 8390 and HP chip reset. */
 	outw(inw(ioaddr + HPP_OPTION) & ~EnableIRQ, ioaddr + HPP_OPTION);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, HP_IO_EXTENT);
@@ -463,11 +461,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hpp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_hpp[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_hpp[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "hp-plus.c: No HP-Plus card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/hp.c 1.14 vs edited =====
--- 1.14/drivers/net/hp.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/hp.c	2004-06-05 14:41:28 +10:00
@@ -123,12 +123,7 @@
 	err = do_hp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -227,7 +222,12 @@
 	ei_status.block_output = &hp_block_output;
 	hp_init_card(dev);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	free_irq(dev->irq, dev);
 out:
 	release_region(ioaddr, HP_IO_EXTENT);
 	return retval;
@@ -432,11 +432,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_hp[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_hp[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "hp.c: No HP card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/hp100.c 1.28 vs edited =====
--- 1.28/drivers/net/hp100.c	2004-05-20 21:10:46 +10:00
+++ edited/drivers/net/hp100.c	2004-06-05 14:48:02 +10:00
@@ -411,12 +411,7 @@
 	if (err)
 		goto out;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
- out1:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -770,11 +765,22 @@
 		printk("Warning! Link down.\n");
 	}
 
+	err = register_netdev(dev);
+	if (err)
+		goto out3;
+
 	return 0;
+out3:
+	if (local_mode == 1)
+		pci_free_consistent(lp->pci_dev, MAX_RINGSIZE + 0x0f, 
+				    lp->page_vaddr_algn, 
+				    virt_to_whatever(dev, lp->page_vaddr_algn));
+	if (mem_ptr_virt)
+		iounmap(mem_ptr_virt);
 out2:
 	release_region(ioaddr, HP100_REGION_SIZE);
 out1:
-	return -ENODEV;
+	return err;
 }
 
 /* This procedure puts the card into a stable init state */
@@ -2868,18 +2874,12 @@
 	if (err)
 		goto out1;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out2;
-	
 #ifdef HP100_DEBUG
 	printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, 
 	       dev->base_addr);
 #endif
 	gendev->driver_data = dev;
 	return 0;
- out2:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out1:
 	free_netdev(dev);
 	return err;
@@ -2938,17 +2938,12 @@
 	err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev);
 	if (err) 
 		goto out1;
-	err = register_netdev(dev);
-	if (err)
-		goto out2;
 	
 #ifdef HP100_DEBUG
 	printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr);
 #endif
 	pci_set_drvdata(pdev, dev);
 	return 0;
- out2:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out1:
 	free_netdev(dev);
 	return err;
@@ -3016,15 +3011,9 @@
 		SET_MODULE_OWNER(dev);
 
 		err = hp100_isa_probe(dev, hp100_port[i]);
-		if (!err) {
-			err = register_netdev(dev);
-			if (!err) 
-				hp100_devlist[cards++] = dev;
-			else
-				release_region(dev->base_addr, HP100_REGION_SIZE);
-		}
-
-		if (err)
+		if (!err)
+			hp100_devlist[cards++] = dev;
+		else
 			free_netdev(dev);
 	}
 
===== drivers/net/lance.c 1.22 vs edited =====
--- 1.22/drivers/net/lance.c	2004-05-20 21:10:47 +10:00
+++ edited/drivers/net/lance.c	2004-06-05 15:03:28 +10:00
@@ -355,11 +355,8 @@
 		dev->base_addr = io[this_dev];
 		dev->dma = dma[this_dev];
 		if (do_lance_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_lance[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_lance[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
@@ -447,12 +444,7 @@
 	err = do_lance_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -723,6 +715,9 @@
 	dev->tx_timeout = lance_tx_timeout;
 	dev->watchdog_timeo = TX_TIMEOUT;
 
+	err = register_netdev(dev);
+	if (err)
+		goto out_dma;
 	return 0;
 out_dma:
 	if (dev->dma != 4)
===== drivers/net/ne-h8300.c 1.4 vs edited =====
--- 1.4/drivers/net/ne-h8300.c	2004-05-27 18:57:44 +10:00
+++ edited/drivers/net/ne-h8300.c	2004-06-05 15:05:17 +10:00
@@ -180,12 +180,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -325,8 +320,13 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
-	return 0;
 
+	ret = register_netdev(dev);
+	if (ret)
+		goto out_irq;
+	return 0;
+out_irq:
+	free_irq(dev->irq, dev);
 err_out:
 	release_region(ioaddr, NE_IO_EXTENT);
 	return ret;
@@ -633,11 +633,8 @@
 		err = init_reg_offset(dev, dev->base_addr);
 		if (!err) {
 			if (do_ne_probe(dev) == 0) {
-				if (register_netdev(dev) == 0) {
-					dev_ne[found++] = dev;
-					continue;
-				}
-				cleanup_card(dev);
+				dev_ne[found++] = dev;
+				continue;
 			}
 		}
 		free_netdev(dev);
===== drivers/net/isa-skeleton.c 1.13 vs edited =====
--- 1.13/drivers/net/isa-skeleton.c	2004-05-20 21:10:47 +10:00
+++ edited/drivers/net/isa-skeleton.c	2004-06-05 14:36:42 +10:00
@@ -176,12 +176,7 @@
 	err = do_netcard_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -316,7 +311,15 @@
 
         dev->tx_timeout		= &net_tx_timeout;
         dev->watchdog_timeo	= MY_TX_TIMEOUT; 
+
+	err = register_netdev(dev);
+	if (err)
+		goto out2;
 	return 0;
+out2:
+#ifdef jumpered_dma
+	free_dma(dev->dma);
+#endif
 out1:
 #ifdef jumpered_interrupts
 	free_irq(dev->irq, dev);
@@ -691,11 +694,8 @@
 	dev->dma       = dma;
 	dev->mem_start = mem;
 	if (do_netcard_probe(dev) == 0) {
-		if (register_netdev(dev) == 0)
-			this_device = dev;
-			return 0;
-		}
-		cleanup_card(dev);
+		this_device = dev;
+		return 0;
 	}
 	free_netdev(dev);
 	return -ENXIO;
===== drivers/net/lne390.c 1.14 vs edited =====
--- 1.14/drivers/net/lne390.c	2004-05-22 17:28:45 +10:00
+++ edited/drivers/net/lne390.c	2004-06-05 15:03:09 +10:00
@@ -168,12 +168,7 @@
 	err = do_lne390_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -307,7 +302,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto unmap;
 	return 0;
+unmap:
+	if (ei_status.reg0)
+		iounmap((void *)dev->mem_start);
 cleanup:
 	free_irq(dev->irq, dev);
 	return ret;
@@ -436,11 +438,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_lne390_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_lne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_lne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "lne390.c: No LNE390 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/ne.c 1.22 vs edited =====
--- 1.22/drivers/net/ne.c	2004-05-22 17:28:46 +10:00
+++ edited/drivers/net/ne.c	2004-06-05 15:06:46 +10:00
@@ -220,12 +220,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -506,8 +501,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto out_irq;
 	return 0;
 
+out_irq:
+	free_irq(dev->irq, dev);
 err_out:
 	release_region(ioaddr, NE_IO_EXTENT);
 	return ret;
@@ -798,11 +799,8 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		if (found)
===== drivers/net/ne2.c 1.16 vs edited =====
--- 1.16/drivers/net/ne2.c	2004-05-22 17:28:46 +10:00
+++ edited/drivers/net/ne2.c	2004-06-05 15:08:21 +10:00
@@ -301,12 +301,7 @@
 	err = do_ne2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -517,7 +512,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	mca_set_adapter_procfn( ei_status.priv, NULL, NULL);
+	free_irq(dev->irq, dev);
 out:
 	release_region(base_addr, NE_IO_EXTENT);
 	return retval;
@@ -800,11 +802,8 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
===== drivers/net/ne2k_cbus.c 1.7 vs edited =====
--- 1.7/drivers/net/ne2k_cbus.c	2004-05-22 17:28:46 +10:00
+++ edited/drivers/net/ne2k_cbus.c	2004-06-05 15:09:51 +10:00
@@ -204,12 +204,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -542,8 +537,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto err_out_irq;
 	return 0;
 
+err_out_irq:
+	free_irq(dev->irq, dev);
 err_out_kfree:
 	ne2k_cbus_destroy(dev);
 err_out:
@@ -854,11 +855,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = hwtype[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		if (found)
===== drivers/net/smc-ultra.c 1.22 vs edited =====
--- 1.22/drivers/net/smc-ultra.c	2004-05-22 17:28:46 +10:00
+++ edited/drivers/net/smc-ultra.c	2004-06-05 15:11:42 +10:00
@@ -195,12 +195,7 @@
 	err = do_ultra_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -321,6 +316,9 @@
 #endif
 	NS8390_init(dev, 0);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, ULTRA_IO_EXTENT);
@@ -579,11 +577,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ultra_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ultra[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ultra[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "smc-ultra.c: No SMC Ultra card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/wd.c 1.19 vs edited =====
--- 1.19/drivers/net/wd.c	2004-05-22 17:28:46 +10:00
+++ edited/drivers/net/wd.c	2004-06-05 15:14:05 +10:00
@@ -148,12 +148,7 @@
 	err = do_wd_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -163,6 +158,7 @@
 static int __init wd_probe1(struct net_device *dev, int ioaddr)
 {
 	int i;
+	int err;
 	int checksum = 0;
 	int ancient = 0;			/* An old card without config registers. */
 	int word16 = 0;				/* 0 = 8 bit, 1 = 16 bit */
@@ -349,7 +345,10 @@
 		outb(inb(ioaddr+4)|0x80, ioaddr+4);
 #endif
 
-	return 0;
+	err = register_netdev(dev);
+	if (err)
+		free_irq(dev->irq, dev);
+	return err;
 }
 
 static int
@@ -519,11 +518,8 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = mem_end[this_dev];
 		if (do_wd_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_wd[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_wd[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "wd.c: No wd80x3 card found (i/o = 0x%x).\n", io[this_dev]);

^ permalink raw reply	[flat|nested] 14+ messages in thread

* 5/x: [NETDRV] Move register_netdev into probe function
  2004-06-05  5:27           ` 4/x: [NETDRV] Merge register_netdev calls Herbert Xu
@ 2004-06-06  8:41             ` Herbert Xu
       [not found]             ` <40C8F824.50904@pobox.com>
  1 sibling, 0 replies; 14+ messages in thread
From: Herbert Xu @ 2004-06-06  8:41 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

[-- Attachment #1: Type: text/plain, Size: 610 bytes --]

On Sat, Jun 05, 2004 at 03:27:37PM +1000, herbert wrote:
> 
> So in its place I present the following patch that merges duplicate
> register_netdev calls by moving them to the probe function.

Here is the patch to move register_netdev into the probe function
for the remaining modules.  This allows us to print the information
that the driver wants to after the device has been registered.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 21178 bytes --]

diff -Nru a/drivers/net/3c501.c b/drivers/net/3c501.c
--- a/drivers/net/3c501.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/3c501.c	2004-06-06 18:38:44 +10:00
@@ -189,12 +189,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, EL1_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -220,6 +215,7 @@
 	unsigned char station_addr[6];
 	int autoirq = 0;
 	int i;
+	int err;
 
 	/*
 	 *	Reserve I/O resource for exclusive use by this driver
@@ -321,7 +317,11 @@
 	dev->get_stats = &el1_get_stats;
 	dev->set_multicast_list = &set_multicast_list;
 	dev->ethtool_ops = &netdev_ethtool_ops;
-	return 0;
+
+	err = register_netdev(dev);
+	if (err)
+		release_region(ioaddr, EL1_IO_EXTENT);
+	return err;
 }
 
 /**
diff -Nru a/drivers/net/3c507.c b/drivers/net/3c507.c
--- a/drivers/net/3c507.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/3c507.c	2004-06-06 18:38:44 +10:00
@@ -341,13 +341,7 @@
 
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
-	release_region(dev->base_addr, EL16_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -453,7 +447,13 @@
 	dev->watchdog_timeo = TX_TIMEOUT;
 	dev->ethtool_ops = &netdev_ethtool_ops;
  	dev->flags &= ~IFF_MULTICAST;	/* Multicast doesn't work */
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	free_irq(irq, dev);
 out:
 	release_region(ioaddr, EL16_IO_EXTENT);
 	return retval;
diff -Nru a/drivers/net/3c527.c b/drivers/net/3c527.c
--- a/drivers/net/3c527.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/3c527.c	2004-06-06 18:38:44 +10:00
@@ -212,7 +212,7 @@
 
 
 /* Index to functions, as function prototypes. */
-static int	mc32_probe1(struct net_device *dev, int ioaddr);
+static int	mc32_probe1(struct net_device *dev, int ioaddr, char *name);
 static int      mc32_command(struct net_device *dev, u16 cmd, void *data, int len);
 static int	mc32_open(struct net_device *dev);
 static void	mc32_timeout(struct net_device *dev);
@@ -266,25 +266,16 @@
 	   Autodetecting MCA cards is extremely simple. 
 	   Just search for the card. */
 
+	err = -ENODEV;
 	for(i = 0; (mc32_adapters[i].name != NULL); i++) {
 		current_mca_slot = 
 			mca_find_unused_adapter(mc32_adapters[i].id, 0);
 
 		if(current_mca_slot != MCA_NOTFOUND) {
-			if(!mc32_probe1(dev, current_mca_slot))
-			{
-				mca_set_adapter_name(current_mca_slot, 
-						mc32_adapters[i].name);
-				mca_mark_as_used(current_mca_slot);
-				err = register_netdev(dev);
-				if (err) {
-					cleanup_card(dev);
-					free_netdev(dev);
-					dev = ERR_PTR(err);
-				}
+			err = mc32_probe1(dev, current_mca_slot,
+					  mc32_adapters[i].name);
+			if (!err)
 				return dev;
-			}
-			
 		}
 	}
 	free_netdev(dev);
@@ -295,6 +286,7 @@
  * mc32_probe1	-	Check a given slot for a board and test the card
  * @dev:  Device structure to fill in
  * @slot: The MCA bus slot being used by this card
+ * @name: Descriptive name of device
  *
  * Decode the slot data and configure the card structures. Having done this we
  * can reset the card and configure it. The card does a full self test cycle
@@ -302,7 +294,7 @@
  * failure case or some addresses we use to find the board internals.
  */
 
-static int __init mc32_probe1(struct net_device *dev, int slot)
+static int __init mc32_probe1(struct net_device *dev, int slot, char *name)
 {
 	static unsigned version_printed;
 	int i, err;
@@ -530,8 +522,16 @@
 	dev->watchdog_timeo	= HZ*5;	/* Board does all the work */
 	dev->ethtool_ops	= &netdev_ethtool_ops;
 
+	mca_set_adapter_name(slot, name);
+	mca_mark_as_used(slot);
+	err = register_netdev(dev);
+	if (err)
+		goto err_exit_mca;
 	return 0;
 
+err_exit_mca:
+	mca_mark_as_unused(slot);
+	mca_set_adapter_name(slot, NULL);
 err_exit_irq:
 	free_irq(dev->irq, dev);
 err_exit_ports:
diff -Nru a/drivers/net/apne.c b/drivers/net/apne.c
--- a/drivers/net/apne.c	2004-06-06 18:38:45 +10:00
+++ b/drivers/net/apne.c	2004-06-06 18:38:45 +10:00
@@ -181,21 +181,13 @@
 		free_netdev(dev);
 		return ERR_PTR(err);
 	}
-	err = register_netdev(dev);
-	if (!err)
-		return dev;
-
-	pcmcia_disable_irq();
-	free_irq(IRQ_AMIGA_PORTS, dev);
-	pcmcia_reset();
-	release_region(IOBASE, 0x20);
-	free_netdev(dev);
-	return ERR_PTR(err);
+	return dev;
 }
 
 static int __init apne_probe1(struct net_device *dev, int ioaddr)
 {
     int i;
+    int err;
     unsigned char SA_prom[32];
     int wordlength = 2;
     const char *name = NULL;
@@ -345,7 +337,14 @@
 
     apne_owned = 1;
 
-    return 0;
+    err = register_netdev(dev);
+    if (err) {
+	pcmcia_disable_irq();
+	free_irq(IRQ_AMIGA_PORTS, dev);
+	pcmcia_reset();
+    }
+
+    return err;
 }
 
 static int
diff -Nru a/drivers/net/at1700.c b/drivers/net/at1700.c
--- a/drivers/net/at1700.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/at1700.c	2004-06-06 18:38:44 +10:00
@@ -295,12 +295,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -551,8 +546,13 @@
 		goto err_mca;
 	}
 
+	ret = register_netdev(dev);
+	if (ret)
+		goto err_irq;
 	return 0;
 
+err_irq:
+	free_irq(dev->irq, NULL);
 err_mca:
 #ifdef CONFIG_MCA
 	if (slot >= 0)
diff -Nru a/drivers/net/atarilance.c b/drivers/net/atarilance.c
--- a/drivers/net/atarilance.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/atarilance.c	2004-06-06 18:38:44 +10:00
@@ -395,11 +395,7 @@
 	for( i = 0; i < N_LANCE_ADDR; ++i ) {
 		if (lance_probe1( dev, &lance_addr_list[i] )) {
 			found = 1;
-			err = register_netdev(dev);
-			if (!err)
-				return dev;
-			free_irq(dev->irq, dev);
-			break;
+			return dev;
 		}
 	}
 	free_netdev(dev);
@@ -647,6 +643,10 @@
 
 	memset( &lp->stats, 0, sizeof(lp->stats) );
 
+	if (register_netdev(dev)) {
+		free_irq(dev->irq, dev);
+		return 0;
+	}
 	return( 1 );
 }
 
diff -Nru a/drivers/net/bagetlance.c b/drivers/net/bagetlance.c
--- a/drivers/net/bagetlance.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/bagetlance.c	2004-06-06 18:38:44 +10:00
@@ -491,12 +491,7 @@
 	}
 	if (!found)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -730,6 +725,10 @@
 
 	memset( &lp->stats, 0, sizeof(lp->stats) );
 
+	if (register_netdev(dev)) {
+		free_irq(dev->irq, dev);
+		return 0;
+	}
 	return( 1 );
 }
 
diff -Nru a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
--- a/drivers/net/ewrk3.c	2004-06-06 18:38:45 +10:00
+++ b/drivers/net/ewrk3.c	2004-06-06 18:38:45 +10:00
@@ -378,14 +378,6 @@
 	err = isa_probe(dev, iobase);
 	if (err != 0) 
 		err = eisa_probe(dev, iobase);
-
-	if (err)
-		return err;
-
-	err = register_netdev(dev);
-	if (err)
-		release_region(dev->base_addr, EWRK3_TOTAL_SIZE);
-
 	return err;
 }
 
@@ -615,7 +607,7 @@
 	
 	dev->mem_start = 0;
 
-	return 0;
+	return register_netdev(dev);
 }
 \f
 
diff -Nru a/drivers/net/fec.c b/drivers/net/fec.c
--- a/drivers/net/fec.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/fec.c	2004-06-06 18:38:44 +10:00
@@ -1789,7 +1789,9 @@
 	mii_queue(dev, mk_mii_read(MII_REG_PHYIR1), mii_discover_phy);
 
 	found++;
-	return 0;
+
+	/* XXX: missing cleanup here */
+	return register_netdev(dev);
 }
 
 /* This function is called to start or restart the FEC during a link
@@ -1960,11 +1962,6 @@
 		return err;
 	}
 
-	if (register_netdev(dev) != 0) {
-		/* XXX: missing cleanup here */
-		free_netdev(dev);
-		return -EIO;
-	}
 	fec_dev = dev;
 	return(0);
 }
diff -Nru a/drivers/net/fmv18x.c b/drivers/net/fmv18x.c
--- a/drivers/net/fmv18x.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/fmv18x.c	2004-06-06 18:38:44 +10:00
@@ -163,13 +163,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
-	release_region(dev->base_addr, FMV18X_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -305,6 +299,10 @@
 	dev->watchdog_timeo	= HZ/10;
 	dev->get_stats		= net_get_stats;
 	dev->set_multicast_list = set_multicast_list;
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out_irq;
 	return 0;
 
 out_irq:
diff -Nru a/drivers/net/hplance.c b/drivers/net/hplance.c
--- a/drivers/net/hplance.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/hplance.c	2004-06-06 18:38:44 +10:00
@@ -50,7 +50,7 @@
  * plus board-specific init, open and close actions. 
  * Oh, and we need to tell the generic code how to read and write LANCE registers...
  */
-static void hplance_init(struct net_device *dev, int scode);
+static int hplance_init(struct net_device *dev, int scode);
 static int hplance_open(struct net_device *dev);
 static int hplance_close(struct net_device *dev);
 static void hplance_writerap(void *priv, unsigned short value);
@@ -95,8 +95,7 @@
                         break;
                 
 		dio_config_board(scode);
-                hplance_init(dev, scode);
-		if (!register_netdev(dev)) {
+		if (!hplance_init(dev, scode)) {
 			struct hplance_private *lp = netdev_priv(dev);
 			lp->next_module = root_hplance_dev;
 			root_hplance_dev = lp;
@@ -109,7 +108,7 @@
 }
 
 /* Initialise a single lance board at the given select code */
-static void __init hplance_init(struct net_device *dev, int scode)
+static int __init hplance_init(struct net_device *dev, int scode)
 {
         const char *name = dio_scodetoname(scode);
         void *va = dio_scodetoviraddr(scode);
@@ -158,6 +157,8 @@
         lp->scode = scode;
 	lp->base = va;
 	printk(", irq %d\n", lp->lance.irq);
+
+	return register_netdev(dev);
 }
 
 /* This is disgusting. We have to check the DIO status register for ack every
diff -Nru a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c
--- a/drivers/net/ibmlana.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/ibmlana.c	2004-06-06 18:38:44 +10:00
@@ -913,6 +913,7 @@
 {
 	int force_detect = 0;
 	int slot, z;
+	int err;
 	int base = 0, irq = 0, iobase = 0, memlen = 0;
 	ibmlana_priv *priv;
 	ibmlana_medium medium;
@@ -1014,7 +1015,14 @@
 
 	startslot = slot + 1;
 
-	return 0;
+	err = register_netdev(dev);
+	if (err) {
+		release_region(iobase, IBM_LANA_IORANGE);
+		mca_mark_as_unused(slot);
+		mca_set_adapter_name(slot, "");
+		mca_set_adapter_procfn(slot, NULL, NULL);
+	}
+	return err;
 }
 
 /* ------------------------------------------------------------------------
@@ -1047,15 +1055,6 @@
 		dev->irq = irq;
 		dev->base_addr = io;
 		if (ibmlana_probe(dev)) {
-			free_netdev(dev);
-			break;
-		}
-		if (register_netdev(dev)) {
-			ibmlana_priv *priv = dev->priv;
-			release_region(dev->base_addr, IBM_LANA_IORANGE);
-			mca_mark_as_unused(priv->slot);
-			mca_set_adapter_name(priv->slot, "");
-			mca_set_adapter_procfn(priv->slot, NULL, NULL);
 			free_netdev(dev);
 			break;
 		}
diff -Nru a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
--- a/drivers/net/jazzsonic.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/jazzsonic.c	2004-06-06 18:38:44 +10:00
@@ -127,17 +127,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	lp = dev->priv;
-	vdma_free(lp->rba_laddr);
-	kfree(lp->rba);
-	vdma_free(lp->cda_laddr);
-	kfree(lp);
-	release_region(dev->base_addr, 0x100);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -283,7 +273,12 @@
 	SONIC_WRITE(SONIC_FAET,0xffff);
 	SONIC_WRITE(SONIC_MPT,0xffff);
 
+	err = register_netdev(dev);
+	if (err)
+		goto out4;
 	return 0;
+out4:
+	vdma_free(lp->rba_laddr);
 out3:
 	kfree(lp->rba);
 out2:
diff -Nru a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c
--- a/drivers/net/lasi_82596.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/lasi_82596.c	2004-06-06 18:38:44 +10:00
@@ -1150,6 +1150,7 @@
 				  struct device *gen_dev)
 {
 	int i;
+	int retval;
 	struct i596_private *lp;
 	char eth_addr[6];
 	dma_addr_t dma_addr;
@@ -1235,7 +1236,13 @@
 
 	CHECK_WBACK_INV(dev->mem_start, sizeof(struct i596_private));
 
-	return 0;
+	retval = register_netdev(netdevice);
+	if (retval) {
+		printk(KERN_WARNING __FILE__ ": register_netdevice ret'd %d\n", retval);
+		dma_free_noncoherent(gen_dev, sizeof(struct i596_private), 
+				     (void *)dev->mem_start, dma_addr);
+	};
+	return retval;
 }
 
 
@@ -1539,15 +1546,6 @@
 		return -ENODEV;
 	}
 
-	retval = register_netdev(netdevice);
-	if (retval) {
-		struct i596_private *lp = netdevice->priv;
-		printk(KERN_WARNING __FILE__ ": register_netdevice ret'd %d\n", retval);
-		dma_free_noncoherent(lp->dev, sizeof(struct i596_private), 
-				    (void *)netdevice->mem_start, lp->dma_addr);
-		free_netdev(netdevice);
-		return -ENODEV;
-	};
 	if (dev->id.sversion == 0x72) {
 		((struct i596_private *)netdevice->priv)->options = OPT_SWAP_PORT;
 	}
diff -Nru a/drivers/net/lp486e.c b/drivers/net/lp486e.c
--- a/drivers/net/lp486e.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/lp486e.c	2004-06-06 18:38:44 +10:00
@@ -1035,6 +1035,10 @@
 	i596_port_do(dev, PORT_SELFTEST, "selftest");
 	i596_port_do(dev, PORT_DUMP, "dump");
 #endif
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto err_out_kfree;
 	return 0;
 
 err_out_kfree:
@@ -1325,12 +1329,6 @@
 	dev->base_addr = io;
 	err = lp486e_probe(dev);
 	if (err) {
-		free_netdev(dev);
-		return err;
-	}
-	err = register_netdev(dev);
-	if (err) {
-		release_region(dev->base_addr, LP486E_TOTAL_SIZE);
 		free_netdev(dev);
 		return err;
 	}
diff -Nru a/drivers/net/mac8390.c b/drivers/net/mac8390.c
--- a/drivers/net/mac8390.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/mac8390.c	2004-06-06 18:38:44 +10:00
@@ -368,9 +368,6 @@
 
 	if (!ndev)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out;
 	return dev;
 
 out:
@@ -438,6 +435,7 @@
 	};
 
 	int access_bitmode;
+	int err;
 	
 	/* Now fill in our stuff */
 	dev->open = &mac8390_open;
@@ -516,6 +514,10 @@
 	}
 		
 	NS8390_init(dev, 0);
+
+	err = register_netdev(dev);
+	if (err)
+		return err;
 
 	/* Good, done, now spit out some messages */
 	printk(KERN_INFO "%s: %s in slot %X (type %s)\n",
diff -Nru a/drivers/net/macsonic.c b/drivers/net/macsonic.c
--- a/drivers/net/macsonic.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/macsonic.c	2004-06-06 18:38:44 +10:00
@@ -132,12 +132,7 @@
 	if (err)
 		goto out;
 found:
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	kfree(dev->priv);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -163,6 +158,7 @@
 {
 	struct sonic_local* lp = NULL;
 	int i;
+	int err;
 
 	/* Allocate the entire chunk of memory for the descriptors.
            Note that this cannot cross a 64K boundary. */
@@ -253,7 +249,10 @@
 	sonic_write(dev, SONIC_FAET, 0xffff);
 	sonic_write(dev, SONIC_MPT, 0xffff);
 
-	return 0;
+	err = register_netdev(dev);
+	if (err)
+		kfree(lp);
+	return err;
 }
 
 int __init mac_onboard_sonic_ethernet_addr(struct net_device* dev)
diff -Nru a/drivers/net/ni5010.c b/drivers/net/ni5010.c
--- a/drivers/net/ni5010.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/ni5010.c	2004-06-06 18:38:44 +10:00
@@ -161,12 +161,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, NI5010_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -352,6 +347,10 @@
 	outb(0, EDLC_XMASK);	/* Mask all xmit interrupts */
 	outb(0xff, EDLC_RCLR);	/* Kill all pending rcv interrupts */
 	outb(0xff, EDLC_XCLR); 	/* Kill all pending xmt interrupts */
+
+	err = register_netdev(dev);
+	if (err)
+		goto out;
 
 	printk(KERN_INFO "%s: NI5010 found at 0x%x, using IRQ %d", dev->name, ioaddr, dev->irq);
 	if (dev->dma) printk(" & DMA %d", dev->dma);
diff -Nru a/drivers/net/ni52.c b/drivers/net/ni52.c
--- a/drivers/net/ni52.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/ni52.c	2004-06-06 18:38:44 +10:00
@@ -406,12 +406,7 @@
 	if (err)
 		goto out;
 got_it:
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, NI52_TOTAL_SIZE);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -545,6 +540,9 @@
 
 	dev->if_port 		= 0;
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, NI52_TOTAL_SIZE);
diff -Nru a/drivers/net/ni65.c b/drivers/net/ni65.c
--- a/drivers/net/ni65.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/ni65.c	2004-06-06 18:38:44 +10:00
@@ -392,12 +392,7 @@
 	if (err)
 		goto out;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -409,6 +404,7 @@
 static int __init ni65_probe1(struct net_device *dev,int ioaddr)
 {
 	int i,j;
+	int err;
 	struct priv *p;
 	unsigned long flags;
 
@@ -559,7 +555,11 @@
 	dev->watchdog_timeo	= HZ/2;
 	dev->get_stats		= ni65_get_stats;
 	dev->set_multicast_list = set_multicast_list;
-	return 0; /* everything is OK */
+
+	err = register_netdev(dev);
+	if (err)
+		cleanup_card(dev);
+	return err;
 }
 
 /*
diff -Nru a/drivers/net/seeq8005.c b/drivers/net/seeq8005.c
--- a/drivers/net/seeq8005.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/seeq8005.c	2004-06-06 18:38:44 +10:00
@@ -133,12 +133,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, SEEQ8005_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -341,6 +336,9 @@
 	dev->set_multicast_list = set_multicast_list;
 	dev->flags &= ~IFF_MULTICAST;
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, SEEQ8005_IO_EXTENT);
diff -Nru a/drivers/net/sk_g16.c b/drivers/net/sk_g16.c
--- a/drivers/net/sk_g16.c	2004-06-06 18:38:45 +10:00
+++ b/drivers/net/sk_g16.c	2004-06-06 18:38:45 +10:00
@@ -581,16 +581,10 @@
 			release_region(io, ETHERCARD_TOTAL_SIZE);
 		}
 	}
-err_out:
 	free_netdev(dev);
 	return ERR_PTR(err);
 
 got_it:
-	err = register_netdev(dev);
-	if (err) {
-		release_region(dev->base_addr, ETHERCARD_TOTAL_SIZE);
-		goto err_out;
-	}
 	return dev;
 
 } /* End of SK_init */
@@ -833,7 +827,9 @@
     SK_print_pos(dev, "End of SK_probe");
     SK_print_ram(dev);
 #endif 
-    return 0;                            /* Initialization done */
+
+    return register_netdev(dev);
+    /* Initialization done */
 } /* End of SK_probe() */
 
 \f
diff -Nru a/drivers/net/smc-ultra32.c b/drivers/net/smc-ultra32.c
--- a/drivers/net/smc-ultra32.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/smc-ultra32.c	2004-06-06 18:38:44 +10:00
@@ -143,12 +143,7 @@
 	}
 	if (base >= 0x9000)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -275,6 +270,9 @@
 #endif
 	NS8390_init(dev, 0);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, ULTRA32_IO_EXTENT);
diff -Nru a/drivers/net/smc9194.c b/drivers/net/smc9194.c
--- a/drivers/net/smc9194.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/smc9194.c	2004-06-06 18:38:44 +10:00
@@ -722,13 +722,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
-	release_region(dev->base_addr, SMC_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -1018,8 +1012,13 @@
 	dev->get_stats			= smc_query_statistics;
 	dev->set_multicast_list 	= smc_set_multicast_list;
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto err_irq;
 	return 0;
 
+err_irq:
+	free_irq(dev->irq, dev);
 err_out:
 	release_region(ioaddr, SMC_IO_EXTENT);
 	return retval;
diff -Nru a/drivers/net/sun3_82586.c b/drivers/net/sun3_82586.c
--- a/drivers/net/sun3_82586.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/sun3_82586.c	2004-06-06 18:38:44 +10:00
@@ -320,13 +320,8 @@
 	err = sun3_82586_probe1(dev, ioaddr);
 	if (err)
 		goto out1;
-	err = register_netdev(dev);
-	if (err)
-		goto out2;
 	return dev;
 
-out2:
-	release_region(ioaddr, SUN3_82586_TOTAL_SIZE);
 out1:
 	free_netdev(dev);
 out:
@@ -389,6 +384,10 @@
 	dev->set_multicast_list = set_multicast_list;
 
 	dev->if_port 		= 0;
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, SUN3_82586_TOTAL_SIZE);
diff -Nru a/drivers/net/sun3lance.c b/drivers/net/sun3lance.c
--- a/drivers/net/sun3lance.c	2004-06-06 18:38:44 +10:00
+++ b/drivers/net/sun3lance.c	2004-06-06 18:38:44 +10:00
@@ -279,16 +279,9 @@
 	if (!lance_probe(dev))
 		goto out;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	found = 1;
 	return dev;
 
-out1:
-#ifdef CONFIG_SUN3
-	iounmap((void *)dev->base_addr);
-#endif
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -342,6 +335,7 @@
 
 	REGA(CSR0) = CSR0_STOP; 
 
+	/* XXX - leak */
 	request_irq(LANCE_IRQ, lance_interrupt, SA_INTERRUPT, "SUN3 Lance", dev);
 	dev->irq = (unsigned short)LANCE_IRQ;
 
@@ -397,7 +391,15 @@
 
 	memset( &lp->stats, 0, sizeof(lp->stats) );
 
+	if (register_netdev(dev))
+		goto out_unmap;
 	return 1;
+
+out_unmap:
+#ifdef CONFIG_SUN3
+		iounmap((void *)dev->base_addr);
+#endif
+	return 0;
 }
 
 static int lance_open( struct net_device *dev )

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: 4/x: [NETDRV] Merge register_netdev calls
       [not found]             ` <40C8F824.50904@pobox.com>
@ 2004-06-11  2:08               ` Herbert Xu
  2004-06-25 10:12                 ` Herbert Xu
  0 siblings, 1 reply; 14+ messages in thread
From: Herbert Xu @ 2004-06-11  2:08 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

On Thu, Jun 10, 2004 at 08:09:08PM -0400, Jeff Garzik wrote:
> 
> Unfortunately this and patch #5 are moving in the opposition direction 
> from what we want to be doing, I think.
> 
> AFAICS these patches move register_netdev() to points in each driver 
> earlier in the probe phase, when the driver is not fully set up and 
> ready to receive packets.
> 
> Am I missing something?

The only change made by these two patches is moving the call to
register_netdev() from the outer probe() function to the inner
probe() function where the the printk's are.

There is absolutely no code in between the two locations.  That is,
the driver would've immediately called register_netdev after the inner
probe() has succeeded.

In fact it's really making these ISA/MCA probe() functions more
like the ones we have for PCI.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: 4/x: [NETDRV] Merge register_netdev calls
  2004-06-11  2:08               ` 4/x: [NETDRV] Merge register_netdev calls Herbert Xu
@ 2004-06-25 10:12                 ` Herbert Xu
  0 siblings, 0 replies; 14+ messages in thread
From: Herbert Xu @ 2004-06-25 10:12 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

[-- Attachment #1: Type: text/plain, Size: 1150 bytes --]

On Fri, Jun 11, 2004 at 12:08:55PM +1000, herbert wrote:
> 
> In fact it's really making these ISA/MCA probe() functions more
> like the ones we have for PCI.

To illustrate this, let's take the first driver touched by 4/x.
In 3c503, the function init_module() essentially does

for each ioaddr
	if (do_el2_probe(ioaddr) == 0)
		return 0

And do_el2_probe() just calls el2_probe1() which is similar
to your average PCI probe function except that the first thing
it does is to make sure that the device exists at ioaddr.

This is not that different from PCI where it would look
like

for each PCI device matching the vendor/product numbers
	if (do_el2_probe(device) == 0)
		return 0

Now before my patch, register_netdev was being called just
after do_el2_probe() returns.  My patch simply moves it to
the end of el2_probe1() which is exactly what would happen
if this were a PCI driver.

I've rediffed it against today's BK tree.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 23415 bytes --]

===== drivers/net/3c503.c 1.20 vs edited =====
--- 1.20/drivers/net/3c503.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/3c503.c	2004-06-25 20:01:08 +10:00
@@ -162,12 +162,7 @@
 	err = do_el2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -343,6 +338,10 @@
     dev->poll_controller = ei_poll;
 #endif
 
+    retval = register_netdev(dev);
+    if (retval)
+	goto out1;
+
     if (dev->mem_start)
 	printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
 		dev->name, ei_status.name, (wordlength+1)<<3,
@@ -702,11 +701,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_el2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_el2[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_el2[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "3c503.c: No 3c503 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/3c515.c 1.29 vs edited =====
--- 1.29/drivers/net/3c515.c	2004-03-30 20:17:59 +10:00
+++ edited/drivers/net/3c515.c	2004-06-25 20:01:08 +10:00
@@ -373,7 +373,7 @@
 #endif /* __ISAPNP__ */
 
 static struct net_device *corkscrew_scan(int unit);
-static void corkscrew_setup(struct net_device *dev, int ioaddr,
+static int corkscrew_setup(struct net_device *dev, int ioaddr,
 			    struct pnp_dev *idev, int card_number);
 static int corkscrew_open(struct net_device *dev);
 static void corkscrew_timer(unsigned long arg);
@@ -537,10 +537,9 @@
 			printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n",
 		     		inl(ioaddr + 0x2002), inw(ioaddr + 0x2000));
 			/* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */
-			corkscrew_setup(dev, ioaddr, idev, cards_found++);
 			SET_NETDEV_DEV(dev, &idev->dev);
 			pnp_cards++;
-			err = register_netdev(dev);
+			err = corkscrew_setup(dev, ioaddr, idev, cards_found++);
 			if (!err)
 				return dev;
 			cleanup_card(dev);
@@ -556,8 +555,7 @@
 
 		printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n",
 		     inl(ioaddr + 0x2002), inw(ioaddr + 0x2000));
-		corkscrew_setup(dev, ioaddr, NULL, cards_found++);
-		err = register_netdev(dev);
+		err = corkscrew_setup(dev, ioaddr, NULL, cards_found++);
 		if (!err)
 			return dev;
 		cleanup_card(dev);
@@ -566,7 +564,7 @@
 	return NULL;
 }
 
-static void corkscrew_setup(struct net_device *dev, int ioaddr,
+static int corkscrew_setup(struct net_device *dev, int ioaddr,
 			    struct pnp_dev *idev, int card_number)
 {
 	struct corkscrew_private *vp = (struct corkscrew_private *) dev->priv;
@@ -689,6 +687,8 @@
 	dev->get_stats = &corkscrew_get_stats;
 	dev->set_multicast_list = &set_rx_mode;
 	dev->ethtool_ops = &netdev_ethtool_ops;
+
+	return register_netdev(dev);
 }
 \f
 
===== drivers/net/3c523.c 1.16 vs edited =====
--- 1.16/drivers/net/3c523.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/3c523.c	2004-06-25 20:01:09 +10:00
@@ -572,6 +572,10 @@
         dev->flags&=~IFF_MULTICAST;     /* Multicast doesn't work */
 #endif
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto err_out;
+
 	return 0;
 err_out:
 	mca_set_adapter_procfn(slot, NULL, NULL);
@@ -600,12 +604,7 @@
 	err = do_elmc_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -1288,12 +1287,9 @@
 		dev->irq=irq[this_dev];
 		dev->base_addr=io[this_dev];
 		if (do_elmc_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_elmc[this_dev] = dev;
-				found++;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_elmc[this_dev] = dev;
+			found++;
+			continue;
 		}
 		free_netdev(dev);
 		if (io[this_dev]==0)
===== drivers/net/ac3200.c 1.19 vs edited =====
--- 1.19/drivers/net/ac3200.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/ac3200.c	2004-06-25 20:01:09 +10:00
@@ -147,12 +147,7 @@
 	err = do_ac3200_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -284,7 +279,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out2;
 	return 0;
+out2:
+	if (ei_status.reg0)
+		iounmap((void *)dev->mem_start);
 out1:
 	free_irq(dev->irq, dev);
 out:
@@ -402,11 +404,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];		/* Currently ignored by driver */
 		if (do_ac3200_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ac32[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ac32[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "ac3200.c: No ac3200 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/cs89x0.c 1.24 vs edited =====
--- 1.24/drivers/net/cs89x0.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/cs89x0.c	2004-06-25 20:01:09 +10:00
@@ -307,13 +307,7 @@
 	}
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	outw(PP_ChipID, dev->base_addr + ADD_PORT);
-	release_region(dev->base_addr, NETCARD_IO_EXTENT);
 out:
 	free_netdev(dev);
 	printk(KERN_WARNING "cs89x0: no cs8900 or cs8920 detected.  Be sure to disable PnP with SETUP\n");
@@ -718,7 +712,13 @@
 	printk("\n");
 	if (net_debug)
 		printk("cs89x0_probe1() successful\n");
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out3;
 	return 0;
+out3:
+	outw(PP_ChipID, dev->base_addr + ADD_PORT);
 out2:
 	release_region(ioaddr & ~3, NETCARD_IO_EXTENT);
 out1:
@@ -1806,13 +1806,6 @@
 	if (ret)
 		goto out;
 
-        if (register_netdev(dev) != 0) {
-                printk(KERN_ERR "cs89x0.c: No card found at 0x%x\n", io);
-                ret = -ENXIO;
-		outw(PP_ChipID, dev->base_addr + ADD_PORT);
-		release_region(dev->base_addr, NETCARD_IO_EXTENT);
-		goto out;
-        }
 	dev_cs89x0 = dev;
 	return 0;
 out:
===== drivers/net/e2100.c 1.18 vs edited =====
--- 1.18/drivers/net/e2100.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/e2100.c	2004-06-25 20:01:09 +10:00
@@ -161,12 +161,7 @@
 	err = do_e2100_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -278,6 +273,9 @@
 #endif
 	NS8390_init(dev, 0);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, E21_IO_EXTENT);
@@ -445,11 +443,8 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_e2100_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_e21[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_e21[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "e2100.c: No E2100 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/eepro.c 1.25 vs edited =====
--- 1.25/drivers/net/eepro.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/eepro.c	2004-06-25 20:01:10 +10:00
@@ -596,12 +596,7 @@
 	err = do_eepro_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	release_region(dev->base_addr, EEPRO_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -747,6 +742,7 @@
 	struct eepro_local *lp;
 	enum iftype { AUI=0, BNC=1, TPE=2 };
 	int ioaddr = dev->base_addr;
+	int err;
 
 	/* Grab the region so we can find another board if autoIRQ fails. */
 	if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { 
@@ -856,10 +852,16 @@
 
 	/* reset 82595 */
 	eepro_reset(ioaddr);
+
+	err = register_netdev(dev);
+	if (err)
+		goto err;
 	return 0;
 exit:
+	err = -ENODEV;
+err:
  	release_region(dev->base_addr, EEPRO_IO_EXTENT);
- 	return -ENODEV;
+ 	return err;
 }
 
 /* Open/initialize the board.  This is called (in the current kernel)
@@ -1756,11 +1758,8 @@
 		dev->irq = irq[i];
 
 		if (do_eepro_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_eepro[n_eepro++] = dev;
-				continue;
-			}
-			release_region(dev->base_addr, EEPRO_IO_EXTENT);
+			dev_eepro[n_eepro++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
===== drivers/net/eexpress.c 1.18 vs edited =====
--- 1.18/drivers/net/eexpress.c	2004-05-21 07:16:23 +10:00
+++ edited/drivers/net/eexpress.c	2004-06-25 20:01:10 +10:00
@@ -436,11 +436,8 @@
 	netdev_boot_setup_check(dev);
 
 	err = do_express_probe(dev);
-	if (!err) {
-		err = register_netdev(dev);
-		if (!err)
-			return dev;
-	}
+	if (!err)
+		return dev;
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
@@ -1205,7 +1202,8 @@
 	dev->set_multicast_list = &eexp_set_multicast;
 	dev->tx_timeout = eexp_timeout;
 	dev->watchdog_timeo = 2*HZ;
-	return 0;
+
+	return register_netdev(dev);
 }
 
 /*
@@ -1716,7 +1714,7 @@
 				break;
 			printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n");
 		}
-		if (do_express_probe(dev) == 0 && register_netdev(dev) == 0) {
+		if (do_express_probe(dev) == 0) {
 			dev_eexp[this_dev] = dev;
 			found++;
 			continue;
===== drivers/net/es3210.c 1.13 vs edited =====
--- 1.13/drivers/net/es3210.c	2004-05-21 07:16:23 +10:00
+++ edited/drivers/net/es3210.c	2004-06-25 20:01:10 +10:00
@@ -176,12 +176,7 @@
 	err = do_es_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -304,6 +299,10 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
 out1:
 	free_irq(dev->irq, dev);
@@ -439,11 +438,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_es_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_es3210[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_es3210[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "es3210.c: No es3210 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/eth16i.c 1.19 vs edited =====
--- 1.19/drivers/net/eth16i.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/eth16i.c	2004-06-25 20:01:10 +10:00
@@ -473,13 +473,7 @@
 	err = do_eth16i_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	free_irq(dev->irq, dev);
-	release_region(dev->base_addr, ETH16I_IO_EXTENT);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -569,7 +563,13 @@
 	dev->tx_timeout 	= eth16i_timeout;
 	dev->watchdog_timeo	= TX_TIMEOUT;
 	spin_lock_init(&lp->lock);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	free_irq(dev->irq, dev);
 out:
 	release_region(ioaddr, ETH16I_IO_EXTENT);
 	return retval;
@@ -1462,12 +1462,8 @@
 		}
 
 		if (do_eth16i_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_eth16i[found++] = dev;
-				continue;
-			}
-			free_irq(dev->irq, dev);
-			release_region(dev->base_addr, ETH16I_IO_EXTENT);
+			dev_eth16i[found++] = dev;
+			continue;
 		}
 		printk(KERN_WARNING "eth16i.c No Eth16i card found (i/o = 0x%x).\n",
 		       io[this_dev]);
===== drivers/net/hp-plus.c 1.16 vs edited =====
--- 1.16/drivers/net/hp-plus.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/hp-plus.c	2004-06-25 20:01:10 +10:00
@@ -159,12 +159,7 @@
 	err = do_hpp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -271,6 +266,9 @@
 	/* Leave the 8390 and HP chip reset. */
 	outw(inw(ioaddr + HPP_OPTION) & ~EnableIRQ, ioaddr + HPP_OPTION);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, HP_IO_EXTENT);
@@ -463,11 +461,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hpp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_hpp[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_hpp[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "hp-plus.c: No HP-Plus card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/hp.c 1.14 vs edited =====
--- 1.14/drivers/net/hp.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/hp.c	2004-06-25 20:01:10 +10:00
@@ -123,12 +123,7 @@
 	err = do_hp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -227,7 +222,12 @@
 	ei_status.block_output = &hp_block_output;
 	hp_init_card(dev);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	free_irq(dev->irq, dev);
 out:
 	release_region(ioaddr, HP_IO_EXTENT);
 	return retval;
@@ -432,11 +432,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_hp[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_hp[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "hp.c: No HP card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/hp100.c 1.28 vs edited =====
--- 1.28/drivers/net/hp100.c	2004-05-21 07:16:23 +10:00
+++ edited/drivers/net/hp100.c	2004-06-25 20:01:11 +10:00
@@ -411,12 +411,7 @@
 	if (err)
 		goto out;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
- out1:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -770,11 +765,22 @@
 		printk("Warning! Link down.\n");
 	}
 
+	err = register_netdev(dev);
+	if (err)
+		goto out3;
+
 	return 0;
+out3:
+	if (local_mode == 1)
+		pci_free_consistent(lp->pci_dev, MAX_RINGSIZE + 0x0f, 
+				    lp->page_vaddr_algn, 
+				    virt_to_whatever(dev, lp->page_vaddr_algn));
+	if (mem_ptr_virt)
+		iounmap(mem_ptr_virt);
 out2:
 	release_region(ioaddr, HP100_REGION_SIZE);
 out1:
-	return -ENODEV;
+	return err;
 }
 
 /* This procedure puts the card into a stable init state */
@@ -2868,18 +2874,12 @@
 	if (err)
 		goto out1;
 
-	err = register_netdev(dev);
-	if (err)
-		goto out2;
-	
 #ifdef HP100_DEBUG
 	printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, 
 	       dev->base_addr);
 #endif
 	gendev->driver_data = dev;
 	return 0;
- out2:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out1:
 	free_netdev(dev);
 	return err;
@@ -2938,17 +2938,12 @@
 	err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev);
 	if (err) 
 		goto out1;
-	err = register_netdev(dev);
-	if (err)
-		goto out2;
 	
 #ifdef HP100_DEBUG
 	printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr);
 #endif
 	pci_set_drvdata(pdev, dev);
 	return 0;
- out2:
-	release_region(dev->base_addr, HP100_REGION_SIZE);
  out1:
 	free_netdev(dev);
 	return err;
@@ -3016,15 +3011,9 @@
 		SET_MODULE_OWNER(dev);
 
 		err = hp100_isa_probe(dev, hp100_port[i]);
-		if (!err) {
-			err = register_netdev(dev);
-			if (!err) 
-				hp100_devlist[cards++] = dev;
-			else
-				release_region(dev->base_addr, HP100_REGION_SIZE);
-		}
-
-		if (err)
+		if (!err)
+			hp100_devlist[cards++] = dev;
+		else
 			free_netdev(dev);
 	}
 
===== drivers/net/isa-skeleton.c 1.13 vs edited =====
--- 1.13/drivers/net/isa-skeleton.c	2004-05-21 07:16:23 +10:00
+++ edited/drivers/net/isa-skeleton.c	2004-06-25 20:01:11 +10:00
@@ -176,12 +176,7 @@
 	err = do_netcard_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -316,7 +311,15 @@
 
         dev->tx_timeout		= &net_tx_timeout;
         dev->watchdog_timeo	= MY_TX_TIMEOUT; 
+
+	err = register_netdev(dev);
+	if (err)
+		goto out2;
 	return 0;
+out2:
+#ifdef jumpered_dma
+	free_dma(dev->dma);
+#endif
 out1:
 #ifdef jumpered_interrupts
 	free_irq(dev->irq, dev);
@@ -691,11 +694,8 @@
 	dev->dma       = dma;
 	dev->mem_start = mem;
 	if (do_netcard_probe(dev) == 0) {
-		if (register_netdev(dev) == 0)
-			this_device = dev;
-			return 0;
-		}
-		cleanup_card(dev);
+		this_device = dev;
+		return 0;
 	}
 	free_netdev(dev);
 	return -ENXIO;
===== drivers/net/lance.c 1.22 vs edited =====
--- 1.22/drivers/net/lance.c	2004-05-21 07:16:23 +10:00
+++ edited/drivers/net/lance.c	2004-06-25 20:01:11 +10:00
@@ -355,11 +355,8 @@
 		dev->base_addr = io[this_dev];
 		dev->dma = dma[this_dev];
 		if (do_lance_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_lance[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_lance[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
@@ -447,12 +444,7 @@
 	err = do_lance_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -723,6 +715,9 @@
 	dev->tx_timeout = lance_tx_timeout;
 	dev->watchdog_timeo = TX_TIMEOUT;
 
+	err = register_netdev(dev);
+	if (err)
+		goto out_dma;
 	return 0;
 out_dma:
 	if (dev->dma != 4)
===== drivers/net/lne390.c 1.14 vs edited =====
--- 1.14/drivers/net/lne390.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/lne390.c	2004-06-25 20:01:12 +10:00
@@ -168,12 +168,7 @@
 	err = do_lne390_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -307,7 +302,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto unmap;
 	return 0;
+unmap:
+	if (ei_status.reg0)
+		iounmap((void *)dev->mem_start);
 cleanup:
 	free_irq(dev->irq, dev);
 	return ret;
@@ -436,11 +438,8 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_lne390_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_lne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_lne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "lne390.c: No LNE390 card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/ne-h8300.c 1.4 vs edited =====
--- 1.4/drivers/net/ne-h8300.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/ne-h8300.c	2004-06-25 20:01:11 +10:00
@@ -180,12 +180,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -325,8 +320,13 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
-	return 0;
 
+	ret = register_netdev(dev);
+	if (ret)
+		goto out_irq;
+	return 0;
+out_irq:
+	free_irq(dev->irq, dev);
 err_out:
 	release_region(ioaddr, NE_IO_EXTENT);
 	return ret;
@@ -633,11 +633,8 @@
 		err = init_reg_offset(dev, dev->base_addr);
 		if (!err) {
 			if (do_ne_probe(dev) == 0) {
-				if (register_netdev(dev) == 0) {
-					dev_ne[found++] = dev;
-					continue;
-				}
-				cleanup_card(dev);
+				dev_ne[found++] = dev;
+				continue;
 			}
 		}
 		free_netdev(dev);
===== drivers/net/ne.c 1.22 vs edited =====
--- 1.22/drivers/net/ne.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/ne.c	2004-06-25 20:01:12 +10:00
@@ -220,12 +220,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -506,8 +501,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	ret = register_netdev(dev);
+	if (ret)
+		goto out_irq;
 	return 0;
 
+out_irq:
+	free_irq(dev->irq, dev);
 err_out:
 	release_region(ioaddr, NE_IO_EXTENT);
 	return ret;
@@ -798,11 +799,8 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		if (found)
===== drivers/net/ne2.c 1.16 vs edited =====
--- 1.16/drivers/net/ne2.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/ne2.c	2004-06-25 20:01:12 +10:00
@@ -301,12 +301,7 @@
 	err = do_ne2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -517,7 +512,14 @@
 	dev->poll_controller = ei_poll;
 #endif
 	NS8390_init(dev, 0);
+
+	retval = register_netdev(dev);
+	if (retval)
+		goto out1;
 	return 0;
+out1:
+	mca_set_adapter_procfn( ei_status.priv, NULL, NULL);
+	free_irq(dev->irq, dev);
 out:
 	release_region(base_addr, NE_IO_EXTENT);
 	return retval;
@@ -800,11 +802,8 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ne[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ne[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		break;
===== drivers/net/smc-ultra.c 1.22 vs edited =====
--- 1.22/drivers/net/smc-ultra.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/smc-ultra.c	2004-06-25 20:01:14 +10:00
@@ -195,12 +195,7 @@
 	err = do_ultra_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -321,6 +316,9 @@
 #endif
 	NS8390_init(dev, 0);
 
+	retval = register_netdev(dev);
+	if (retval)
+		goto out;
 	return 0;
 out:
 	release_region(ioaddr, ULTRA_IO_EXTENT);
@@ -579,11 +577,8 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ultra_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_ultra[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_ultra[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "smc-ultra.c: No SMC Ultra card found (i/o = 0x%x).\n", io[this_dev]);
===== drivers/net/wd.c 1.19 vs edited =====
--- 1.19/drivers/net/wd.c	2004-05-23 03:40:55 +10:00
+++ edited/drivers/net/wd.c	2004-06-25 20:01:15 +10:00
@@ -148,12 +148,7 @@
 	err = do_wd_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
 	return dev;
-out1:
-	cleanup_card(dev);
 out:
 	free_netdev(dev);
 	return ERR_PTR(err);
@@ -163,6 +158,7 @@
 static int __init wd_probe1(struct net_device *dev, int ioaddr)
 {
 	int i;
+	int err;
 	int checksum = 0;
 	int ancient = 0;			/* An old card without config registers. */
 	int word16 = 0;				/* 0 = 8 bit, 1 = 16 bit */
@@ -349,7 +345,10 @@
 		outb(inb(ioaddr+4)|0x80, ioaddr+4);
 #endif
 
-	return 0;
+	err = register_netdev(dev);
+	if (err)
+		free_irq(dev->irq, dev);
+	return err;
 }
 
 static int
@@ -519,11 +518,8 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = mem_end[this_dev];
 		if (do_wd_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
-				dev_wd[found++] = dev;
-				continue;
-			}
-			cleanup_card(dev);
+			dev_wd[found++] = dev;
+			continue;
 		}
 		free_netdev(dev);
 		printk(KERN_WARNING "wd.c: No wd80x3 card found (i/o = 0x%x).\n", io[this_dev]);

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2004-06-25 10:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-13  2:58 [8390] Do not use dev->name before register_netdev Herbert Xu
2004-03-13  2:59 ` [3C501] " Herbert Xu
2004-03-13  4:16 ` [8390] " Luis R. Rodriguez
2004-03-13  5:42   ` Herbert Xu
2004-03-14  6:53 ` Herbert Xu
     [not found] ` <405C294D.5040508@pobox.com>
2004-05-20 11:19   ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Herbert Xu
2004-05-22  7:44     ` 2/x: [NETDRV] Use driver-specific name for resources Herbert Xu
2004-05-29  8:41       ` 3/x: [NETDRV] Add register_ei_netdev Herbert Xu
2004-06-02 20:24         ` Jeff Garzik
2004-06-05  5:27           ` 4/x: [NETDRV] Merge register_netdev calls Herbert Xu
2004-06-06  8:41             ` 5/x: [NETDRV] Move register_netdev into probe function Herbert Xu
     [not found]             ` <40C8F824.50904@pobox.com>
2004-06-11  2:08               ` 4/x: [NETDRV] Merge register_netdev calls Herbert Xu
2004-06-25 10:12                 ` Herbert Xu
2004-05-27 19:22     ` 1/x: [NETDRV] Ifdef builtin-only probe in ISA/MCA drivers Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).