diff options
Diffstat (limited to 'drivers/net/xen-netfront.c')
-rw-r--r-- | drivers/net/xen-netfront.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 4d88aa394273..799cba4624a5 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
@@ -87,6 +87,7 @@ struct netfront_cb { | |||
87 | /* IRQ name is queue name with "-tx" or "-rx" appended */ | 87 | /* IRQ name is queue name with "-tx" or "-rx" appended */ |
88 | #define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3) | 88 | #define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3) |
89 | 89 | ||
90 | static DECLARE_WAIT_QUEUE_HEAD(module_load_q); | ||
90 | static DECLARE_WAIT_QUEUE_HEAD(module_unload_q); | 91 | static DECLARE_WAIT_QUEUE_HEAD(module_unload_q); |
91 | 92 | ||
92 | struct netfront_stats { | 93 | struct netfront_stats { |
@@ -1331,6 +1332,11 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev) | |||
1331 | netif_carrier_off(netdev); | 1332 | netif_carrier_off(netdev); |
1332 | 1333 | ||
1333 | xenbus_switch_state(dev, XenbusStateInitialising); | 1334 | xenbus_switch_state(dev, XenbusStateInitialising); |
1335 | wait_event(module_load_q, | ||
1336 | xenbus_read_driver_state(dev->otherend) != | ||
1337 | XenbusStateClosed && | ||
1338 | xenbus_read_driver_state(dev->otherend) != | ||
1339 | XenbusStateUnknown); | ||
1334 | return netdev; | 1340 | return netdev; |
1335 | 1341 | ||
1336 | exit: | 1342 | exit: |