diff options
Diffstat (limited to 'net/wanrouter/wanmain.c')
| -rw-r--r-- | net/wanrouter/wanmain.c | 47 | 
1 files changed, 21 insertions, 26 deletions
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c index 788a12c1eb5..2ab785064b7 100644 --- a/net/wanrouter/wanmain.c +++ b/net/wanrouter/wanmain.c @@ -602,36 +602,31 @@ static int wanrouter_device_new_if(struct wan_device *wandev,  		 * successfully, add it to the interface list.  		 */ -		if (dev->name == NULL) { -			err = -EINVAL; -		} else { - -			#ifdef WANDEBUG -			printk(KERN_INFO "%s: registering interface %s...\n", -				wanrouter_modname, dev->name); -			#endif - -			err = register_netdev(dev); -			if (!err) { -				struct net_device *slave = NULL; -				unsigned long smp_flags=0; +#ifdef WANDEBUG +		printk(KERN_INFO "%s: registering interface %s...\n", +		       wanrouter_modname, dev->name); +#endif -				lock_adapter_irq(&wandev->lock, &smp_flags); +		err = register_netdev(dev); +		if (!err) { +			struct net_device *slave = NULL; +			unsigned long smp_flags=0; -				if (wandev->dev == NULL) { -					wandev->dev = dev; -				} else { -					for (slave=wandev->dev; -					     DEV_TO_SLAVE(slave); -					     slave = DEV_TO_SLAVE(slave)) -						DEV_TO_SLAVE(slave) = dev; -				} -				++wandev->ndev; +			lock_adapter_irq(&wandev->lock, &smp_flags); -				unlock_adapter_irq(&wandev->lock, &smp_flags); -				err = 0;	/* done !!! */ -				goto out; +			if (wandev->dev == NULL) { +				wandev->dev = dev; +			} else { +				for (slave=wandev->dev; +				     DEV_TO_SLAVE(slave); +				     slave = DEV_TO_SLAVE(slave)) +					DEV_TO_SLAVE(slave) = dev;  			} +			++wandev->ndev; + +			unlock_adapter_irq(&wandev->lock, &smp_flags); +			err = 0;	/* done !!! */ +			goto out;  		}  		if (wandev->del_if)  			wandev->del_if(wandev, dev);  |