mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
virtio_ring: factor out core logic of buffer detaching
Factor out core logic of buffer detaching and leave the free list management to the caller so in_order can just call the core logic. Acked-by: Eugenio Pérez <eperezma@redhat.com> Reviewed-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20251230064649.55597-16-jasowang@redhat.com>
This commit is contained in:
committed by
Michael S. Tsirkin
parent
03f05c4eeb
commit
c623106c79
@@ -1665,8 +1665,8 @@ out:
|
||||
return needs_kick;
|
||||
}
|
||||
|
||||
static void detach_buf_packed(struct vring_virtqueue *vq,
|
||||
unsigned int id, void **ctx)
|
||||
static void detach_buf_packed_in_order(struct vring_virtqueue *vq,
|
||||
unsigned int id, void **ctx)
|
||||
{
|
||||
struct vring_desc_state_packed *state = NULL;
|
||||
struct vring_packed_desc *desc;
|
||||
@@ -1677,8 +1677,6 @@ static void detach_buf_packed(struct vring_virtqueue *vq,
|
||||
/* Clear data ptr. */
|
||||
state->data = NULL;
|
||||
|
||||
vq->packed.desc_extra[state->last].next = vq->free_head;
|
||||
vq->free_head = id;
|
||||
vq->vq.num_free += state->num;
|
||||
|
||||
if (unlikely(vq->use_map_api)) {
|
||||
@@ -1715,6 +1713,17 @@ static void detach_buf_packed(struct vring_virtqueue *vq,
|
||||
}
|
||||
}
|
||||
|
||||
static void detach_buf_packed(struct vring_virtqueue *vq,
|
||||
unsigned int id, void **ctx)
|
||||
{
|
||||
struct vring_desc_state_packed *state = &vq->packed.desc_state[id];
|
||||
|
||||
vq->packed.desc_extra[state->last].next = vq->free_head;
|
||||
vq->free_head = id;
|
||||
|
||||
detach_buf_packed_in_order(vq, id, ctx);
|
||||
}
|
||||
|
||||
static inline bool is_used_desc_packed(const struct vring_virtqueue *vq,
|
||||
u16 idx, bool used_wrap_counter)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user