diff options
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r-- | drivers/net/xen-netback/interface.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index a134d52f55b4..895fe84011e7 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c | |||
@@ -419,6 +419,8 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid, | |||
419 | vif->queues = NULL; | 419 | vif->queues = NULL; |
420 | vif->num_queues = 0; | 420 | vif->num_queues = 0; |
421 | 421 | ||
422 | spin_lock_init(&vif->lock); | ||
423 | |||
422 | dev->netdev_ops = &xenvif_netdev_ops; | 424 | dev->netdev_ops = &xenvif_netdev_ops; |
423 | dev->hw_features = NETIF_F_SG | | 425 | dev->hw_features = NETIF_F_SG | |
424 | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | | 426 | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | |
@@ -505,7 +507,6 @@ void xenvif_carrier_on(struct xenvif *vif) | |||
505 | dev_set_mtu(vif->dev, ETH_DATA_LEN); | 507 | dev_set_mtu(vif->dev, ETH_DATA_LEN); |
506 | netdev_update_features(vif->dev); | 508 | netdev_update_features(vif->dev); |
507 | set_bit(VIF_STATUS_CONNECTED, &vif->status); | 509 | set_bit(VIF_STATUS_CONNECTED, &vif->status); |
508 | netif_carrier_on(vif->dev); | ||
509 | if (netif_running(vif->dev)) | 510 | if (netif_running(vif->dev)) |
510 | xenvif_up(vif); | 511 | xenvif_up(vif); |
511 | rtnl_unlock(); | 512 | rtnl_unlock(); |
@@ -565,6 +566,8 @@ int xenvif_connect(struct xenvif_queue *queue, unsigned long tx_ring_ref, | |||
565 | disable_irq(queue->rx_irq); | 566 | disable_irq(queue->rx_irq); |
566 | } | 567 | } |
567 | 568 | ||
569 | queue->stalled = true; | ||
570 | |||
568 | task = kthread_create(xenvif_kthread_guest_rx, | 571 | task = kthread_create(xenvif_kthread_guest_rx, |
569 | (void *)queue, "%s-guest-rx", queue->name); | 572 | (void *)queue, "%s-guest-rx", queue->name); |
570 | if (IS_ERR(task)) { | 573 | if (IS_ERR(task)) { |