On Thu, May 10, 2018 at 10:01:55PM +0800, Yang, Zhiyong wrote: > Hi tiwei, > > Thanks for your review firstly. Reply inline. > > > -----Original Message----- > > From: Bie, Tiwei > > Sent: Thursday, May 10, 2018 6:23 PM > > To: Yang, Zhiyong <zhiyong.y...@intel.com> > > Cc: dev@dpdk.org; sta...@dpdk.org; maxime.coque...@redhat.com; Yigit, > > Ferruh <ferruh.yi...@intel.com> > > Subject: Re: [PATCH v2] net/virtio-user: fix multiple queues fail in server > > mode > > > > On Thu, May 10, 2018 at 05:36:23PM +0800, zhiyong.y...@intel.com wrote: > > > This patch fixes multiple queues failure when virtio-user works in > > > server mode. > > > > > > This patch adds feature negotiation in the processing of virtio-user > > > reccnnection. > > > > typo: reccnnection > > > > Fix it. > > > > > > > Fixes: bd8f50a45d0f ("net/virtio-user: support server mode") > > > > > > Signed-off-by: Zhiyong Yang <zhiyong.y...@intel.com> > > > --- > > > > > > Changes in V2: > > > 1. fix a comment typo. > > > 2. add feature negotiation in the processing of reconnection. > > > > > > drivers/net/virtio/virtio_user/vhost_user.c | 3 +++ > > > drivers/net/virtio/virtio_user/virtio_user_dev.c | 14 ++++++++++---- > > > drivers/net/virtio/virtio_user_ethdev.c | 20 > > ++++++++++++++++++++ > > > 3 files changed, 33 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/net/virtio/virtio_user/vhost_user.c > > > b/drivers/net/virtio/virtio_user/vhost_user.c > > > index a6df97a..93e4d92 100644 > > > --- a/drivers/net/virtio/virtio_user/vhost_user.c > > > +++ b/drivers/net/virtio/virtio_user/vhost_user.c > > > @@ -263,6 +263,9 @@ struct hugepage_file_info { > > > > > > PMD_DRV_LOG(INFO, "%s", vhost_msg_strings[req]); > > > > > > + if (dev->is_server && vhostfd < 0) > > > + return -1; > > > + > > > msg.request = req; > > > msg.flags = VHOST_USER_VERSION; > > > msg.size = 0; > > > diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c > > > b/drivers/net/virtio/virtio_user/virtio_user_dev.c > > > index 38b8bc9..b7e1915 100644 > > > --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c > > > +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c > > > @@ -447,10 +447,16 @@ int virtio_user_stop_device(struct > > virtio_user_dev *dev) > > > return -1; > > > } > > > > > > - for (i = 0; i < q_pairs; ++i) > > > - ret |= dev->ops->enable_qp(dev, i, 1); > > > - for (i = q_pairs; i < dev->max_queue_pairs; ++i) > > > - ret |= dev->ops->enable_qp(dev, i, 0); > > > + /* Server mode can't enable queue pairs if vhostfd is invalid, > > > + * always return 0 in this case. > > > + */ > > > + if (dev->vhostfd >= 0) { > > > + for (i = 0; i < q_pairs; ++i) > > > + ret |= dev->ops->enable_qp(dev, i, 1); > > > + for (i = q_pairs; i < dev->max_queue_pairs; ++i) > > > + ret |= dev->ops->enable_qp(dev, i, 0); > > > + } else if (!dev->is_server) > > > + ret = ~0; > > > > You need to find a chance to enable these queue pairs when the connection > > is established. > > > Enable only one queue pairs in virtio_user_start_device. > I want to call virtio_user_handle_mq after virtio_user_start_device in > virtio_user_server_reconnect. How about ?
Sound good. Thanks