diff options
| -rw-r--r-- | drivers/net/3c503.c | 16 | ||||
| -rw-r--r-- | drivers/net/3c515.c | 12 | ||||
| -rw-r--r-- | drivers/net/3c523.c | 18 | ||||
| -rw-r--r-- | drivers/net/ac3200.c | 19 | ||||
| -rw-r--r-- | drivers/net/cs89x0.c | 19 | ||||
| -rw-r--r-- | drivers/net/e2100.c | 15 | ||||
| -rw-r--r-- | drivers/net/eepro.c | 21 | ||||
| -rw-r--r-- | drivers/net/eexpress.c | 12 | ||||
| -rw-r--r-- | drivers/net/es3210.c | 16 | ||||
| -rw-r--r-- | drivers/net/eth16i.c | 20 | ||||
| -rw-r--r-- | drivers/net/hp-plus.c | 15 | ||||
| -rw-r--r-- | drivers/net/hp.c | 17 | ||||
| -rw-r--r-- | drivers/net/hp100.c | 41 | ||||
| -rw-r--r-- | drivers/net/isa-skeleton.c | 20 | ||||
| -rw-r--r-- | drivers/net/lance.c | 15 | ||||
| -rw-r--r-- | drivers/net/lne390.c | 19 | ||||
| -rw-r--r-- | drivers/net/ne-h8300.c | 19 | ||||
| -rw-r--r-- | drivers/net/ne.c | 18 | ||||
| -rw-r--r-- | drivers/net/ne2.c | 19 | ||||
| -rw-r--r-- | drivers/net/smc-ultra.c | 15 | ||||
| -rw-r--r-- | drivers/net/wd.c | 18 |
21 files changed, 156 insertions, 228 deletions
diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c index 29dfd47f41d2..5c5eebdb6914 100644 --- a/drivers/net/3c503.c +++ b/drivers/net/3c503.c | |||
| @@ -171,12 +171,7 @@ struct net_device * __init el2_probe(int unit) | |||
| 171 | err = do_el2_probe(dev); | 171 | err = do_el2_probe(dev); |
| 172 | if (err) | 172 | if (err) |
| 173 | goto out; | 173 | goto out; |
| 174 | err = register_netdev(dev); | ||
| 175 | if (err) | ||
| 176 | goto out1; | ||
| 177 | return dev; | 174 | return dev; |
| 178 | out1: | ||
| 179 | cleanup_card(dev); | ||
| 180 | out: | 175 | out: |
| 181 | free_netdev(dev); | 176 | free_netdev(dev); |
| 182 | return ERR_PTR(err); | 177 | return ERR_PTR(err); |
| @@ -356,6 +351,10 @@ el2_probe1(struct net_device *dev, int ioaddr) | |||
| 356 | dev->poll_controller = ei_poll; | 351 | dev->poll_controller = ei_poll; |
| 357 | #endif | 352 | #endif |
| 358 | 353 | ||
| 354 | retval = register_netdev(dev); | ||
| 355 | if (retval) | ||
| 356 | goto out1; | ||
| 357 | |||
| 359 | if (dev->mem_start) | 358 | if (dev->mem_start) |
| 360 | printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n", | 359 | printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n", |
| 361 | dev->name, ei_status.name, (wordlength+1)<<3, | 360 | dev->name, ei_status.name, (wordlength+1)<<3, |
| @@ -715,11 +714,8 @@ init_module(void) | |||
| 715 | dev->base_addr = io[this_dev]; | 714 | dev->base_addr = io[this_dev]; |
| 716 | dev->mem_end = xcvr[this_dev]; /* low 4bits = xcvr sel. */ | 715 | dev->mem_end = xcvr[this_dev]; /* low 4bits = xcvr sel. */ |
| 717 | if (do_el2_probe(dev) == 0) { | 716 | if (do_el2_probe(dev) == 0) { |
| 718 | if (register_netdev(dev) == 0) { | 717 | dev_el2[found++] = dev; |
| 719 | dev_el2[found++] = dev; | 718 | continue; |
| 720 | continue; | ||
| 721 | } | ||
| 722 | cleanup_card(dev); | ||
| 723 | } | 719 | } |
| 724 | free_netdev(dev); | 720 | free_netdev(dev); |
| 725 | printk(KERN_WARNING "3c503.c: No 3c503 card found (i/o = 0x%x).\n", io[this_dev]); | 721 | printk(KERN_WARNING "3c503.c: No 3c503 card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c index c4cf4fcd1344..d272ea36a578 100644 --- a/drivers/net/3c515.c +++ b/drivers/net/3c515.c | |||
| @@ -365,7 +365,7 @@ static int nopnp; | |||
| 365 | #endif /* __ISAPNP__ */ | 365 | #endif /* __ISAPNP__ */ |
| 366 | 366 | ||
| 367 | static struct net_device *corkscrew_scan(int unit); | 367 | static struct net_device *corkscrew_scan(int unit); |
| 368 | static void corkscrew_setup(struct net_device *dev, int ioaddr, | 368 | static int corkscrew_setup(struct net_device *dev, int ioaddr, |
| 369 | struct pnp_dev *idev, int card_number); | 369 | struct pnp_dev *idev, int card_number); |
| 370 | static int corkscrew_open(struct net_device *dev); | 370 | static int corkscrew_open(struct net_device *dev); |
| 371 | static void corkscrew_timer(unsigned long arg); | 371 | static void corkscrew_timer(unsigned long arg); |
| @@ -539,10 +539,9 @@ static struct net_device *corkscrew_scan(int unit) | |||
| 539 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", | 539 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", |
| 540 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); | 540 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); |
| 541 | /* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */ | 541 | /* irq = inw(ioaddr + 0x2002) & 15; */ /* Use the irq from isapnp */ |
| 542 | corkscrew_setup(dev, ioaddr, idev, cards_found++); | ||
| 543 | SET_NETDEV_DEV(dev, &idev->dev); | 542 | SET_NETDEV_DEV(dev, &idev->dev); |
| 544 | pnp_cards++; | 543 | pnp_cards++; |
| 545 | err = register_netdev(dev); | 544 | err = corkscrew_setup(dev, ioaddr, idev, cards_found++); |
| 546 | if (!err) | 545 | if (!err) |
| 547 | return dev; | 546 | return dev; |
| 548 | cleanup_card(dev); | 547 | cleanup_card(dev); |
| @@ -558,8 +557,7 @@ no_pnp: | |||
| 558 | 557 | ||
| 559 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", | 558 | printk(KERN_INFO "3c515 Resource configuration register %#4.4x, DCR %4.4x.\n", |
| 560 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); | 559 | inl(ioaddr + 0x2002), inw(ioaddr + 0x2000)); |
| 561 | corkscrew_setup(dev, ioaddr, NULL, cards_found++); | 560 | err = corkscrew_setup(dev, ioaddr, NULL, cards_found++); |
| 562 | err = register_netdev(dev); | ||
| 563 | if (!err) | 561 | if (!err) |
| 564 | return dev; | 562 | return dev; |
| 565 | cleanup_card(dev); | 563 | cleanup_card(dev); |
| @@ -568,7 +566,7 @@ no_pnp: | |||
| 568 | return NULL; | 566 | return NULL; |
| 569 | } | 567 | } |
| 570 | 568 | ||
| 571 | static void corkscrew_setup(struct net_device *dev, int ioaddr, | 569 | static int corkscrew_setup(struct net_device *dev, int ioaddr, |
| 572 | struct pnp_dev *idev, int card_number) | 570 | struct pnp_dev *idev, int card_number) |
| 573 | { | 571 | { |
| 574 | struct corkscrew_private *vp = netdev_priv(dev); | 572 | struct corkscrew_private *vp = netdev_priv(dev); |
| @@ -691,6 +689,8 @@ static void corkscrew_setup(struct net_device *dev, int ioaddr, | |||
| 691 | dev->get_stats = &corkscrew_get_stats; | 689 | dev->get_stats = &corkscrew_get_stats; |
| 692 | dev->set_multicast_list = &set_rx_mode; | 690 | dev->set_multicast_list = &set_rx_mode; |
| 693 | dev->ethtool_ops = &netdev_ethtool_ops; | 691 | dev->ethtool_ops = &netdev_ethtool_ops; |
| 692 | |||
| 693 | return register_netdev(dev); | ||
| 694 | } | 694 | } |
| 695 | 695 | ||
| 696 | 696 | ||
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c index 8f6b2fa13e28..1247a25f1093 100644 --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c | |||
| @@ -572,6 +572,10 @@ static int __init do_elmc_probe(struct net_device *dev) | |||
| 572 | dev->flags&=~IFF_MULTICAST; /* Multicast doesn't work */ | 572 | dev->flags&=~IFF_MULTICAST; /* Multicast doesn't work */ |
| 573 | #endif | 573 | #endif |
| 574 | 574 | ||
| 575 | retval = register_netdev(dev); | ||
| 576 | if (retval) | ||
| 577 | goto err_out; | ||
| 578 | |||
| 575 | return 0; | 579 | return 0; |
| 576 | err_out: | 580 | err_out: |
| 577 | mca_set_adapter_procfn(slot, NULL, NULL); | 581 | mca_set_adapter_procfn(slot, NULL, NULL); |
| @@ -600,12 +604,7 @@ struct net_device * __init elmc_probe(int unit) | |||
| 600 | err = do_elmc_probe(dev); | 604 | err = do_elmc_probe(dev); |
| 601 | if (err) | 605 | if (err) |
| 602 | goto out; | 606 | goto out; |
| 603 | err = register_netdev(dev); | ||
| 604 | if (err) | ||
| 605 | goto out1; | ||
| 606 | return dev; | 607 | return dev; |
| 607 | out1: | ||
| 608 | cleanup_card(dev); | ||
| 609 | out: | 608 | out: |
| 610 | free_netdev(dev); | 609 | free_netdev(dev); |
| 611 | return ERR_PTR(err); | 610 | return ERR_PTR(err); |
| @@ -1288,12 +1287,9 @@ int init_module(void) | |||
| 1288 | dev->irq=irq[this_dev]; | 1287 | dev->irq=irq[this_dev]; |
| 1289 | dev->base_addr=io[this_dev]; | 1288 | dev->base_addr=io[this_dev]; |
| 1290 | if (do_elmc_probe(dev) == 0) { | 1289 | if (do_elmc_probe(dev) == 0) { |
| 1291 | if (register_netdev(dev) == 0) { | 1290 | dev_elmc[this_dev] = dev; |
| 1292 | dev_elmc[this_dev] = dev; | 1291 | found++; |
| 1293 | found++; | 1292 | continue; |
| 1294 | continue; | ||
| 1295 | } | ||
| 1296 | cleanup_card(dev); | ||
| 1297 | } | 1293 | } |
| 1298 | free_netdev(dev); | 1294 | free_netdev(dev); |
| 1299 | if (io[this_dev]==0) | 1295 | if (io[this_dev]==0) |
diff --git a/drivers/net/ac3200.c b/drivers/net/ac3200.c index 24fba36b5c1d..91791ba37769 100644 --- a/drivers/net/ac3200.c +++ b/drivers/net/ac3200.c | |||
| @@ -146,12 +146,7 @@ struct net_device * __init ac3200_probe(int unit) | |||
| 146 | err = do_ac3200_probe(dev); | 146 | err = do_ac3200_probe(dev); |
| 147 | if (err) | 147 | if (err) |
| 148 | goto out; | 148 | goto out; |
| 149 | err = register_netdev(dev); | ||
| 150 | if (err) | ||
| 151 | goto out1; | ||
| 152 | return dev; | 149 | return dev; |
| 153 | out1: | ||
| 154 | cleanup_card(dev); | ||
| 155 | out: | 150 | out: |
| 156 | free_netdev(dev); | 151 | free_netdev(dev); |
| 157 | return ERR_PTR(err); | 152 | return ERR_PTR(err); |
| @@ -273,7 +268,14 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev) | |||
| 273 | dev->poll_controller = ei_poll; | 268 | dev->poll_controller = ei_poll; |
| 274 | #endif | 269 | #endif |
| 275 | NS8390_init(dev, 0); | 270 | NS8390_init(dev, 0); |
| 271 | |||
| 272 | retval = register_netdev(dev); | ||
| 273 | if (retval) | ||
| 274 | goto out2; | ||
| 276 | return 0; | 275 | return 0; |
| 276 | out2: | ||
| 277 | if (ei_status.reg0) | ||
| 278 | iounmap((void *)dev->mem_start); | ||
| 277 | out1: | 279 | out1: |
| 278 | free_irq(dev->irq, dev); | 280 | free_irq(dev->irq, dev); |
| 279 | out: | 281 | out: |
| @@ -392,11 +394,8 @@ init_module(void) | |||
| 392 | dev->base_addr = io[this_dev]; | 394 | dev->base_addr = io[this_dev]; |
| 393 | dev->mem_start = mem[this_dev]; /* Currently ignored by driver */ | 395 | dev->mem_start = mem[this_dev]; /* Currently ignored by driver */ |
| 394 | if (do_ac3200_probe(dev) == 0) { | 396 | if (do_ac3200_probe(dev) == 0) { |
| 395 | if (register_netdev(dev) == 0) { | 397 | dev_ac32[found++] = dev; |
| 396 | dev_ac32[found++] = dev; | 398 | continue; |
| 397 | continue; | ||
| 398 | } | ||
| 399 | cleanup_card(dev); | ||
| 400 | } | 399 | } |
| 401 | free_netdev(dev); | 400 | free_netdev(dev); |
| 402 | printk(KERN_WARNING "ac3200.c: No ac3200 card found (i/o = 0x%x).\n", io[this_dev]); | 401 | printk(KERN_WARNING "ac3200.c: No ac3200 card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index 5c5f540da26a..25e4495de79e 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c | |||
| @@ -319,13 +319,7 @@ struct net_device * __init cs89x0_probe(int unit) | |||
| 319 | } | 319 | } |
| 320 | if (err) | 320 | if (err) |
| 321 | goto out; | 321 | goto out; |
| 322 | err = register_netdev(dev); | ||
| 323 | if (err) | ||
| 324 | goto out1; | ||
| 325 | return dev; | 322 | return dev; |
| 326 | out1: | ||
| 327 | outw(PP_ChipID, dev->base_addr + ADD_PORT); | ||
| 328 | release_region(dev->base_addr, NETCARD_IO_EXTENT); | ||
| 329 | out: | 323 | out: |
| 330 | free_netdev(dev); | 324 | free_netdev(dev); |
| 331 | printk(KERN_WARNING "cs89x0: no cs8900 or cs8920 detected. Be sure to disable PnP with SETUP\n"); | 325 | printk(KERN_WARNING "cs89x0: no cs8900 or cs8920 detected. Be sure to disable PnP with SETUP\n"); |
| @@ -735,7 +729,13 @@ printk("PP_addr=0x%x\n", inw(ioaddr + ADD_PORT)); | |||
| 735 | printk("\n"); | 729 | printk("\n"); |
| 736 | if (net_debug) | 730 | if (net_debug) |
| 737 | printk("cs89x0_probe1() successful\n"); | 731 | printk("cs89x0_probe1() successful\n"); |
| 732 | |||
| 733 | retval = register_netdev(dev); | ||
| 734 | if (retval) | ||
| 735 | goto out3; | ||
| 738 | return 0; | 736 | return 0; |
| 737 | out3: | ||
| 738 | outw(PP_ChipID, dev->base_addr + ADD_PORT); | ||
| 739 | out2: | 739 | out2: |
| 740 | release_region(ioaddr & ~3, NETCARD_IO_EXTENT); | 740 | release_region(ioaddr & ~3, NETCARD_IO_EXTENT); |
| 741 | out1: | 741 | out1: |
| @@ -1831,13 +1831,6 @@ init_module(void) | |||
| 1831 | if (ret) | 1831 | if (ret) |
| 1832 | goto out; | 1832 | goto out; |
| 1833 | 1833 | ||
| 1834 | if (register_netdev(dev) != 0) { | ||
| 1835 | printk(KERN_ERR "cs89x0.c: No card found at 0x%x\n", io); | ||
| 1836 | ret = -ENXIO; | ||
| 1837 | outw(PP_ChipID, dev->base_addr + ADD_PORT); | ||
| 1838 | release_region(dev->base_addr, NETCARD_IO_EXTENT); | ||
| 1839 | goto out; | ||
| 1840 | } | ||
| 1841 | dev_cs89x0 = dev; | 1834 | dev_cs89x0 = dev; |
| 1842 | return 0; | 1835 | return 0; |
| 1843 | out: | 1836 | out: |
diff --git a/drivers/net/e2100.c b/drivers/net/e2100.c index 51c9fa260830..f5a4dd7d8564 100644 --- a/drivers/net/e2100.c +++ b/drivers/net/e2100.c | |||
| @@ -162,12 +162,7 @@ struct net_device * __init e2100_probe(int unit) | |||
| 162 | err = do_e2100_probe(dev); | 162 | err = do_e2100_probe(dev); |
| 163 | if (err) | 163 | if (err) |
| 164 | goto out; | 164 | goto out; |
| 165 | err = register_netdev(dev); | ||
| 166 | if (err) | ||
| 167 | goto out1; | ||
| 168 | return dev; | 165 | return dev; |
| 169 | out1: | ||
| 170 | cleanup_card(dev); | ||
| 171 | out: | 166 | out: |
| 172 | free_netdev(dev); | 167 | free_netdev(dev); |
| 173 | return ERR_PTR(err); | 168 | return ERR_PTR(err); |
| @@ -286,6 +281,9 @@ static int __init e21_probe1(struct net_device *dev, int ioaddr) | |||
| 286 | #endif | 281 | #endif |
| 287 | NS8390_init(dev, 0); | 282 | NS8390_init(dev, 0); |
| 288 | 283 | ||
| 284 | retval = register_netdev(dev); | ||
| 285 | if (retval) | ||
| 286 | goto out; | ||
| 289 | return 0; | 287 | return 0; |
| 290 | out: | 288 | out: |
| 291 | release_region(ioaddr, E21_IO_EXTENT); | 289 | release_region(ioaddr, E21_IO_EXTENT); |
| @@ -453,11 +451,8 @@ init_module(void) | |||
| 453 | dev->mem_start = mem[this_dev]; | 451 | dev->mem_start = mem[this_dev]; |
| 454 | dev->mem_end = xcvr[this_dev]; /* low 4bits = xcvr sel. */ | 452 | dev->mem_end = xcvr[this_dev]; /* low 4bits = xcvr sel. */ |
| 455 | if (do_e2100_probe(dev) == 0) { | 453 | if (do_e2100_probe(dev) == 0) { |
| 456 | if (register_netdev(dev) == 0) { | 454 | dev_e21[found++] = dev; |
| 457 | dev_e21[found++] = dev; | 455 | continue; |
| 458 | continue; | ||
| 459 | } | ||
| 460 | cleanup_card(dev); | ||
| 461 | } | 456 | } |
| 462 | free_netdev(dev); | 457 | free_netdev(dev); |
| 463 | printk(KERN_WARNING "e2100.c: No E2100 card found (i/o = 0x%x).\n", io[this_dev]); | 458 | printk(KERN_WARNING "e2100.c: No E2100 card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/eepro.c b/drivers/net/eepro.c index cd2475683027..dcb3028bb60f 100644 --- a/drivers/net/eepro.c +++ b/drivers/net/eepro.c | |||
| @@ -600,12 +600,7 @@ struct net_device * __init eepro_probe(int unit) | |||
| 600 | err = do_eepro_probe(dev); | 600 | err = do_eepro_probe(dev); |
| 601 | if (err) | 601 | if (err) |
| 602 | goto out; | 602 | goto out; |
| 603 | err = register_netdev(dev); | ||
| 604 | if (err) | ||
| 605 | goto out1; | ||
| 606 | return dev; | 603 | return dev; |
| 607 | out1: | ||
| 608 | release_region(dev->base_addr, EEPRO_IO_EXTENT); | ||
| 609 | out: | 604 | out: |
| 610 | free_netdev(dev); | 605 | free_netdev(dev); |
| 611 | return ERR_PTR(err); | 606 | return ERR_PTR(err); |
| @@ -758,6 +753,7 @@ static int __init eepro_probe1(struct net_device *dev, int autoprobe) | |||
| 758 | int i; | 753 | int i; |
| 759 | struct eepro_local *lp; | 754 | struct eepro_local *lp; |
| 760 | int ioaddr = dev->base_addr; | 755 | int ioaddr = dev->base_addr; |
| 756 | int err; | ||
| 761 | 757 | ||
| 762 | /* Grab the region so we can find another board if autoIRQ fails. */ | 758 | /* Grab the region so we can find another board if autoIRQ fails. */ |
| 763 | if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { | 759 | if (!request_region(ioaddr, EEPRO_IO_EXTENT, DRV_NAME)) { |
| @@ -873,10 +869,16 @@ static int __init eepro_probe1(struct net_device *dev, int autoprobe) | |||
| 873 | 869 | ||
| 874 | /* reset 82595 */ | 870 | /* reset 82595 */ |
| 875 | eepro_reset(ioaddr); | 871 | eepro_reset(ioaddr); |
| 872 | |||
| 873 | err = register_netdev(dev); | ||
| 874 | if (err) | ||
| 875 | goto err; | ||
| 876 | return 0; | 876 | return 0; |
| 877 | exit: | 877 | exit: |
| 878 | err = -ENODEV; | ||
| 879 | err: | ||
| 878 | release_region(dev->base_addr, EEPRO_IO_EXTENT); | 880 | release_region(dev->base_addr, EEPRO_IO_EXTENT); |
| 879 | return -ENODEV; | 881 | return err; |
| 880 | } | 882 | } |
| 881 | 883 | ||
| 882 | /* Open/initialize the board. This is called (in the current kernel) | 884 | /* Open/initialize the board. This is called (in the current kernel) |
| @@ -1834,11 +1836,8 @@ init_module(void) | |||
| 1834 | dev->irq = irq[i]; | 1836 | dev->irq = irq[i]; |
| 1835 | 1837 | ||
| 1836 | if (do_eepro_probe(dev) == 0) { | 1838 | if (do_eepro_probe(dev) == 0) { |
| 1837 | if (register_netdev(dev) == 0) { | 1839 | dev_eepro[n_eepro++] = dev; |
| 1838 | dev_eepro[n_eepro++] = dev; | 1840 | continue; |
| 1839 | continue; | ||
| 1840 | } | ||
| 1841 | release_region(dev->base_addr, EEPRO_IO_EXTENT); | ||
| 1842 | } | 1841 | } |
| 1843 | free_netdev(dev); | 1842 | free_netdev(dev); |
| 1844 | break; | 1843 | break; |
diff --git a/drivers/net/eexpress.c b/drivers/net/eexpress.c index fc8e7947b334..82bd356e4f3a 100644 --- a/drivers/net/eexpress.c +++ b/drivers/net/eexpress.c | |||
| @@ -436,11 +436,8 @@ struct net_device * __init express_probe(int unit) | |||
| 436 | netdev_boot_setup_check(dev); | 436 | netdev_boot_setup_check(dev); |
| 437 | 437 | ||
| 438 | err = do_express_probe(dev); | 438 | err = do_express_probe(dev); |
| 439 | if (!err) { | 439 | if (!err) |
| 440 | err = register_netdev(dev); | 440 | return dev; |
| 441 | if (!err) | ||
| 442 | return dev; | ||
| 443 | } | ||
| 444 | free_netdev(dev); | 441 | free_netdev(dev); |
| 445 | return ERR_PTR(err); | 442 | return ERR_PTR(err); |
| 446 | } | 443 | } |
| @@ -1205,7 +1202,8 @@ static int __init eexp_hw_probe(struct net_device *dev, unsigned short ioaddr) | |||
| 1205 | dev->set_multicast_list = &eexp_set_multicast; | 1202 | dev->set_multicast_list = &eexp_set_multicast; |
| 1206 | dev->tx_timeout = eexp_timeout; | 1203 | dev->tx_timeout = eexp_timeout; |
| 1207 | dev->watchdog_timeo = 2*HZ; | 1204 | dev->watchdog_timeo = 2*HZ; |
| 1208 | return 0; | 1205 | |
| 1206 | return register_netdev(dev); | ||
| 1209 | } | 1207 | } |
| 1210 | 1208 | ||
| 1211 | /* | 1209 | /* |
| @@ -1716,7 +1714,7 @@ int init_module(void) | |||
| 1716 | break; | 1714 | break; |
| 1717 | printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n"); | 1715 | printk(KERN_NOTICE "eexpress.c: Module autoprobe not recommended, give io=xx.\n"); |
| 1718 | } | 1716 | } |
| 1719 | if (do_express_probe(dev) == 0 && register_netdev(dev) == 0) { | 1717 | if (do_express_probe(dev) == 0) { |
| 1720 | dev_eexp[this_dev] = dev; | 1718 | dev_eexp[this_dev] = dev; |
| 1721 | found++; | 1719 | found++; |
| 1722 | continue; | 1720 | continue; |
diff --git a/drivers/net/es3210.c b/drivers/net/es3210.c index f1e8150ed2a0..50f8e23bb9e5 100644 --- a/drivers/net/es3210.c +++ b/drivers/net/es3210.c | |||
| @@ -177,12 +177,7 @@ struct net_device * __init es_probe(int unit) | |||
| 177 | err = do_es_probe(dev); | 177 | err = do_es_probe(dev); |
| 178 | if (err) | 178 | if (err) |
| 179 | goto out; | 179 | goto out; |
| 180 | err = register_netdev(dev); | ||
| 181 | if (err) | ||
| 182 | goto out1; | ||
| 183 | return dev; | 180 | return dev; |
| 184 | out1: | ||
| 185 | cleanup_card(dev); | ||
| 186 | out: | 181 | out: |
| 187 | free_netdev(dev); | 182 | free_netdev(dev); |
| 188 | return ERR_PTR(err); | 183 | return ERR_PTR(err); |
| @@ -310,6 +305,10 @@ static int __init es_probe1(struct net_device *dev, int ioaddr) | |||
| 310 | dev->poll_controller = ei_poll; | 305 | dev->poll_controller = ei_poll; |
| 311 | #endif | 306 | #endif |
| 312 | NS8390_init(dev, 0); | 307 | NS8390_init(dev, 0); |
| 308 | |||
| 309 | retval = register_netdev(dev); | ||
| 310 | if (retval) | ||
| 311 | goto out1; | ||
| 313 | return 0; | 312 | return 0; |
| 314 | out1: | 313 | out1: |
| 315 | free_irq(dev->irq, dev); | 314 | free_irq(dev->irq, dev); |
| @@ -445,11 +444,8 @@ init_module(void) | |||
| 445 | dev->base_addr = io[this_dev]; | 444 | dev->base_addr = io[this_dev]; |
| 446 | dev->mem_start = mem[this_dev]; | 445 | dev->mem_start = mem[this_dev]; |
| 447 | if (do_es_probe(dev) == 0) { | 446 | if (do_es_probe(dev) == 0) { |
| 448 | if (register_netdev(dev) == 0) { | 447 | dev_es3210[found++] = dev; |
| 449 | dev_es3210[found++] = dev; | 448 | continue; |
| 450 | continue; | ||
| 451 | } | ||
| 452 | cleanup_card(dev); | ||
| 453 | } | 449 | } |
| 454 | free_netdev(dev); | 450 | free_netdev(dev); |
| 455 | printk(KERN_WARNING "es3210.c: No es3210 card found (i/o = 0x%x).\n", io[this_dev]); | 451 | printk(KERN_WARNING "es3210.c: No es3210 card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/eth16i.c b/drivers/net/eth16i.c index ccae6ba5f7c5..f32a6b3acb2a 100644 --- a/drivers/net/eth16i.c +++ b/drivers/net/eth16i.c | |||
| @@ -473,13 +473,7 @@ struct net_device * __init eth16i_probe(int unit) | |||
| 473 | err = do_eth16i_probe(dev); | 473 | err = do_eth16i_probe(dev); |
| 474 | if (err) | 474 | if (err) |
| 475 | goto out; | 475 | goto out; |
| 476 | err = register_netdev(dev); | ||
| 477 | if (err) | ||
| 478 | goto out1; | ||
| 479 | return dev; | 476 | return dev; |
| 480 | out1: | ||
| 481 | free_irq(dev->irq, dev); | ||
| 482 | release_region(dev->base_addr, ETH16I_IO_EXTENT); | ||
| 483 | out: | 477 | out: |
| 484 | free_netdev(dev); | 478 | free_netdev(dev); |
| 485 | return ERR_PTR(err); | 479 | return ERR_PTR(err); |
| @@ -569,7 +563,13 @@ static int __init eth16i_probe1(struct net_device *dev, int ioaddr) | |||
| 569 | dev->tx_timeout = eth16i_timeout; | 563 | dev->tx_timeout = eth16i_timeout; |
| 570 | dev->watchdog_timeo = TX_TIMEOUT; | 564 | dev->watchdog_timeo = TX_TIMEOUT; |
| 571 | spin_lock_init(&lp->lock); | 565 | spin_lock_init(&lp->lock); |
| 566 | |||
| 567 | retval = register_netdev(dev); | ||
| 568 | if (retval) | ||
| 569 | goto out1; | ||
| 572 | return 0; | 570 | return 0; |
| 571 | out1: | ||
| 572 | free_irq(dev->irq, dev); | ||
| 573 | out: | 573 | out: |
| 574 | release_region(ioaddr, ETH16I_IO_EXTENT); | 574 | release_region(ioaddr, ETH16I_IO_EXTENT); |
| 575 | return retval; | 575 | return retval; |
| @@ -1462,12 +1462,8 @@ int init_module(void) | |||
| 1462 | } | 1462 | } |
| 1463 | 1463 | ||
| 1464 | if (do_eth16i_probe(dev) == 0) { | 1464 | if (do_eth16i_probe(dev) == 0) { |
| 1465 | if (register_netdev(dev) == 0) { | 1465 | dev_eth16i[found++] = dev; |
| 1466 | dev_eth16i[found++] = dev; | 1466 | continue; |
| 1467 | continue; | ||
| 1468 | } | ||
| 1469 | free_irq(dev->irq, dev); | ||
| 1470 | release_region(dev->base_addr, ETH16I_IO_EXTENT); | ||
| 1471 | } | 1467 | } |
| 1472 | printk(KERN_WARNING "eth16i.c No Eth16i card found (i/o = 0x%x).\n", | 1468 | printk(KERN_WARNING "eth16i.c No Eth16i card found (i/o = 0x%x).\n", |
| 1473 | io[this_dev]); | 1469 | io[this_dev]); |
diff --git a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c index 4834314b676d..0abf5dd08b4c 100644 --- a/drivers/net/hp-plus.c +++ b/drivers/net/hp-plus.c | |||
| @@ -159,12 +159,7 @@ struct net_device * __init hp_plus_probe(int unit) | |||
| 159 | err = do_hpp_probe(dev); | 159 | err = do_hpp_probe(dev); |
| 160 | if (err) | 160 | if (err) |
| 161 | goto out; | 161 | goto out; |
| 162 | err = register_netdev(dev); | ||
| 163 | if (err) | ||
| 164 | goto out1; | ||
| 165 | return dev; | 162 | return dev; |
| 166 | out1: | ||
| 167 | cleanup_card(dev); | ||
| 168 | out: | 163 | out: |
| 169 | free_netdev(dev); | 164 | free_netdev(dev); |
| 170 | return ERR_PTR(err); | 165 | return ERR_PTR(err); |
| @@ -271,6 +266,9 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr) | |||
| 271 | /* Leave the 8390 and HP chip reset. */ | 266 | /* Leave the 8390 and HP chip reset. */ |
| 272 | outw(inw(ioaddr + HPP_OPTION) & ~EnableIRQ, ioaddr + HPP_OPTION); | 267 | outw(inw(ioaddr + HPP_OPTION) & ~EnableIRQ, ioaddr + HPP_OPTION); |
| 273 | 268 | ||
| 269 | retval = register_netdev(dev); | ||
| 270 | if (retval) | ||
| 271 | goto out; | ||
| 274 | return 0; | 272 | return 0; |
| 275 | out: | 273 | out: |
| 276 | release_region(ioaddr, HP_IO_EXTENT); | 274 | release_region(ioaddr, HP_IO_EXTENT); |
| @@ -463,11 +461,8 @@ init_module(void) | |||
| 463 | dev->irq = irq[this_dev]; | 461 | dev->irq = irq[this_dev]; |
| 464 | dev->base_addr = io[this_dev]; | 462 | dev->base_addr = io[this_dev]; |
| 465 | if (do_hpp_probe(dev) == 0) { | 463 | if (do_hpp_probe(dev) == 0) { |
| 466 | if (register_netdev(dev) == 0) { | 464 | dev_hpp[found++] = dev; |
| 467 | dev_hpp[found++] = dev; | 465 | continue; |
| 468 | continue; | ||
| 469 | } | ||
| 470 | cleanup_card(dev); | ||
| 471 | } | 466 | } |
| 472 | free_netdev(dev); | 467 | free_netdev(dev); |
| 473 | printk(KERN_WARNING "hp-plus.c: No HP-Plus card found (i/o = 0x%x).\n", io[this_dev]); | 468 | printk(KERN_WARNING "hp-plus.c: No HP-Plus card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/hp.c b/drivers/net/hp.c index 026888611d6f..59cf841b14ab 100644 --- a/drivers/net/hp.c +++ b/drivers/net/hp.c | |||
| @@ -123,12 +123,7 @@ struct net_device * __init hp_probe(int unit) | |||
| 123 | err = do_hp_probe(dev); | 123 | err = do_hp_probe(dev); |
| 124 | if (err) | 124 | if (err) |
| 125 | goto out; | 125 | goto out; |
| 126 | err = register_netdev(dev); | ||
| 127 | if (err) | ||
| 128 | goto out1; | ||
| 129 | return dev; | 126 | return dev; |
| 130 | out1: | ||
| 131 | cleanup_card(dev); | ||
| 132 | out: | 127 | out: |
| 133 | free_netdev(dev); | 128 | free_netdev(dev); |
| 134 | return ERR_PTR(err); | 129 | return ERR_PTR(err); |
| @@ -227,7 +222,12 @@ static int __init hp_probe1(struct net_device *dev, int ioaddr) | |||
| 227 | ei_status.block_output = &hp_block_output; | 222 | ei_status.block_output = &hp_block_output; |
| 228 | hp_init_card(dev); | 223 | hp_init_card(dev); |
| 229 | 224 | ||
| 225 | retval = register_netdev(dev); | ||
| 226 | if (retval) | ||
| 227 | goto out1; | ||
| 230 | return 0; | 228 | return 0; |
| 229 | out1: | ||
| 230 | free_irq(dev->irq, dev); | ||
| 231 | out: | 231 | out: |
| 232 | release_region(ioaddr, HP_IO_EXTENT); | 232 | release_region(ioaddr, HP_IO_EXTENT); |
| 233 | return retval; | 233 | return retval; |
| @@ -432,11 +432,8 @@ init_module(void) | |||
| 432 | dev->irq = irq[this_dev]; | 432 | dev->irq = irq[this_dev]; |
| 433 | dev->base_addr = io[this_dev]; | 433 | dev->base_addr = io[this_dev]; |
| 434 | if (do_hp_probe(dev) == 0) { | 434 | if (do_hp_probe(dev) == 0) { |
| 435 | if (register_netdev(dev) == 0) { | 435 | dev_hp[found++] = dev; |
| 436 | dev_hp[found++] = dev; | 436 | continue; |
| 437 | continue; | ||
| 438 | } | ||
| 439 | cleanup_card(dev); | ||
| 440 | } | 437 | } |
| 441 | free_netdev(dev); | 438 | free_netdev(dev); |
| 442 | printk(KERN_WARNING "hp.c: No HP card found (i/o = 0x%x).\n", io[this_dev]); | 439 | printk(KERN_WARNING "hp.c: No HP card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/hp100.c b/drivers/net/hp100.c index b3a898c5a585..c9d1a86d9594 100644 --- a/drivers/net/hp100.c +++ b/drivers/net/hp100.c | |||
| @@ -417,12 +417,7 @@ struct net_device * __init hp100_probe(int unit) | |||
| 417 | if (err) | 417 | if (err) |
| 418 | goto out; | 418 | goto out; |
| 419 | 419 | ||
| 420 | err = register_netdev(dev); | ||
| 421 | if (err) | ||
| 422 | goto out1; | ||
| 423 | return dev; | 420 | return dev; |
| 424 | out1: | ||
| 425 | release_region(dev->base_addr, HP100_REGION_SIZE); | ||
| 426 | out: | 421 | out: |
| 427 | free_netdev(dev); | 422 | free_netdev(dev); |
| 428 | return ERR_PTR(err); | 423 | return ERR_PTR(err); |
| @@ -776,11 +771,22 @@ static int __devinit hp100_probe1(struct net_device *dev, int ioaddr, | |||
| 776 | printk("Warning! Link down.\n"); | 771 | printk("Warning! Link down.\n"); |
| 777 | } | 772 | } |
| 778 | 773 | ||
| 774 | err = register_netdev(dev); | ||
| 775 | if (err) | ||
| 776 | goto out3; | ||
| 777 | |||
| 779 | return 0; | 778 | return 0; |
| 779 | out3: | ||
| 780 | if (local_mode == 1) | ||
| 781 | pci_free_consistent(lp->pci_dev, MAX_RINGSIZE + 0x0f, | ||
| 782 | lp->page_vaddr_algn, | ||
| 783 | virt_to_whatever(dev, lp->page_vaddr_algn)); | ||
| 784 | if (mem_ptr_virt) | ||
| 785 | iounmap(mem_ptr_virt); | ||
| 780 | out2: | 786 | out2: |
| 781 | release_region(ioaddr, HP100_REGION_SIZE); | 787 | release_region(ioaddr, HP100_REGION_SIZE); |
| 782 | out1: | 788 | out1: |
| 783 | return -ENODEV; | 789 | return err; |
| 784 | } | 790 | } |
| 785 | 791 | ||
| 786 | /* This procedure puts the card into a stable init state */ | 792 | /* This procedure puts the card into a stable init state */ |
| @@ -2875,18 +2881,12 @@ static int __init hp100_eisa_probe (struct device *gendev) | |||
| 2875 | if (err) | 2881 | if (err) |
| 2876 | goto out1; | 2882 | goto out1; |
| 2877 | 2883 | ||
| 2878 | err = register_netdev(dev); | ||
| 2879 | if (err) | ||
| 2880 | goto out2; | ||
| 2881 | |||
| 2882 | #ifdef HP100_DEBUG | 2884 | #ifdef HP100_DEBUG |
| 2883 | printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, | 2885 | printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, |
| 2884 | dev->base_addr); | 2886 | dev->base_addr); |
| 2885 | #endif | 2887 | #endif |
| 2886 | gendev->driver_data = dev; | 2888 | gendev->driver_data = dev; |
| 2887 | return 0; | 2889 | return 0; |
| 2888 | out2: | ||
| 2889 | release_region(dev->base_addr, HP100_REGION_SIZE); | ||
| 2890 | out1: | 2890 | out1: |
| 2891 | free_netdev(dev); | 2891 | free_netdev(dev); |
| 2892 | return err; | 2892 | return err; |
| @@ -2951,17 +2951,12 @@ static int __devinit hp100_pci_probe (struct pci_dev *pdev, | |||
| 2951 | err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev); | 2951 | err = hp100_probe1(dev, ioaddr, HP100_BUS_PCI, pdev); |
| 2952 | if (err) | 2952 | if (err) |
| 2953 | goto out1; | 2953 | goto out1; |
| 2954 | err = register_netdev(dev); | ||
| 2955 | if (err) | ||
| 2956 | goto out2; | ||
| 2957 | 2954 | ||
| 2958 | #ifdef HP100_DEBUG | 2955 | #ifdef HP100_DEBUG |
| 2959 | printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); | 2956 | printk("hp100: %s: PCI adapter found at 0x%x\n", dev->name, ioaddr); |
| 2960 | #endif | 2957 | #endif |
| 2961 | pci_set_drvdata(pdev, dev); | 2958 | pci_set_drvdata(pdev, dev); |
| 2962 | return 0; | 2959 | return 0; |
| 2963 | out2: | ||
| 2964 | release_region(dev->base_addr, HP100_REGION_SIZE); | ||
| 2965 | out1: | 2960 | out1: |
| 2966 | free_netdev(dev); | 2961 | free_netdev(dev); |
| 2967 | out0: | 2962 | out0: |
| @@ -3032,15 +3027,9 @@ static int __init hp100_isa_init(void) | |||
| 3032 | SET_MODULE_OWNER(dev); | 3027 | SET_MODULE_OWNER(dev); |
| 3033 | 3028 | ||
| 3034 | err = hp100_isa_probe(dev, hp100_port[i]); | 3029 | err = hp100_isa_probe(dev, hp100_port[i]); |
| 3035 | if (!err) { | 3030 | if (!err) |
| 3036 | err = register_netdev(dev); | 3031 | hp100_devlist[cards++] = dev; |
| 3037 | if (!err) | 3032 | else |
| 3038 | hp100_devlist[cards++] = dev; | ||
| 3039 | else | ||
| 3040 | release_region(dev->base_addr, HP100_REGION_SIZE); | ||
| 3041 | } | ||
| 3042 | |||
| 3043 | if (err) | ||
| 3044 | free_netdev(dev); | 3033 | free_netdev(dev); |
| 3045 | } | 3034 | } |
| 3046 | 3035 | ||
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c index 50bebb55e9ee..88ae8a04fabc 100644 --- a/drivers/net/isa-skeleton.c +++ b/drivers/net/isa-skeleton.c | |||
| @@ -176,12 +176,7 @@ struct net_device * __init netcard_probe(int unit) | |||
| 176 | err = do_netcard_probe(dev); | 176 | err = do_netcard_probe(dev); |
| 177 | if (err) | 177 | if (err) |
| 178 | goto out; | 178 | goto out; |
| 179 | err = register_netdev(dev); | ||
| 180 | if (err) | ||
| 181 | goto out1; | ||
| 182 | return dev; | 179 | return dev; |
| 183 | out1: | ||
| 184 | cleanup_card(dev); | ||
| 185 | out: | 180 | out: |
| 186 | free_netdev(dev); | 181 | free_netdev(dev); |
| 187 | return ERR_PTR(err); | 182 | return ERR_PTR(err); |
| @@ -316,7 +311,15 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr) | |||
| 316 | 311 | ||
| 317 | dev->tx_timeout = &net_tx_timeout; | 312 | dev->tx_timeout = &net_tx_timeout; |
| 318 | dev->watchdog_timeo = MY_TX_TIMEOUT; | 313 | dev->watchdog_timeo = MY_TX_TIMEOUT; |
| 314 | |||
| 315 | err = register_netdev(dev); | ||
| 316 | if (err) | ||
| 317 | goto out2; | ||
| 319 | return 0; | 318 | return 0; |
| 319 | out2: | ||
| 320 | #ifdef jumpered_dma | ||
| 321 | free_dma(dev->dma); | ||
| 322 | #endif | ||
| 320 | out1: | 323 | out1: |
| 321 | #ifdef jumpered_interrupts | 324 | #ifdef jumpered_interrupts |
| 322 | free_irq(dev->irq, dev); | 325 | free_irq(dev->irq, dev); |
| @@ -691,11 +694,8 @@ int init_module(void) | |||
| 691 | dev->dma = dma; | 694 | dev->dma = dma; |
| 692 | dev->mem_start = mem; | 695 | dev->mem_start = mem; |
| 693 | if (do_netcard_probe(dev) == 0) { | 696 | if (do_netcard_probe(dev) == 0) { |
| 694 | if (register_netdev(dev) == 0) | 697 | this_device = dev; |
| 695 | this_device = dev; | 698 | return 0; |
| 696 | return 0; | ||
| 697 | } | ||
| 698 | cleanup_card(dev); | ||
| 699 | } | 699 | } |
| 700 | free_netdev(dev); | 700 | free_netdev(dev); |
| 701 | return -ENXIO; | 701 | return -ENXIO; |
diff --git a/drivers/net/lance.c b/drivers/net/lance.c index dec557fb6a99..ca90f0d1e4b0 100644 --- a/drivers/net/lance.c +++ b/drivers/net/lance.c | |||
| @@ -356,11 +356,8 @@ int init_module(void) | |||
| 356 | dev->base_addr = io[this_dev]; | 356 | dev->base_addr = io[this_dev]; |
| 357 | dev->dma = dma[this_dev]; | 357 | dev->dma = dma[this_dev]; |
| 358 | if (do_lance_probe(dev) == 0) { | 358 | if (do_lance_probe(dev) == 0) { |
| 359 | if (register_netdev(dev) == 0) { | 359 | dev_lance[found++] = dev; |
| 360 | dev_lance[found++] = dev; | 360 | continue; |
| 361 | continue; | ||
| 362 | } | ||
| 363 | cleanup_card(dev); | ||
| 364 | } | 361 | } |
| 365 | free_netdev(dev); | 362 | free_netdev(dev); |
| 366 | break; | 363 | break; |
| @@ -448,12 +445,7 @@ struct net_device * __init lance_probe(int unit) | |||
| 448 | err = do_lance_probe(dev); | 445 | err = do_lance_probe(dev); |
| 449 | if (err) | 446 | if (err) |
| 450 | goto out; | 447 | goto out; |
| 451 | err = register_netdev(dev); | ||
| 452 | if (err) | ||
| 453 | goto out1; | ||
| 454 | return dev; | 448 | return dev; |
| 455 | out1: | ||
| 456 | cleanup_card(dev); | ||
| 457 | out: | 449 | out: |
| 458 | free_netdev(dev); | 450 | free_netdev(dev); |
| 459 | return ERR_PTR(err); | 451 | return ERR_PTR(err); |
| @@ -724,6 +716,9 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int | |||
| 724 | dev->tx_timeout = lance_tx_timeout; | 716 | dev->tx_timeout = lance_tx_timeout; |
| 725 | dev->watchdog_timeo = TX_TIMEOUT; | 717 | dev->watchdog_timeo = TX_TIMEOUT; |
| 726 | 718 | ||
| 719 | err = register_netdev(dev); | ||
| 720 | if (err) | ||
| 721 | goto out_dma; | ||
| 727 | return 0; | 722 | return 0; |
| 728 | out_dma: | 723 | out_dma: |
| 729 | if (dev->dma != 4) | 724 | if (dev->dma != 4) |
diff --git a/drivers/net/lne390.c b/drivers/net/lne390.c index 179a97c0af69..27f0d8ac4c40 100644 --- a/drivers/net/lne390.c +++ b/drivers/net/lne390.c | |||
| @@ -167,12 +167,7 @@ struct net_device * __init lne390_probe(int unit) | |||
| 167 | err = do_lne390_probe(dev); | 167 | err = do_lne390_probe(dev); |
| 168 | if (err) | 168 | if (err) |
| 169 | goto out; | 169 | goto out; |
| 170 | err = register_netdev(dev); | ||
| 171 | if (err) | ||
| 172 | goto out1; | ||
| 173 | return dev; | 170 | return dev; |
| 174 | out1: | ||
| 175 | cleanup_card(dev); | ||
| 176 | out: | 171 | out: |
| 177 | free_netdev(dev); | 172 | free_netdev(dev); |
| 178 | return ERR_PTR(err); | 173 | return ERR_PTR(err); |
| @@ -296,7 +291,14 @@ static int __init lne390_probe1(struct net_device *dev, int ioaddr) | |||
| 296 | dev->poll_controller = ei_poll; | 291 | dev->poll_controller = ei_poll; |
| 297 | #endif | 292 | #endif |
| 298 | NS8390_init(dev, 0); | 293 | NS8390_init(dev, 0); |
| 294 | |||
| 295 | ret = register_netdev(dev); | ||
| 296 | if (ret) | ||
| 297 | goto unmap; | ||
| 299 | return 0; | 298 | return 0; |
| 299 | unmap: | ||
| 300 | if (ei_status.reg0) | ||
| 301 | iounmap((void *)dev->mem_start); | ||
| 300 | cleanup: | 302 | cleanup: |
| 301 | free_irq(dev->irq, dev); | 303 | free_irq(dev->irq, dev); |
| 302 | return ret; | 304 | return ret; |
| @@ -426,11 +428,8 @@ int init_module(void) | |||
| 426 | dev->base_addr = io[this_dev]; | 428 | dev->base_addr = io[this_dev]; |
| 427 | dev->mem_start = mem[this_dev]; | 429 | dev->mem_start = mem[this_dev]; |
| 428 | if (do_lne390_probe(dev) == 0) { | 430 | if (do_lne390_probe(dev) == 0) { |
| 429 | if (register_netdev(dev) == 0) { | 431 | dev_lne[found++] = dev; |
| 430 | dev_lne[found++] = dev; | 432 | continue; |
| 431 | continue; | ||
| 432 | } | ||
| 433 | cleanup_card(dev); | ||
| 434 | } | 433 | } |
| 435 | free_netdev(dev); | 434 | free_netdev(dev); |
| 436 | printk(KERN_WARNING "lne390.c: No LNE390 card found (i/o = 0x%x).\n", io[this_dev]); | 435 | printk(KERN_WARNING "lne390.c: No LNE390 card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/ne-h8300.c b/drivers/net/ne-h8300.c index 84e291e24935..8f40368cf2e9 100644 --- a/drivers/net/ne-h8300.c +++ b/drivers/net/ne-h8300.c | |||
| @@ -180,12 +180,7 @@ struct net_device * __init ne_probe(int unit) | |||
| 180 | err = do_ne_probe(dev); | 180 | err = do_ne_probe(dev); |
| 181 | if (err) | 181 | if (err) |
| 182 | goto out; | 182 | goto out; |
| 183 | err = register_netdev(dev); | ||
| 184 | if (err) | ||
| 185 | goto out1; | ||
| 186 | return dev; | 183 | return dev; |
| 187 | out1: | ||
| 188 | cleanup_card(dev); | ||
| 189 | out: | 184 | out: |
| 190 | free_netdev(dev); | 185 | free_netdev(dev); |
| 191 | return ERR_PTR(err); | 186 | return ERR_PTR(err); |
| @@ -325,8 +320,13 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr) | |||
| 325 | dev->poll_controller = ei_poll; | 320 | dev->poll_controller = ei_poll; |
| 326 | #endif | 321 | #endif |
| 327 | NS8390_init(dev, 0); | 322 | NS8390_init(dev, 0); |
| 328 | return 0; | ||
| 329 | 323 | ||
| 324 | ret = register_netdev(dev); | ||
| 325 | if (ret) | ||
| 326 | goto out_irq; | ||
| 327 | return 0; | ||
| 328 | out_irq: | ||
| 329 | free_irq(dev->irq, dev); | ||
| 330 | err_out: | 330 | err_out: |
| 331 | release_region(ioaddr, NE_IO_EXTENT); | 331 | release_region(ioaddr, NE_IO_EXTENT); |
| 332 | return ret; | 332 | return ret; |
| @@ -633,11 +633,8 @@ int init_module(void) | |||
| 633 | err = init_reg_offset(dev, dev->base_addr); | 633 | err = init_reg_offset(dev, dev->base_addr); |
| 634 | if (!err) { | 634 | if (!err) { |
| 635 | if (do_ne_probe(dev) == 0) { | 635 | if (do_ne_probe(dev) == 0) { |
| 636 | if (register_netdev(dev) == 0) { | 636 | dev_ne[found++] = dev; |
| 637 | dev_ne[found++] = dev; | 637 | continue; |
| 638 | continue; | ||
| 639 | } | ||
| 640 | cleanup_card(dev); | ||
| 641 | } | 638 | } |
| 642 | } | 639 | } |
| 643 | free_netdev(dev); | 640 | free_netdev(dev); |
diff --git a/drivers/net/ne.c b/drivers/net/ne.c index 496433902ade..6c57096aa2e1 100644 --- a/drivers/net/ne.c +++ b/drivers/net/ne.c | |||
| @@ -229,12 +229,7 @@ struct net_device * __init ne_probe(int unit) | |||
| 229 | err = do_ne_probe(dev); | 229 | err = do_ne_probe(dev); |
| 230 | if (err) | 230 | if (err) |
| 231 | goto out; | 231 | goto out; |
| 232 | err = register_netdev(dev); | ||
| 233 | if (err) | ||
| 234 | goto out1; | ||
| 235 | return dev; | 232 | return dev; |
| 236 | out1: | ||
| 237 | cleanup_card(dev); | ||
| 238 | out: | 233 | out: |
| 239 | free_netdev(dev); | 234 | free_netdev(dev); |
| 240 | return ERR_PTR(err); | 235 | return ERR_PTR(err); |
| @@ -534,8 +529,14 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr) | |||
| 534 | dev->poll_controller = ei_poll; | 529 | dev->poll_controller = ei_poll; |
| 535 | #endif | 530 | #endif |
| 536 | NS8390_init(dev, 0); | 531 | NS8390_init(dev, 0); |
| 532 | |||
| 533 | ret = register_netdev(dev); | ||
| 534 | if (ret) | ||
| 535 | goto out_irq; | ||
| 537 | return 0; | 536 | return 0; |
| 538 | 537 | ||
| 538 | out_irq: | ||
| 539 | free_irq(dev->irq, dev); | ||
| 539 | err_out: | 540 | err_out: |
| 540 | release_region(ioaddr, NE_IO_EXTENT); | 541 | release_region(ioaddr, NE_IO_EXTENT); |
| 541 | return ret; | 542 | return ret; |
| @@ -826,11 +827,8 @@ int init_module(void) | |||
| 826 | dev->mem_end = bad[this_dev]; | 827 | dev->mem_end = bad[this_dev]; |
| 827 | dev->base_addr = io[this_dev]; | 828 | dev->base_addr = io[this_dev]; |
| 828 | if (do_ne_probe(dev) == 0) { | 829 | if (do_ne_probe(dev) == 0) { |
| 829 | if (register_netdev(dev) == 0) { | 830 | dev_ne[found++] = dev; |
| 830 | dev_ne[found++] = dev; | 831 | continue; |
| 831 | continue; | ||
| 832 | } | ||
| 833 | cleanup_card(dev); | ||
| 834 | } | 832 | } |
| 835 | free_netdev(dev); | 833 | free_netdev(dev); |
| 836 | if (found) | 834 | if (found) |
diff --git a/drivers/net/ne2.c b/drivers/net/ne2.c index 6ebef27dbfae..6d62ada85de6 100644 --- a/drivers/net/ne2.c +++ b/drivers/net/ne2.c | |||
| @@ -301,12 +301,7 @@ struct net_device * __init ne2_probe(int unit) | |||
| 301 | err = do_ne2_probe(dev); | 301 | err = do_ne2_probe(dev); |
| 302 | if (err) | 302 | if (err) |
| 303 | goto out; | 303 | goto out; |
| 304 | err = register_netdev(dev); | ||
| 305 | if (err) | ||
| 306 | goto out1; | ||
| 307 | return dev; | 304 | return dev; |
| 308 | out1: | ||
| 309 | cleanup_card(dev); | ||
| 310 | out: | 305 | out: |
| 311 | free_netdev(dev); | 306 | free_netdev(dev); |
| 312 | return ERR_PTR(err); | 307 | return ERR_PTR(err); |
| @@ -517,7 +512,14 @@ static int __init ne2_probe1(struct net_device *dev, int slot) | |||
| 517 | dev->poll_controller = ei_poll; | 512 | dev->poll_controller = ei_poll; |
| 518 | #endif | 513 | #endif |
| 519 | NS8390_init(dev, 0); | 514 | NS8390_init(dev, 0); |
| 515 | |||
| 516 | retval = register_netdev(dev); | ||
| 517 | if (retval) | ||
| 518 | goto out1; | ||
| 520 | return 0; | 519 | return 0; |
| 520 | out1: | ||
| 521 | mca_set_adapter_procfn( ei_status.priv, NULL, NULL); | ||
| 522 | free_irq(dev->irq, dev); | ||
| 521 | out: | 523 | out: |
| 522 | release_region(base_addr, NE_IO_EXTENT); | 524 | release_region(base_addr, NE_IO_EXTENT); |
| 523 | return retval; | 525 | return retval; |
| @@ -798,11 +800,8 @@ int init_module(void) | |||
| 798 | dev->mem_end = bad[this_dev]; | 800 | dev->mem_end = bad[this_dev]; |
| 799 | dev->base_addr = io[this_dev]; | 801 | dev->base_addr = io[this_dev]; |
| 800 | if (do_ne2_probe(dev) == 0) { | 802 | if (do_ne2_probe(dev) == 0) { |
| 801 | if (register_netdev(dev) == 0) { | 803 | dev_ne[found++] = dev; |
| 802 | dev_ne[found++] = dev; | 804 | continue; |
| 803 | continue; | ||
| 804 | } | ||
| 805 | cleanup_card(dev); | ||
| 806 | } | 805 | } |
| 807 | free_netdev(dev); | 806 | free_netdev(dev); |
| 808 | break; | 807 | break; |
diff --git a/drivers/net/smc-ultra.c b/drivers/net/smc-ultra.c index b564c677c6d2..6d9dae60a697 100644 --- a/drivers/net/smc-ultra.c +++ b/drivers/net/smc-ultra.c | |||
| @@ -194,12 +194,7 @@ struct net_device * __init ultra_probe(int unit) | |||
| 194 | err = do_ultra_probe(dev); | 194 | err = do_ultra_probe(dev); |
| 195 | if (err) | 195 | if (err) |
| 196 | goto out; | 196 | goto out; |
| 197 | err = register_netdev(dev); | ||
| 198 | if (err) | ||
| 199 | goto out1; | ||
| 200 | return dev; | 197 | return dev; |
| 201 | out1: | ||
| 202 | cleanup_card(dev); | ||
| 203 | out: | 198 | out: |
| 204 | free_netdev(dev); | 199 | free_netdev(dev); |
| 205 | return ERR_PTR(err); | 200 | return ERR_PTR(err); |
| @@ -325,6 +320,9 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr) | |||
| 325 | #endif | 320 | #endif |
| 326 | NS8390_init(dev, 0); | 321 | NS8390_init(dev, 0); |
| 327 | 322 | ||
| 323 | retval = register_netdev(dev); | ||
| 324 | if (retval) | ||
| 325 | goto out; | ||
| 328 | return 0; | 326 | return 0; |
| 329 | out: | 327 | out: |
| 330 | release_region(ioaddr, ULTRA_IO_EXTENT); | 328 | release_region(ioaddr, ULTRA_IO_EXTENT); |
| @@ -583,11 +581,8 @@ init_module(void) | |||
| 583 | dev->irq = irq[this_dev]; | 581 | dev->irq = irq[this_dev]; |
| 584 | dev->base_addr = io[this_dev]; | 582 | dev->base_addr = io[this_dev]; |
| 585 | if (do_ultra_probe(dev) == 0) { | 583 | if (do_ultra_probe(dev) == 0) { |
| 586 | if (register_netdev(dev) == 0) { | 584 | dev_ultra[found++] = dev; |
| 587 | dev_ultra[found++] = dev; | 585 | continue; |
| 588 | continue; | ||
| 589 | } | ||
| 590 | cleanup_card(dev); | ||
| 591 | } | 586 | } |
| 592 | free_netdev(dev); | 587 | free_netdev(dev); |
| 593 | printk(KERN_WARNING "smc-ultra.c: No SMC Ultra card found (i/o = 0x%x).\n", io[this_dev]); | 588 | printk(KERN_WARNING "smc-ultra.c: No SMC Ultra card found (i/o = 0x%x).\n", io[this_dev]); |
diff --git a/drivers/net/wd.c b/drivers/net/wd.c index 1f05d9bd05e4..b03feae459fc 100644 --- a/drivers/net/wd.c +++ b/drivers/net/wd.c | |||
| @@ -149,12 +149,7 @@ struct net_device * __init wd_probe(int unit) | |||
| 149 | err = do_wd_probe(dev); | 149 | err = do_wd_probe(dev); |
| 150 | if (err) | 150 | if (err) |
| 151 | goto out; | 151 | goto out; |
| 152 | err = register_netdev(dev); | ||
| 153 | if (err) | ||
| 154 | goto out1; | ||
| 155 | return dev; | 152 | return dev; |
| 156 | out1: | ||
| 157 | cleanup_card(dev); | ||
| 158 | out: | 153 | out: |
| 159 | free_netdev(dev); | 154 | free_netdev(dev); |
| 160 | return ERR_PTR(err); | 155 | return ERR_PTR(err); |
| @@ -164,6 +159,7 @@ out: | |||
| 164 | static int __init wd_probe1(struct net_device *dev, int ioaddr) | 159 | static int __init wd_probe1(struct net_device *dev, int ioaddr) |
| 165 | { | 160 | { |
| 166 | int i; | 161 | int i; |
| 162 | int err; | ||
| 167 | int checksum = 0; | 163 | int checksum = 0; |
| 168 | int ancient = 0; /* An old card without config registers. */ | 164 | int ancient = 0; /* An old card without config registers. */ |
| 169 | int word16 = 0; /* 0 = 8 bit, 1 = 16 bit */ | 165 | int word16 = 0; /* 0 = 8 bit, 1 = 16 bit */ |
| @@ -356,7 +352,10 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr) | |||
| 356 | outb(inb(ioaddr+4)|0x80, ioaddr+4); | 352 | outb(inb(ioaddr+4)|0x80, ioaddr+4); |
| 357 | #endif | 353 | #endif |
| 358 | 354 | ||
| 359 | return 0; | 355 | err = register_netdev(dev); |
| 356 | if (err) | ||
| 357 | free_irq(dev->irq, dev); | ||
| 358 | return err; | ||
| 360 | } | 359 | } |
| 361 | 360 | ||
| 362 | static int | 361 | static int |
| @@ -527,11 +526,8 @@ init_module(void) | |||
| 527 | dev->mem_start = mem[this_dev]; | 526 | dev->mem_start = mem[this_dev]; |
| 528 | dev->mem_end = mem_end[this_dev]; | 527 | dev->mem_end = mem_end[this_dev]; |
| 529 | if (do_wd_probe(dev) == 0) { | 528 | if (do_wd_probe(dev) == 0) { |
| 530 | if (register_netdev(dev) == 0) { | 529 | dev_wd[found++] = dev; |
| 531 | dev_wd[found++] = dev; | 530 | continue; |
| 532 | continue; | ||
| 533 | } | ||
| 534 | cleanup_card(dev); | ||
| 535 | } | 531 | } |
| 536 | free_netdev(dev); | 532 | free_netdev(dev); |
| 537 | printk(KERN_WARNING "wd.c: No wd80x3 card found (i/o = 0x%x).\n", io[this_dev]); | 533 | printk(KERN_WARNING "wd.c: No wd80x3 card found (i/o = 0x%x).\n", io[this_dev]); |
