diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2009-09-23 22:26:31 -0600 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-09-23 22:26:31 +0930 |
commit | 3c1b27d5043086a485f8526353ae9fe37bfa1065 (patch) | |
tree | e3b6eda3c66bcd1fc3af6e7fa6e4e3af77459474 /drivers/virtio/virtio_ring.c | |
parent | f68d24082e22ccee3077d11aeb6dc5354f0ca7f1 (diff) | |
download | op-kernel-dev-3c1b27d5043086a485f8526353ae9fe37bfa1065.zip op-kernel-dev-3c1b27d5043086a485f8526353ae9fe37bfa1065.tar.gz |
virtio: make add_buf return capacity remaining
This API change means that virtio_net can tell how much capacity
remains for buffers. It's necessarily fuzzy, since
VIRTIO_RING_F_INDIRECT_DESC means we can fit any number of descriptors
in one, *if* we can kmalloc.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Dinesh Subhraveti <dineshs@us.ibm.com>
Diffstat (limited to 'drivers/virtio/virtio_ring.c')
-rw-r--r-- | drivers/virtio/virtio_ring.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index a882f26..f536005 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -208,7 +208,11 @@ add_head: pr_debug("Added buffer head %i to %p\n", head, vq); END_USE(vq); - return 0; + + /* If we're indirect, we can fit many (assuming not OOM). */ + if (vq->indirect) + return vq->num_free ? vq->vring.num : 0; + return vq->num_free; } static void vring_kick(struct virtqueue *_vq) |