Re: [dpdk-dev] [PATCH 40/40] net/virtio: move Vhost-vDPA data to its backend
From: Xia, Chenbo <hidden>
Date: 2021-01-11 08:05:45
Hi Maxime,
-----Original Message----- From: Maxime Coquelin <redacted> Sent: Monday, December 21, 2020 5:14 AM To: dev@dpdk.org; Xia, Chenbo <redacted>; olivier.matz@6wind.com; amorenoz@redhat.com; david.marchand@redhat.com Cc: Maxime Coquelin <redacted> Subject: [PATCH 40/40] net/virtio: move Vhost-vDPA data to its backend As done earlier for Vhost-user and Vhost-kernel, this patch moves the Vhost-vDPA specific data to its backend file. Signed-off-by: Maxime Coquelin <redacted> --- drivers/net/virtio/virtio_user/vhost_vdpa.c | 77 ++++++++++++++----- .../net/virtio/virtio_user/virtio_user_dev.h | 3 - 2 files changed, 58 insertions(+), 22 deletions(-)
<snip>
quoted hunk ↗ jump to hunk
@@ -269,16 +298,23 @@ vhost_vdpa_set_status(struct virtio_user_dev *dev,uint8_t status) static int vhost_vdpa_setup(struct virtio_user_dev *dev) { + struct vhost_vdpa_data *data; uint32_t did = (uint32_t)-1; - dev->vhostfd = open(dev->path, O_RDWR); - if (dev->vhostfd < 0) { + data = malloc(sizeof(*data)); + if (!data) { + PMD_DRV_LOG(ERR, "(%s) Faidle to allocate backend data", dev-quoted
path);+ return -1; + } + + data->vhostfd = open(dev->path, O_RDWR); + if (data->vhostfd < 0) { PMD_DRV_LOG(ERR, "Failed to open %s: %s\n", dev->path, strerror(errno)); return -1; }
Forget to do 'dev->backend_data = data'? 😊 Thanks! Chenbo
quoted hunk ↗ jump to hunk
- if (ioctl(dev->vhostfd, VHOST_VDPA_GET_DEVICE_ID, &did) < 0 || + if (ioctl(data->vhostfd, VHOST_VDPA_GET_DEVICE_ID, &did) < 0 || did != VIRTIO_ID_NETWORK) { PMD_DRV_LOG(ERR, "Invalid vdpa device ID: %u\n", did); return -1;@@ -288,9 +324,12 @@ vhost_vdpa_setup(struct virtio_user_dev *dev) } static int -vhost_vdpa_destroy(struct virtio_user_dev *dev __rte_unused) +vhost_vdpa_destroy(struct virtio_user_dev *dev ) { - return; + struct vhost_vdpa_data *data = dev->backend_data; + + close(data->vhostfd); + return 0; }diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.hb/drivers/net/virtio/virtio_user/virtio_user_dev.h index 5a2c9d38dd..2e0d6504f6 100644--- a/drivers/net/virtio/virtio_user/virtio_user_dev.h +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.h@@ -28,9 +28,6 @@ struct virtio_user_dev { enum virtio_user_backend_type backend_type; bool is_server; /* server or client mode */ - /* for vhost_vdpa backend */ - int vhostfd; - /* for both vhost_user and vhost_kernel */ int callfds[VIRTIO_MAX_VIRTQUEUES]; int kickfds[VIRTIO_MAX_VIRTQUEUES]; --2.29.2