[PATCH] (1/4) sdla - move out of Space.c
From: Stephen Hemminger <hidden>
Date: 2003-09-08 21:14:39
Patch against 2.60-test5 to move sdla driver out of Space.c for initialization in non-module case. Since this driver doesn't come up until the device has been configured with an ioctl (set_config); there is no way it can have startup order problems. diff -Nru a/drivers/net/Space.c b/drivers/net/Space.c
--- a/drivers/net/Space.c Mon Sep 8 14:01:25 2003
+++ b/drivers/net/Space.c Mon Sep 8 14:01:25 2003@@ -97,7 +97,6 @@ extern int mac8390_probe(struct net_device *dev); extern int mac89x0_probe(struct net_device *dev); extern int mc32_probe(struct net_device *dev); -extern struct net_device *sdla_init(void); extern struct net_device *cops_probe(int unit); extern struct net_device *ltpc_probe(void);
@@ -470,10 +469,6 @@ #ifdef CONFIG_LTPC ltpc_probe(); #endif -#ifdef CONFIG_SDLA - sdla_init(); -#endif - } /*
diff -Nru a/drivers/net/wan/sdla.c b/drivers/net/wan/sdla.c
--- a/drivers/net/wan/sdla.c Mon Sep 8 14:01:25 2003
+++ b/drivers/net/wan/sdla.c Mon Sep 8 14:01:25 2003@@ -1626,41 +1626,16 @@ static void setup_sdla(struct net_device *dev) { + struct frad_local *flp = dev->priv; + + netdev_boot_setup_check(dev); + + SET_MODULE_OWNER(dev); dev->flags = 0; dev->type = 0xFFFF; dev->hard_header_len = 0; dev->addr_len = 0; dev->mtu = SDLA_MAX_MTU; -} - -static int frad_registered; - -struct net_device * __init sdla_init(void) -{ - struct net_device *dev; - struct frad_local *flp; - int err = -ENOMEM; - - if (!frad_registered) { - err = register_frad(devname); - if (err) { - printk(KERN_ERR "%s: frad registration failed %d\n", - devname, err); - return ERR_PTR(err); - } - frad_registered = 1; - printk("%s.\n", version); - } - - - dev = alloc_netdev(sizeof(struct frad_local), "sdla0", setup_sdla); - if (!dev) - goto out; - - SET_MODULE_OWNER(dev); - netdev_boot_setup_check(dev); - - flp = dev->priv; dev->open = sdla_open; dev->stop = sdla_close;
@@ -1680,42 +1655,44 @@ flp->timer.expires = 1; flp->timer.data = (unsigned long) dev; flp->timer.function = sdla_poll; - - err = register_netdev(dev); - if (err) - goto out1; - return dev; -out1: - kfree(dev); -out: - return ERR_PTR(err); } -#ifdef MODULE -static struct net_device *sdla0; +static struct net_device *sdla; static int __init init_sdla(void) { - int result = 0; + int err; + + printk("%s.\n", version); + err = register_frad(devname); + if (err) { + printk(KERN_ERR "%s: frad registration failed %d\n", + devname, err); + return err; + } - sdla0 = sdla_init(); - if (IS_ERR(sdla0)) - result = PTR_ERR(sdla0); + sdla = alloc_netdev(sizeof(struct frad_local), "sdla0", setup_sdla); + if (!sdla) + return -ENOMEM; + + err = register_netdev(sdla); + if (err) + kfree(sdla); - return result; + return err; } static void __exit exit_sdla(void) { struct frad_local *flp; - unregister_netdev(sdla0); - if (sdla0->irq) - free_irq(sdla0->irq, sdla0); + unregister_netdev(sdla); + if (sdla->irq) + free_irq(sdla->irq, sdla); - flp = sdla0->priv; + flp = sdla->priv; del_timer_sync(&flp->timer); - free_netdev(sdla0); + free_netdev(sdla); unregister_frad(devname); }
@@ -1724,4 +1701,3 @@ module_init(init_sdla); module_exit(exit_sdla); -#endif