runtime-rs: Propagate queue_num and queue_size to network endpoints

Set queue_num (derived from net_pair.queues, one TX + one RX per
queue pair) and queue_size (256) when building the network pair for
veth, macvlan, ipvlan and vlan endpoints so the virtio-net device is
created with the configured multi-queue layout.

Meanwhile, update endpoint tests accordingly.

Signed-off-by: Alex Lyn <alex.lyn@antgroup.com>
This commit is contained in:
Alex Lyn
2026-07-03 10:26:35 +08:00
parent 1ddeb3bd85
commit 69f35bc73e
5 changed files with 16 additions and 1 deletions

View File

@@ -119,6 +119,7 @@ mod tests {
},
model: Arc::new(TcFilterModel::new().unwrap()), // impossible to panic
network_qos: false,
network_queues: 5,
},
};
@@ -159,6 +160,7 @@ mod tests {
_ => unreachable!(),
}
assert_eq!(manual.net_pair.network_qos, result.net_pair.network_qos);
assert_eq!(manual.net_pair.network_queues, result.net_pair.network_queues);
}
assert!(delete_link(&handle, manual_vlan_iface_name.as_str())
.await
@@ -250,6 +252,7 @@ mod tests {
model: network_model::new(model_str)
.expect("failed to create new network model"),
network_qos: false,
network_queues: 5,
},
};
@@ -291,6 +294,7 @@ mod tests {
_ => unreachable!(),
}
assert_eq!(manual.net_pair.network_qos, result.net_pair.network_qos);
assert_eq!(manual.net_pair.network_queues, result.net_pair.network_queues);
}
// delete the manually created links
assert!(delete_link(&handle, manual_macvlan_iface_name.as_str())
@@ -333,7 +337,8 @@ mod tests {
.await
.context("failed to create manual veth pair")
{
if let Ok(mut result) = IPVlanEndpoint::new(&d, &handle, "", idx, 5)
// Test with 0 and fallback default behaviour with 1
if let Ok(mut result) = IPVlanEndpoint::new(&d, &handle, "", idx, 0)
.await
.context("failed to create new ipvlan endpoint")
{
@@ -355,6 +360,7 @@ mod tests {
},
model: Arc::new(TcFilterModel::new().unwrap()), // impossible to panic
network_qos: false,
network_queues: 1,
},
};
@@ -395,6 +401,7 @@ mod tests {
_ => unreachable!(),
}
assert_eq!(manual.net_pair.network_qos, result.net_pair.network_qos);
assert_eq!(manual.net_pair.network_queues, result.net_pair.network_queues);
}
assert!(delete_link(&handle, manual_virt_iface_name.as_str())
.await

View File

@@ -58,6 +58,8 @@ impl IPVlanEndpoint {
host_dev_name: iface.name.clone(),
virt_iface_name: self.net_pair.virt_iface.name.clone(),
guest_mac: Some(guest_mac),
queue_num: self.net_pair.network_queues,
queue_size: 256,
..Default::default()
})
}

View File

@@ -57,6 +57,8 @@ impl MacVlanEndpoint {
host_dev_name: iface.name.clone(),
virt_iface_name: self.net_pair.virt_iface.name.clone(),
guest_mac: Some(guest_mac),
queue_num: self.net_pair.network_queues,
queue_size: 256,
..Default::default()
})
}

View File

@@ -57,6 +57,8 @@ impl VethEndpoint {
host_dev_name: iface.name.clone(),
virt_iface_name: self.net_pair.virt_iface.name.clone(),
guest_mac: Some(guest_mac),
queue_num: self.net_pair.network_queues,
queue_size: 256,
..Default::default()
})
}

View File

@@ -57,6 +57,8 @@ impl VlanEndpoint {
host_dev_name: iface.name.clone(),
virt_iface_name: self.net_pair.virt_iface.name.clone(),
guest_mac: Some(guest_mac),
queue_num: self.net_pair.network_queues,
queue_size: 256,
..Default::default()
})
}