[dpdk-dev] [PATCH 2/2] net/virtio: support GUEST ANNOUNCE
Yuanhan Liu
yliu at fridaylinux.org
Mon Nov 27 13:48:55 CET 2017
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
More information about the dev
mailing list