diff --git a/virtio-devices/src/net.rs b/virtio-devices/src/net.rs index 7fbb43807..0a2a8a6ce 100644 --- a/virtio-devices/src/net.rs +++ b/virtio-devices/src/net.rs @@ -766,7 +766,11 @@ impl Net { if self.common.feature_acked(VIRTIO_NET_F_STATUS.into()) { status |= VIRTIO_NET_S_LINK_UP as u16; - if self.announce.pending.load(Ordering::Acquire) { + if self + .common + .feature_acked(VIRTIO_NET_F_GUEST_ANNOUNCE.into()) + && self.announce.pending.load(Ordering::Acquire) + { status |= VIRTIO_NET_S_ANNOUNCE as u16; } } diff --git a/virtio-devices/src/vhost_user/net.rs b/virtio-devices/src/vhost_user/net.rs index 302dd5d2f..7076a33f8 100644 --- a/virtio-devices/src/vhost_user/net.rs +++ b/virtio-devices/src/vhost_user/net.rs @@ -272,7 +272,12 @@ impl Net { { status |= VIRTIO_NET_S_LINK_UP as u16; - if self.announce.pending.load(Ordering::Acquire) { + if self + .vu_common + .virtio_common + .feature_acked(VIRTIO_NET_F_GUEST_ANNOUNCE.into()) + && self.announce.pending.load(Ordering::Acquire) + { status |= VIRTIO_NET_S_ANNOUNCE as u16; } }