[dpdk-dev] [PATCH 2/2] net/virtio: support GUEST ANNOUNCE
Wang, Xiao W
xiao.w.wang at intel.com
Thu Nov 30 03:41:12 CET 2017
> -----Original Message-----
> From: Yuanhan Liu [mailto:yliu at fridaylinux.org]
> Sent: Monday, November 27, 2017 8:49 PM
> To: Wang, Xiao W <xiao.w.wang at intel.com>
> Cc: dev at dpdk.org
> Subject: Re: [PATCH 2/2] net/virtio: support GUEST ANNOUNCE
>
> On Fri, Nov 24, 2017 at 03:04:00AM -0800, Xiao Wang wrote:
> > When live migration is done, for the backup VM, either the virtio
> > frontend or the vhost backend needs to send out gratuitous RARP packet
> > to announce its new network location.
> >
> > This patch enables VIRTIO_NET_F_GUEST_ANNOUNCE feature to support
> live
> > migration scenario where the vhost backend doesn't have the ability to
> > generate RARP packet.
>
> Yes, it's a feature good to have.
>
> > +static int
> > +virtio_dev_pause(struct rte_eth_dev *dev)
> > +{
> > + struct virtio_hw *hw = dev->data->dev_private;
> > +
> > + if (hw->started == 0)
> > + return -1;
> > + hw->started = 0;
> > + /*
> > + * Prevent the worker thread from touching queues to avoid condition,
> > + * 1 ms should be enough for the ongoing Tx function to finish.
> > + */
> > + rte_delay_ms(1);
> > + return 0;
> > +}
> > +
> > +static void
> > +virtio_dev_resume(struct rte_eth_dev *dev)
> > +{
> > + struct virtio_hw *hw = dev->data->dev_private;
> > +
> > + hw->started = 1;
> > +}
>
> However, the implementation (stop first, pause for 1ms, duplicate another
> Tx function, resume) doesn't seem elegant.
>
> You probably could try something like DPDK vhost does:
>
> - set a flag when S_ANNOUCE is received
> - inject a pkt when such flag is set in the xmit function
>
> You then should be able to get rid of all of above stuffs.
>
> --yliu
The difference is that the virtio port may just receive packet, without xmit.
Thanks for the comments,
Xiao
More information about the dev
mailing list