diff --git a/[refs] b/[refs] index a27812ce6955..caa59b30022b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e70f2f1bb8c8cf08ba0d836466f77eea27dd3474 +refs/heads/master: a48bd8f67003c342e147309a331f656a5e75a5e4 diff --git a/trunk/drivers/net/virtio_net.c b/trunk/drivers/net/virtio_net.c index be5688f5e931..bd4d26a36ead 100644 --- a/trunk/drivers/net/virtio_net.c +++ b/trunk/drivers/net/virtio_net.c @@ -283,6 +283,13 @@ static int virtnet_open(struct net_device *dev) struct virtnet_info *vi = netdev_priv(dev); napi_enable(&vi->napi); + + /* If all buffers were filled by other side before we napi_enabled, we + * won't get another interrupt, so process any outstanding packets + * now. virtnet_poll wants re-enable the queue, so we disable here. */ + vi->rvq->vq_ops->disable_cb(vi->rvq); + netif_rx_schedule(vi->dev, &vi->napi); + return 0; }