]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
virtio_net: disable VIRTIO_NET_F_STANDBY if VIRTIO_NET_F_MAC is not set
authorLaurent Vivier <lvivier@redhat.com>
Fri, 27 Jan 2023 20:44:59 +0000 (21:44 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Feb 2023 04:53:04 +0000 (20:53 -0800)
failover relies on the MAC address to pair the primary and the standby
devices:

  "[...] the hypervisor needs to enable VIRTIO_NET_F_STANDBY
   feature on the virtio-net interface and assign the same MAC address
   to both virtio-net and VF interfaces."

  Documentation/networking/net_failover.rst

This patch disables the STANDBY feature if the MAC address is not
provided by the hypervisor.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/virtio_net.c

index 7e1a984301900773f6ac8925b295724cabd7483f..a2fad99b06ad8057377ec518c4f4d4352fc96cbd 100644 (file)
@@ -3813,6 +3813,12 @@ static int virtnet_validate(struct virtio_device *vdev)
                        __virtio_clear_bit(vdev, VIRTIO_NET_F_MTU);
        }
 
+       if (virtio_has_feature(vdev, VIRTIO_NET_F_STANDBY) &&
+           !virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) {
+               dev_warn(&vdev->dev, "device advertises feature VIRTIO_NET_F_STANDBY but not VIRTIO_NET_F_MAC, disabling standby");
+               __virtio_clear_bit(vdev, VIRTIO_NET_F_STANDBY);
+       }
+
        return 0;
 }