Hi Maxime, > -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Monday, December 21, 2020 5:14 AM > To: dev@dpdk.org; Xia, Chenbo <chenbo....@intel.com>; olivier.m...@6wind.com; > amore...@redhat.com; david.march...@redhat.com > Cc: Maxime Coquelin <maxime.coque...@redhat.com> > 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 <maxime.coque...@redhat.com> > --- > 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> > @@ -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- > >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 > - 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.h > b/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