vhost: make indirect desc table copy desc type agnostic
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Tiwei Bie <tiwei.bie@intel.com>
This commit is contained in:
parent
7e47bba30a
commit
d6315ce796
@ -37,16 +37,15 @@ is_valid_virt_queue_idx(uint32_t idx, int is_tx, uint32_t nr_vring)
|
|||||||
return (is_tx ^ (idx & 1)) == 0 && idx < nr_vring;
|
return (is_tx ^ (idx & 1)) == 0 && idx < nr_vring;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __rte_always_inline struct vring_desc *
|
static __rte_always_inline void *
|
||||||
alloc_copy_ind_table(struct virtio_net *dev, struct vhost_virtqueue *vq,
|
alloc_copy_ind_table(struct virtio_net *dev, struct vhost_virtqueue *vq,
|
||||||
struct vring_desc *desc)
|
uint64_t desc_addr, uint64_t desc_len)
|
||||||
{
|
{
|
||||||
struct vring_desc *idesc;
|
void *idesc;
|
||||||
uint64_t src, dst;
|
uint64_t src, dst;
|
||||||
uint64_t len, remain = desc->len;
|
uint64_t len, remain = desc_len;
|
||||||
uint64_t desc_addr = desc->addr;
|
|
||||||
|
|
||||||
idesc = rte_malloc(__func__, desc->len, 0);
|
idesc = rte_malloc(__func__, desc_len, 0);
|
||||||
if (unlikely(!idesc))
|
if (unlikely(!idesc))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -72,7 +71,7 @@ alloc_copy_ind_table(struct virtio_net *dev, struct vhost_virtqueue *vq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static __rte_always_inline void
|
static __rte_always_inline void
|
||||||
free_ind_table(struct vring_desc *idesc)
|
free_ind_table(void *idesc)
|
||||||
{
|
{
|
||||||
rte_free(idesc);
|
rte_free(idesc);
|
||||||
}
|
}
|
||||||
@ -251,7 +250,8 @@ fill_vec_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
|
|||||||
* The indirect desc table is not contiguous
|
* The indirect desc table is not contiguous
|
||||||
* in process VA space, we have to copy it.
|
* in process VA space, we have to copy it.
|
||||||
*/
|
*/
|
||||||
idesc = alloc_copy_ind_table(dev, vq, &vq->desc[idx]);
|
idesc = alloc_copy_ind_table(dev, vq,
|
||||||
|
vq->desc[idx].addr, vq->desc[idx].len);
|
||||||
if (unlikely(!idesc))
|
if (unlikely(!idesc))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user