diff --git a/src/devices/src/virtio/net/worker.rs b/src/devices/src/virtio/net/worker.rs index 133e23b46..111d2145a 100644 --- a/src/devices/src/virtio/net/worker.rs +++ b/src/devices/src/virtio/net/worker.rs @@ -284,7 +284,11 @@ impl NetWorker { Err(TxError::Backend(WriteError::NothingWritten)) => true, Err(e) => { log::error!("Failed to process tx: {e:?}"); - false + // Re-enable notifications before breaking so the guest + // can still kick the TX queue on future descriptors. + let _ = self.tx_q.queue.enable_notification(&self.mem); + self.tx_has_deferred_frame = false; + break; } _ => false, };