Hi Maxime/ Adrian,

Thanks for the patch.  we can launch vhost-user with client mode with this fix 
patch.
But still fail to get throughput with basic vhost/virtio-user server mode 
loopback test. This is another problem which introduced by 
57912824615fd7787a48a7b18e40661466.
Bugzilla: https://bugs.dpdk.org/show_bug.cgi?id=541

BR,
Yinan
> -----Original Message-----
> From: Maxime Coquelin <maxime.coque...@redhat.com>
> Sent: 2020年10月21日 0:43
> To: Adrian Moreno <amore...@redhat.com>; dev@dpdk.org
> Cc: Wang, Yinan <yinan.w...@intel.com>; Fu, Patrick <patrick...@intel.com>;
> sta...@dpdk.org; Xia, Chenbo <chenbo....@intel.com>; Wang, Zhihong
> <zhihong.w...@intel.com>
> Subject: Re: [PATCH v2 3/3] virtio-user: set status on virtio-user reconnect
> 
> 
> 
> On 10/20/20 5:20 PM, Adrian Moreno wrote:
> > Newer vhost-user backends will rely on SET_STATUS to start the device
> > so this required to support them.
> >
> > Fixes: 57912824615f ("net/virtio-user: support vhost status setting")
> > Cc: maxime.coque...@redhat.com
> > Cc: sta...@dpdk.org
> >
> > Signed-off-by: Adrian Moreno <amore...@redhat.com>
> > ---
> >  drivers/net/virtio/virtio_user_ethdev.c | 14 ++++++++++++--
> >  1 file changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/virtio/virtio_user_ethdev.c
> b/drivers/net/virtio/virtio_user_ethdev.c
> > index e870fb2ff..d8bea4537 100644
> > --- a/drivers/net/virtio/virtio_user_ethdev.c
> > +++ b/drivers/net/virtio/virtio_user_ethdev.c
> > @@ -78,6 +78,13 @@ virtio_user_server_reconnect(struct virtio_user_dev
> *dev)
> >             return -1;
> >
> >     dev->vhostfd = connectfd;
> > +
> > +   vtpci_reset(hw);
> > +
> > +   vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_ACK);
> > +
> > +   vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_DRIVER);
> > +
> >     if (dev->ops->send_request(dev, VHOST_USER_GET_FEATURES,
> >                                &dev->device_features) < 0) {
> >             PMD_INIT_LOG(ERR, "get_features failed: %s",
> > @@ -111,6 +118,8 @@ virtio_user_server_reconnect(struct virtio_user_dev
> *dev)
> >
> >     dev->features &= dev->device_features;
> >
> > +   vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_FEATURES_OK);
> > +
> >     /* For packed ring, resetting queues is required in reconnection. */
> >     if (vtpci_packed_queue(hw) &&
> >        (vtpci_get_status(hw) & VIRTIO_CONFIG_STATUS_DRIVER_OK)) {
> > @@ -119,8 +128,9 @@ virtio_user_server_reconnect(struct virtio_user_dev
> *dev)
> >             virtio_user_reset_queues_packed(eth_dev);
> >     }
> >
> > -   ret = virtio_user_start_device(dev);
> > -   if (ret < 0)
> > +   /*  Start the device */
> > +   vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_DRIVER_OK);
> > +   if (!dev->started)
> >             return -1;
> >
> >     if (dev->queue_pairs > 1) {
> >
> 
> Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
> 
> Thanks,
> Maxime

Reply via email to