[1/2] vhost: fix net offload compliancy

Message ID 20230713102659.230606-2-maxime.coquelin@redhat.com (mailing list archive)
State Superseded, archived
Delegated to: Maxime Coquelin
Headers
Series vduse: TSO & vIOMMU fixes |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/iol-testing fail build patch failure

Commit Message

Maxime Coquelin July 13, 2023, 10:26 a.m. UTC
  Initial VDUSE support assumed the application always used
the net offload compliant mode, which is not the case for
OVS.

This patch propagates the value set by the application.

Fixes: 0adb8eccc6a6 ("vhost: add VDUSE device creation and destruction")

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/vhost/socket.c | 2 +-
 lib/vhost/vduse.c  | 4 ++--
 lib/vhost/vduse.h  | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
  

Patch

diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c
index f55fb299fd..57dfe3d2fe 100644
--- a/lib/vhost/socket.c
+++ b/lib/vhost/socket.c
@@ -1233,7 +1233,7 @@  rte_vhost_driver_start(const char *path)
 		return -1;
 
 	if (vsocket->is_vduse)
-		return vduse_device_create(path);
+		return vduse_device_create(path, vsocket->net_compliant_ol_flags);
 
 	if (fdset_tid == 0) {
 		/**
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 5c595e3f94..73ed424232 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -412,7 +412,7 @@  vduse_events_handler(int fd, void *arg, int *remove __rte_unused)
 }
 
 int
-vduse_device_create(const char *path)
+vduse_device_create(const char *path, bool compliant_ol_flags)
 {
 	int control_fd, dev_fd, vid, ret;
 	pthread_t fdset_tid;
@@ -538,7 +538,7 @@  vduse_device_create(const char *path)
 	strncpy(dev->ifname, path, IF_NAME_SZ - 1);
 	dev->vduse_ctrl_fd = control_fd;
 	dev->vduse_dev_fd = dev_fd;
-	vhost_setup_virtio_net(dev->vid, true, true, true, true);
+	vhost_setup_virtio_net(dev->vid, true, compliant_ol_flags, true, true);
 
 	for (i = 0; i < total_queues; i++) {
 		struct vduse_vq_config vq_cfg = { 0 };
diff --git a/lib/vhost/vduse.h b/lib/vhost/vduse.h
index d0142694a7..9d63da664d 100644
--- a/lib/vhost/vduse.h
+++ b/lib/vhost/vduse.h
@@ -11,7 +11,7 @@ 
 
 #ifdef VHOST_HAS_VDUSE
 
-int vduse_device_create(const char *path);
+int vduse_device_create(const char *path, bool compliant_ol_flags);
 int vduse_device_destroy(const char *path);
 
 #else