virtio: introduce virtqueue_discard()
This patch introduces virtqueue_discard() to discard a descriptor and unmap the sgs. This will be used by the patch that will discard descriptor when packet is truncated. Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
ce31746157
commit
29b9f5efd7
@ -267,6 +267,13 @@ static void virtqueue_unmap_sg(VirtQueue *vq, const VirtQueueElement *elem,
|
|||||||
0, elem->out_sg[i].iov_len);
|
0, elem->out_sg[i].iov_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void virtqueue_discard(VirtQueue *vq, const VirtQueueElement *elem,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
vq->last_avail_idx--;
|
||||||
|
virtqueue_unmap_sg(vq, elem, len);
|
||||||
|
}
|
||||||
|
|
||||||
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
|
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
|
||||||
unsigned int len, unsigned int idx)
|
unsigned int len, unsigned int idx)
|
||||||
{
|
{
|
||||||
|
@ -146,6 +146,8 @@ void virtio_del_queue(VirtIODevice *vdev, int n);
|
|||||||
void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
|
void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
|
||||||
unsigned int len);
|
unsigned int len);
|
||||||
void virtqueue_flush(VirtQueue *vq, unsigned int count);
|
void virtqueue_flush(VirtQueue *vq, unsigned int count);
|
||||||
|
void virtqueue_discard(VirtQueue *vq, const VirtQueueElement *elem,
|
||||||
|
unsigned int len);
|
||||||
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
|
void virtqueue_fill(VirtQueue *vq, const VirtQueueElement *elem,
|
||||||
unsigned int len, unsigned int idx);
|
unsigned int len, unsigned int idx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user