diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-09-24 22:10:14 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-09-24 22:10:14 +0000 |
commit | c9f8b0b3e9bca92b73e92fa42090278c0581bfd5 (patch) | |
tree | 873d33040c600c8a412d3775f422f9b4cbece1c9 /xen | |
parent | fea6971a1dad03fcf5aa070ca80ef28bf516a177 (diff) | |
download | xen-c9f8b0b3e9bca92b73e92fa42090278c0581bfd5.tar.gz xen-c9f8b0b3e9bca92b73e92fa42090278c0581bfd5.tar.bz2 xen-c9f8b0b3e9bca92b73e92fa42090278c0581bfd5.zip |
bitkeeper revision 1.463 (3f721646eB7aycwk0W8Qp2kzIZ1KhA)
dev.c:
Fix network start-of-day race.
Diffstat (limited to 'xen')
-rw-r--r-- | xen/net/dev.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/xen/net/dev.c b/xen/net/dev.c index 83d057a378..af23219796 100644 --- a/xen/net/dev.c +++ b/xen/net/dev.c @@ -2152,33 +2152,32 @@ int setup_network_devices(void) { int i, ret; extern char opt_ifname[]; - struct net_device *dev; - if ( (dev = dev_get_by_name(opt_ifname)) == NULL ) + for ( i = 0; i < smp_num_cpus; i++ ) + skb_queue_head_init(&rx_skb_queue[i]); + + open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL); + tasklet_enable(&net_tx_tasklet); + + if ( (the_dev = dev_get_by_name(opt_ifname)) == NULL ) { printk("Could not find device %s: using dummy device\n", opt_ifname); strcpy(opt_ifname, "dummy"); - if ( (dev = dev_get_by_name(opt_ifname)) == NULL ) + if ( (the_dev = dev_get_by_name(opt_ifname)) == NULL ) { printk("Failed to find the dummy device!\n"); return 0; } } - if ( (ret = dev_open(dev)) != 0 ) + if ( (ret = dev_open(the_dev)) != 0 ) { printk("Error opening device %s for use (%d)\n", opt_ifname, ret); + the_dev = NULL; return 0; } printk("Device %s opened and ready for use.\n", opt_ifname); - the_dev = dev; - - for ( i = 0; i < smp_num_cpus; i++ ) - skb_queue_head_init(&rx_skb_queue[i]); - - open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL); - tasklet_enable(&net_tx_tasklet); return 1; } |