patch-2.4.0-test11 linux/drivers/net/3c509.c
Next file: linux/drivers/net/3c515.c
Previous file: linux/drivers/net/3c507.c
Back to the patch index
Back to the overall index
- Lines: 54
- Date:
Tue Nov 14 13:16:37 2000
- Orig file:
v2.4.0-test10/linux/drivers/net/3c509.c
- Orig date:
Tue Oct 31 12:42:26 2000
diff -u --recursive --new-file v2.4.0-test10/linux/drivers/net/3c509.c linux/drivers/net/3c509.c
@@ -200,6 +200,8 @@
static int pnp_cards = 0;
#endif /* __ISAPNP__ */
+ if (dev) SET_MODULE_OWNER(dev);
+
/* First check all slots of the EISA bus. The next slot address to
probe is kept in 'eisa_addr' to support multiple probe() calls. */
if (EISA_bus) {
@@ -434,6 +436,14 @@
/* Free the interrupt so that some other card can use it. */
outw(0x0f00, ioaddr + WN0_IRQ);
found:
+ if (dev == NULL) {
+ dev = init_etherdev(dev, sizeof(struct el3_private));
+ if (dev == NULL) {
+ release_region(ioaddr, EL3_IO_EXTENT);
+ return -ENOMEM;
+ }
+ SET_MODULE_OWNER(dev);
+ }
memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
dev->base_addr = ioaddr;
dev->irq = irq;
@@ -523,9 +533,8 @@
outw(RxReset, ioaddr + EL3_CMD);
outw(SetStatusEnb | 0x00, ioaddr + EL3_CMD);
- if (request_irq(dev->irq, &el3_interrupt, 0, dev->name, dev)) {
- return -EAGAIN;
- }
+ i = request_irq(dev->irq, &el3_interrupt, 0, dev->name, dev);
+ if (i) return i;
EL3WINDOW(0);
if (el3_debug > 3)
@@ -584,8 +593,7 @@
printk("%s: Opened 3c509 IRQ %d status %4.4x.\n",
dev->name, dev->irq, inw(ioaddr + EL3_STATUS));
- MOD_INC_USE_COUNT;
- return 0; /* Always succeed */
+ return 0;
}
static void
@@ -962,7 +970,6 @@
outw(0x0f00, ioaddr + WN0_IRQ);
update_stats(dev);
- MOD_DEC_USE_COUNT;
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)