Skip to content

Commit

Permalink
virtio: net: Move vq and vq buf removal into separate function
Browse files Browse the repository at this point in the history
The remove and PM freeze functions will share this code.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
  • Loading branch information
Amit Shah authored and Rusty Russell committed Jan 12, 2012
1 parent 3f9c10b commit 04486ed
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions drivers/net/virtio_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 04486ed

Please sign in to comment.