vhost: remove vhost-net requirements from generic vhost APIs

Message ID 20190224233555.31304-1-darek.stojaczyk@gmail.com
State Accepted, archived
Delegated to: Maxime Coquelin
Headers show
Series
  • vhost: remove vhost-net requirements from generic vhost APIs
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/checkpatch success coding style OK

Commit Message

Dariusz Stojaczyk Feb. 24, 2019, 11:35 p.m.
From: Darek Stojaczyk <dariusz.stojaczyk@intel.com>

The rte_vhost API to put data into virtqueues operates
on mbufs and hence it is strictly vhost-net specific.
External backends need to implement virtqueue handling
from scratch and that's just not possible without APIs
to get/set vring base addresses.

Those relevant APIs are there, but they have a check that
prevents them from working with any non-vhost-net device.
This patch removes those checks.

rte_vhost_get_log_base() is not necessarily needed for
external backends, as other, higher level vhost APIs for
live migration are available and could be used instead.
We remove the extra check from it anyway for consistency.

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
---
 lib/librte_vhost/vhost.c | 21 ---------------------
 1 file changed, 21 deletions(-)

Comments

Tiwei Bie Feb. 25, 2019, 4:54 a.m. | #1
On Mon, Feb 25, 2019 at 12:35:55AM +0100, Dariusz Stojaczyk wrote:
> From: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> 
> The rte_vhost API to put data into virtqueues operates
> on mbufs and hence it is strictly vhost-net specific.
> External backends need to implement virtqueue handling
> from scratch and that's just not possible without APIs
> to get/set vring base addresses.
> 
> Those relevant APIs are there, but they have a check that
> prevents them from working with any non-vhost-net device.
> This patch removes those checks.
> 
> rte_vhost_get_log_base() is not necessarily needed for
> external backends, as other, higher level vhost APIs for
> live migration are available and could be used instead.
> We remove the extra check from it anyway for consistency.
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
>  lib/librte_vhost/vhost.c | 21 ---------------------
>  1 file changed, 21 deletions(-)

Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>

Thanks,
Tiwei
Maxime Coquelin Feb. 27, 2019, 8:31 a.m. | #2
On 2/25/19 12:35 AM, Dariusz Stojaczyk wrote:
> From: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> 
> The rte_vhost API to put data into virtqueues operates
> on mbufs and hence it is strictly vhost-net specific.
> External backends need to implement virtqueue handling
> from scratch and that's just not possible without APIs
> to get/set vring base addresses.
> 
> Those relevant APIs are there, but they have a check that
> prevents them from working with any non-vhost-net device.
> This patch removes those checks.
> 
> rte_vhost_get_log_base() is not necessarily needed for
> external backends, as other, higher level vhost APIs for
> live migration are available and could be used instead.
> We remove the extra check from it anyway for consistency.
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
>   lib/librte_vhost/vhost.c | 21 ---------------------
>   1 file changed, 21 deletions(-)
> 

Applied to dpdk-next-virtio/master.

Thanks,
Maxime

Patch

diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index 00ec58e01..e480aeac9 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -766,13 +766,6 @@  int rte_vhost_get_log_base(int vid, uint64_t *log_base,
 	if (!dev)
 		return -1;
 
-	if (unlikely(!(dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET))) {
-		RTE_LOG(ERR, VHOST_DATA,
-			"(%d) %s: built-in vhost net backend is disabled.\n",
-			dev->vid, __func__);
-		return -1;
-	}
-
 	*log_base = dev->log_base;
 	*log_size = dev->log_size;
 
@@ -787,13 +780,6 @@  int rte_vhost_get_vring_base(int vid, uint16_t queue_id,
 	if (!dev)
 		return -1;
 
-	if (unlikely(!(dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET))) {
-		RTE_LOG(ERR, VHOST_DATA,
-			"(%d) %s: built-in vhost net backend is disabled.\n",
-			dev->vid, __func__);
-		return -1;
-	}
-
 	*last_avail_idx = dev->virtqueue[queue_id]->last_avail_idx;
 	*last_used_idx = dev->virtqueue[queue_id]->last_used_idx;
 
@@ -808,13 +794,6 @@  int rte_vhost_set_vring_base(int vid, uint16_t queue_id,
 	if (!dev)
 		return -1;
 
-	if (unlikely(!(dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET))) {
-		RTE_LOG(ERR, VHOST_DATA,
-			"(%d) %s: built-in vhost net backend is disabled.\n",
-			dev->vid, __func__);
-		return -1;
-	}
-
 	dev->virtqueue[queue_id]->last_avail_idx = last_avail_idx;
 	dev->virtqueue[queue_id]->last_used_idx = last_used_idx;