From 693a0cfbfd680d95ca781468ea6ef4e5dc695635 Mon Sep 17 00:00:00 2001 From: Xuewei Niu Date: Mon, 25 Dec 2023 14:28:10 +0800 Subject: [PATCH] dragonball: Make vhost-user-net ready for VhostUserEndpoint The changes involve: - Expose VhostUserConfig struct to runtime-rs. - Set a default value while num_queues or queue_size are 0. Signed-off-by: Xuewei Niu --- src/dragonball/src/api/v1/mod.rs | 4 +++- src/dragonball/src/api/v1/virtio_net.rs | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/dragonball/src/api/v1/mod.rs b/src/dragonball/src/api/v1/mod.rs index 53bc5664aa..99ffd689f9 100644 --- a/src/dragonball/src/api/v1/mod.rs +++ b/src/dragonball/src/api/v1/mod.rs @@ -32,4 +32,6 @@ pub use virtio_net::VirtioConfig; feature = "vhost-net", feature = "vhost-user-net" ))] -pub use virtio_net::{Backend, NetworkInterfaceConfig, NetworkInterfaceUpdateConfig}; +pub use virtio_net::{ + Backend, NetworkInterfaceConfig, NetworkInterfaceUpdateConfig, VhostUserConfig, +}; diff --git a/src/dragonball/src/api/v1/virtio_net.rs b/src/dragonball/src/api/v1/virtio_net.rs index c17a2088f7..bfd0841453 100644 --- a/src/dragonball/src/api/v1/virtio_net.rs +++ b/src/dragonball/src/api/v1/virtio_net.rs @@ -68,6 +68,7 @@ pub struct VirtioConfig { pub allow_duplicate_mac: bool, } +/// Config for vhost-user-net device #[cfg(feature = "vhost-user-net")] #[derive(Clone, Debug, Default, Deserialize, PartialEq, Eq, Serialize)] pub struct VhostUserConfig { @@ -197,9 +198,23 @@ impl From<&NetworkInterfaceConfig> for VhostUserNetDeviceConfigInfo { fn from(value: &NetworkInterfaceConfig) -> Self { let num_queues = value .num_queues + .map(|nq| { + if nq == 0 { + vhost_user_net_dev_mgr::DEFAULT_NUM_QUEUES + } else { + nq + } + }) .unwrap_or(vhost_user_net_dev_mgr::DEFAULT_NUM_QUEUES); let queue_size = value .queue_size + .map(|qs| { + if qs == 0 { + vhost_user_net_dev_mgr::DEFAULT_QUEUE_SIZE + } else { + qs + } + }) .unwrap_or(vhost_user_net_dev_mgr::DEFAULT_QUEUE_SIZE); // It is safe because we tested the type of config before. #[allow(unreachable_patterns)]