|
@@ -938,7 +938,9 @@ static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs)
|
|
|
return -EINVAL;
|
|
|
} else {
|
|
|
vi->curr_queue_pairs = queue_pairs;
|
|
|
- schedule_delayed_work(&vi->refill, 0);
|
|
|
+ /* virtnet_open() will refill when device is going to up. */
|
|
|
+ if (dev->flags & IFF_UP)
|
|
|
+ schedule_delayed_work(&vi->refill, 0);
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -1741,7 +1743,9 @@ static int virtnet_restore(struct virtio_device *vdev)
|
|
|
vi->config_enable = true;
|
|
|
mutex_unlock(&vi->config_lock);
|
|
|
|
|
|
+ rtnl_lock();
|
|
|
virtnet_set_queues(vi, vi->curr_queue_pairs);
|
|
|
+ rtnl_unlock();
|
|
|
|
|
|
return 0;
|
|
|
}
|