> -----Original Message----- > From: Yuanhan Liu [mailto:y...@fridaylinux.org] > Sent: Monday, November 27, 2017 8:49 PM > To: Wang, Xiao W <xiao.w.w...@intel.com> > Cc: dev@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