[dpdk-dev] [PATCH 3/4] net/virtio-user: support server mode

Yang, Zhiyong zhiyong.yang at intel.com
Wed Feb 28 02:53:36 CET 2018



> -----Original Message-----
> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
> Sent: Wednesday, February 28, 2018 2:02 AM
> To: Yang, Zhiyong <zhiyong.yang at intel.com>; dev at dpdk.org;
> yliu at fridaylinux.org; Tan, Jianfeng <jianfeng.tan at intel.com>; Bie, Tiwei
> <tiwei.bie at intel.com>; Wang, Zhihong <zhihong.wang at intel.com>
> Cc: Wang, Dong1 <dong1.wang at intel.com>
> Subject: Re: [PATCH 3/4] net/virtio-user: support server mode
> 
> 
> 
> On 02/14/2018 03:53 PM, Zhiyong Yang wrote:
> > virtio user adds to support for server mode.
> >
> > Virtio user with server mode creates socket file and then starts to
> > wait for first connection from vhost user with client mode in blocking mode.
> >
> > Server mode virtio user supports many times' vhost reconnections with
> > same configurations.
> >
> > Support only one connection at the same time in server mode.
> >
> > Signed-off-by: Zhiyong Yang <zhiyong.yang at intel.com>
> > ---
> >   drivers/net/virtio/virtio_ethdev.c               |  9 ++-
> >   drivers/net/virtio/virtio_user/vhost_user.c      | 77
> ++++++++++++++++++++--
> >   drivers/net/virtio/virtio_user/virtio_user_dev.c | 44 +++++++++----
> >   drivers/net/virtio/virtio_user_ethdev.c          | 81
> ++++++++++++++++++++++--
> >   4 files changed, 186 insertions(+), 25 deletions(-)
> >
> > diff --git a/drivers/net/virtio/virtio_ethdev.c
> > b/drivers/net/virtio/virtio_ethdev.c
> > index 884f74ad0..44d037d6b 100644
> > --- a/drivers/net/virtio/virtio_ethdev.c
> > +++ b/drivers/net/virtio/virtio_ethdev.c
> > @@ -1273,9 +1273,13 @@ static void
> >   virtio_notify_peers(struct rte_eth_dev *dev)
> >   {
> >   	struct virtio_hw *hw = dev->data->dev_private;
> > -	struct virtnet_rx *rxvq = dev->data->rx_queues[0];
> > +	struct virtnet_rx *rxvq = NULL;
> I don't think it is needed to assign to NULL here.

Ok.
> 
> >   	struct rte_mbuf *rarp_mbuf;
> >
> > +	if (!dev->data->rx_queues)
> > +		return;
> > +
> > +	rxvq = dev->data->rx_queues[0];
> The above change is valid, but I think it should be in a dedicated patch, as it
> might be backported to -stable.
> 
Ok, it will cause crash in some cases. For example, the code goes here before memory allocation of  rxvq is done.

> >   	rarp_mbuf = rte_net_make_rarp_packet(rxvq->mpool,
> >   			(struct ether_addr *)hw->mac_addr);
> >   	if (rarp_mbuf == NULL) {
> > @@ -1333,7 +1337,8 @@ virtio_interrupt_handler(void *param)
> >
> >   	if (isr & VIRTIO_NET_S_ANNOUNCE) {
> >   		virtio_notify_peers(dev);
> > -		virtio_ack_link_announce(dev);
> > +		if (hw->cvq) > +
> 	virtio_ack_link_announce(dev);
> Is this change also related to server mode?
> It may deserve a dedicated patch too.

Above changes are not related to server mode. :). 
Just looks more reasonable.

If format extra two patches,  Should I put them in this series or in another series?

Thanks
Zhiyong

> >   	}
> >   }
> 
> Thanks,
> Maxime


More information about the dev mailing list