|
@@ -87,8 +87,7 @@ struct netfront_cb {
|
|
|
/* IRQ name is queue name with "-tx" or "-rx" appended */
|
|
|
#define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3)
|
|
|
|
|
|
-static DECLARE_WAIT_QUEUE_HEAD(module_load_q);
|
|
|
-static DECLARE_WAIT_QUEUE_HEAD(module_unload_q);
|
|
|
+static DECLARE_WAIT_QUEUE_HEAD(module_wq);
|
|
|
|
|
|
struct netfront_stats {
|
|
|
u64 packets;
|
|
@@ -1332,11 +1331,11 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
|
|
|
netif_carrier_off(netdev);
|
|
|
|
|
|
xenbus_switch_state(dev, XenbusStateInitialising);
|
|
|
- wait_event(module_load_q,
|
|
|
- xenbus_read_driver_state(dev->otherend) !=
|
|
|
- XenbusStateClosed &&
|
|
|
- xenbus_read_driver_state(dev->otherend) !=
|
|
|
- XenbusStateUnknown);
|
|
|
+ wait_event(module_wq,
|
|
|
+ xenbus_read_driver_state(dev->otherend) !=
|
|
|
+ XenbusStateClosed &&
|
|
|
+ xenbus_read_driver_state(dev->otherend) !=
|
|
|
+ XenbusStateUnknown);
|
|
|
return netdev;
|
|
|
|
|
|
exit:
|
|
@@ -2010,15 +2009,14 @@ static void netback_changed(struct xenbus_device *dev,
|
|
|
|
|
|
dev_dbg(&dev->dev, "%s\n", xenbus_strstate(backend_state));
|
|
|
|
|
|
+ wake_up_all(&module_wq);
|
|
|
+
|
|
|
switch (backend_state) {
|
|
|
case XenbusStateInitialising:
|
|
|
case XenbusStateInitialised:
|
|
|
case XenbusStateReconfiguring:
|
|
|
case XenbusStateReconfigured:
|
|
|
- break;
|
|
|
-
|
|
|
case XenbusStateUnknown:
|
|
|
- wake_up_all(&module_unload_q);
|
|
|
break;
|
|
|
|
|
|
case XenbusStateInitWait:
|
|
@@ -2034,12 +2032,10 @@ static void netback_changed(struct xenbus_device *dev,
|
|
|
break;
|
|
|
|
|
|
case XenbusStateClosed:
|
|
|
- wake_up_all(&module_unload_q);
|
|
|
if (dev->state == XenbusStateClosed)
|
|
|
break;
|
|
|
/* Missed the backend's CLOSING state -- fallthrough */
|
|
|
case XenbusStateClosing:
|
|
|
- wake_up_all(&module_unload_q);
|
|
|
xenbus_frontend_closed(dev);
|
|
|
break;
|
|
|
}
|
|
@@ -2147,14 +2143,14 @@ static int xennet_remove(struct xenbus_device *dev)
|
|
|
|
|
|
if (xenbus_read_driver_state(dev->otherend) != XenbusStateClosed) {
|
|
|
xenbus_switch_state(dev, XenbusStateClosing);
|
|
|
- wait_event(module_unload_q,
|
|
|
+ wait_event(module_wq,
|
|
|
xenbus_read_driver_state(dev->otherend) ==
|
|
|
XenbusStateClosing ||
|
|
|
xenbus_read_driver_state(dev->otherend) ==
|
|
|
XenbusStateUnknown);
|
|
|
|
|
|
xenbus_switch_state(dev, XenbusStateClosed);
|
|
|
- wait_event(module_unload_q,
|
|
|
+ wait_event(module_wq,
|
|
|
xenbus_read_driver_state(dev->otherend) ==
|
|
|
XenbusStateClosed ||
|
|
|
xenbus_read_driver_state(dev->otherend) ==
|