This an update of series that let guest and qemu to be co-operated to send gratuitous packets when needed (e.g after migration).
As it's hard for qemu to track the network configuration in guest such as bondings, vlans or ipv6s. Current gratuitous (RARP packets for primary mac address) may not work under those situations. The better method is to allow guest to send them when they can. The series first introduce a model specific function in order to let nic models to use a device specific way to announce the link presence. With this, virtio-net backend were modified to notify the guest (through config update interrupt) and let guest send the gratuitous packet when needed. The first user would be virtio-net. Changes from V5: - use a global variable to decide whether an announcement is needed after migration - align with virtio spec and let guest ack the announcement notification through control vq instead of config status writing Changes from V4: - keep the old behavior that send the gratuitous packets only after migration - decide whether to send gratuitous packets by previous runstate instead of a dedicated parameter - check virtio_net_started() instead of VIRTIO_NET_S_LINK_UP before issue the config update interrupt - move VIRTIO_NET_S_ANNOUNCE to 0x100 and supress guest config write to RO bits - cleanups suggested by Michael --- Jason Wang (4): net: announce self after vm start net: model specific announcing support virtio-net: notify guest to annouce itself virtio-net: compat guest announce support hw/pc_piix.c | 35 +++++++++++++++++++++++++++++++++++ hw/virtio-net.c | 29 +++++++++++++++++++++++++++++ hw/virtio-net.h | 14 ++++++++++++++ migration.c | 2 +- migration.h | 2 ++ net.h | 2 ++ savevm.c | 8 +++++--- vl.c | 5 +++++ 8 files changed, 93 insertions(+), 4 deletions(-) -- Jason Wang