From c3019156d7beba071ccac99e7ff393ca6e0fcf04 Mon Sep 17 00:00:00 2001 From: Alexander Viro Date: Sat, 10 Jan 2004 05:29:22 -0500 Subject: [PATCH] [netdrvr hydra] use alloc_etherdev --- drivers/net/hydra.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/net/hydra.c b/drivers/net/hydra.c index b183b1159bd5c..921677364943a 100644 --- a/drivers/net/hydra.c +++ b/drivers/net/hydra.c @@ -89,15 +89,17 @@ static int __init hydra_init(unsigned long board) const char name[] = "NE2000"; int start_page, stop_page; int j; + int err; static u32 hydra_offsets[16] = { 0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, }; - dev = init_etherdev(NULL, 0); + dev = alloc_etherdev(0); if (!dev) return -ENOMEM; + dev->priv = NULL; SET_MODULE_OWNER(dev); for(j = 0; j < ETHER_ADDR_LEN; j++) @@ -113,12 +115,16 @@ static int __init hydra_init(unsigned long board) /* Install the Interrupt handler */ if (request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, "Hydra Ethernet", - dev)) + dev)) { + free_netdev(dev); return -EAGAIN; + } /* Allocate dev->priv and fill in 8390 specific dev fields. */ if (ethdev_init(dev)) { printk("Unable to get memory for dev->priv.\n"); + free_irq(IRQ_AMIGA_PORTS, dev); + free_netdev(dev); return -ENOMEM; } @@ -146,7 +152,14 @@ static int __init hydra_init(unsigned long board) root_hydra_dev = dev; #endif NS8390_init(dev, 0); - return 0; + err = register_netdev(dev); + if (!err) + return 0; + + free_irq(IRQ_AMIGA_PORTS, dev); + kfree(dev->priv); + free_netdev(dev); + return err; } static int hydra_open(struct net_device *dev) -- 2.53.0