[v1] vhost: remove fallback in async enqueue API
Checks
Commit Message
By design, async enqueue API should return directly if async device
is not registered. This patch removes the corrupted implementation of
the enqueue fallback from async mode to sync mode.
Fixes: cd6760da1076 ("vhost: introduce async enqueue for split ring")
Signed-off-by: Patrick Fu <patrick.fu@intel.com>
---
lib/librte_vhost/virtio_net.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
Comments
On 10/21/20 7:44 AM, Patrick Fu wrote:
> By design, async enqueue API should return directly if async device
> is not registered. This patch removes the corrupted implementation of
> the enqueue fallback from async mode to sync mode.
>
> Fixes: cd6760da1076 ("vhost: introduce async enqueue for split ring")
>
> Signed-off-by: Patrick Fu <patrick.fu@intel.com>
> ---
> lib/librte_vhost/virtio_net.c | 11 +----------
> 1 file changed, 1 insertion(+), 10 deletions(-)
>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
On 10/21/20 7:44 AM, Patrick Fu wrote:
> By design, async enqueue API should return directly if async device
> is not registered. This patch removes the corrupted implementation of
> the enqueue fallback from async mode to sync mode.
>
> Fixes: cd6760da1076 ("vhost: introduce async enqueue for split ring")
>
> Signed-off-by: Patrick Fu <patrick.fu@intel.com>
> ---
> lib/librte_vhost/virtio_net.c | 11 +----------
> 1 file changed, 1 insertion(+), 10 deletions(-)
Applied to dpdk-next-virtio/main.
Thanks,
Maxime
@@ -1714,7 +1714,6 @@ virtio_dev_rx_async_submit(struct virtio_net *dev, uint16_t queue_id,
{
struct vhost_virtqueue *vq;
uint32_t nb_tx = 0;
- bool drawback = false;
VHOST_LOG_DATA(DEBUG, "(%d) %s\n", dev->vid, __func__);
if (unlikely(!is_valid_virt_queue_idx(queue_id, 0, dev->nr_vring))) {
@@ -1727,13 +1726,8 @@ virtio_dev_rx_async_submit(struct virtio_net *dev, uint16_t queue_id,
rte_spinlock_lock(&vq->access_lock);
- if (unlikely(vq->enabled == 0))
- goto out_access_unlock;
-
- if (unlikely(!vq->async_registered)) {
- drawback = true;
+ if (unlikely(vq->enabled == 0 || !vq->async_registered))
goto out_access_unlock;
- }
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
vhost_user_iotlb_rd_lock(vq);
@@ -1760,9 +1754,6 @@ virtio_dev_rx_async_submit(struct virtio_net *dev, uint16_t queue_id,
out_access_unlock:
rte_spinlock_unlock(&vq->access_lock);
- if (drawback)
- return rte_vhost_enqueue_burst(dev->vid, queue_id, pkts, count);
-
return nb_tx;
}