This set of patches introduces graceful switch from tap-vhost to tap-no-vhost depending on guest features. Before that the features that vhost does not support were silently cleared in get_features. This creates potential problem of migration from the machine where some of virtio-net features are supported by the vhost kernel to the machine where they are not supported (packed ring as an example).
Instead of silent masking of the features virtio-net gracefully disables the vhost at set_features if some features acked by the guest contradict with kernel vhost capabilities. This set of patches also makes get_vhost_net() call (that used everywhere) to always return actual result, i.e. initially it returns non-NULL value and from the moment the vhost was disabled the call will return NULL. Such a way we avoid any unexpected calls to vhost functions. Yuri Benditovich (3): vhost-net: add VIRTIO_NET_F_HASH_REPORT to the list of kernel features net: add ability to hide (disable) vhost_net virtio-net: graceful fallback to vhost=off for tap netdev hw/net/vhost_net.c | 5 +++- hw/net/virtio-net.c | 58 ++++++++++++++++++++++++++++++++++++++------- include/net/net.h | 1 + 3 files changed, 55 insertions(+), 9 deletions(-) -- 2.17.1