Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04486ed0 authored by Amit Shah's avatar Amit Shah Committed by Rusty Russell
Browse files

virtio: net: Move vq and vq buf removal into separate function



The remove and PM freeze functions will share this code.

Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 3f9c10b0
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -1153,22 +1153,26 @@ static void free_unused_bufs(struct virtnet_info *vi)
	BUG_ON(vi->num != 0);
}

static void __devexit virtnet_remove(struct virtio_device *vdev)
static void remove_vq_common(struct virtnet_info *vi)
{
	struct virtnet_info *vi = vdev->priv;

	/* Stop all the virtqueues. */
	vdev->config->reset(vdev);

	unregister_netdev(vi->dev);
	vi->vdev->config->reset(vi->vdev);

	/* Free unused buffers in both send and recv, if any. */
	free_unused_bufs(vi);

	vdev->config->del_vqs(vi->vdev);
	vi->vdev->config->del_vqs(vi->vdev);

	while (vi->pages)
		__free_pages(get_a_page(vi, GFP_KERNEL), 0);
}

static void __devexit virtnet_remove(struct virtio_device *vdev)
{
	struct virtnet_info *vi = vdev->priv;

	unregister_netdev(vi->dev);

	remove_vq_common(vi);

	free_percpu(vi->stats);
	free_netdev(vi->dev);