mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-02-01 09:25:21 +00:00
virtio-devices: Automatically fix operator precedence clippy warning
Signed-off-by: Rob Bradford <rbradford@rivosinc.com>
This commit is contained in:
parent
21f05ebb4f
commit
2624f17ffe
@ -178,13 +178,13 @@ impl VhostUserBackendMut for VhostUserNetBackend {
|
|||||||
| (1 << VIRTIO_NET_F_HOST_TSO4)
|
| (1 << VIRTIO_NET_F_HOST_TSO4)
|
||||||
| (1 << VIRTIO_NET_F_HOST_TSO6)
|
| (1 << VIRTIO_NET_F_HOST_TSO6)
|
||||||
| (1 << VIRTIO_NET_F_HOST_ECN)
|
| (1 << VIRTIO_NET_F_HOST_ECN)
|
||||||
| 1 << VIRTIO_NET_F_HOST_UFO
|
| (1 << VIRTIO_NET_F_HOST_UFO)
|
||||||
| 1 << VIRTIO_NET_F_CTRL_VQ
|
| (1 << VIRTIO_NET_F_CTRL_VQ)
|
||||||
| 1 << VIRTIO_NET_F_MQ
|
| (1 << VIRTIO_NET_F_MQ)
|
||||||
| 1 << VIRTIO_NET_F_MAC
|
| (1 << VIRTIO_NET_F_MAC)
|
||||||
| 1 << VIRTIO_NET_F_MTU
|
| (1 << VIRTIO_NET_F_MTU)
|
||||||
| 1 << VIRTIO_F_NOTIFY_ON_EMPTY
|
| (1 << VIRTIO_F_NOTIFY_ON_EMPTY)
|
||||||
| 1 << VIRTIO_F_VERSION_1
|
| (1 << VIRTIO_F_VERSION_1)
|
||||||
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits()
|
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -624,7 +624,7 @@ impl Console {
|
|||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let mut avail_features = 1u64 << VIRTIO_F_VERSION_1 | 1u64 << VIRTIO_CONSOLE_F_SIZE;
|
let mut avail_features = (1u64 << VIRTIO_F_VERSION_1) | (1u64 << VIRTIO_CONSOLE_F_SIZE);
|
||||||
if iommu {
|
if iommu {
|
||||||
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ pub struct VirtioCommon {
|
|||||||
|
|
||||||
impl VirtioCommon {
|
impl VirtioCommon {
|
||||||
pub fn feature_acked(&self, feature: u64) -> bool {
|
pub fn feature_acked(&self, feature: u64) -> bool {
|
||||||
self.acked_features & 1 << feature == 1 << feature
|
self.acked_features & (1 << feature) == 1 << feature
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn ack_features(&mut self, value: u64) {
|
pub fn ack_features(&mut self, value: u64) {
|
||||||
|
@ -940,10 +940,10 @@ impl Iommu {
|
|||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let avail_features = 1u64 << VIRTIO_F_VERSION_1
|
let avail_features = (1u64 << VIRTIO_F_VERSION_1)
|
||||||
| 1u64 << VIRTIO_IOMMU_F_MAP_UNMAP
|
| (1u64 << VIRTIO_IOMMU_F_MAP_UNMAP)
|
||||||
| 1u64 << VIRTIO_IOMMU_F_PROBE
|
| (1u64 << VIRTIO_IOMMU_F_PROBE)
|
||||||
| 1u64 << VIRTIO_IOMMU_F_BYPASS_CONFIG;
|
| (1u64 << VIRTIO_IOMMU_F_BYPASS_CONFIG);
|
||||||
|
|
||||||
(avail_features, 0, BTreeMap::new(), BTreeMap::new(), false)
|
(avail_features, 0, BTreeMap::new(), BTreeMap::new(), false)
|
||||||
};
|
};
|
||||||
|
@ -449,73 +449,75 @@ impl Net {
|
|||||||
|
|
||||||
let mtu = taps[0].mtu().map_err(Error::TapError)? as u16;
|
let mtu = taps[0].mtu().map_err(Error::TapError)? as u16;
|
||||||
|
|
||||||
let (avail_features, acked_features, config, queue_sizes, paused) =
|
let (avail_features, acked_features, config, queue_sizes, paused) = if let Some(state) =
|
||||||
if let Some(state) = state {
|
state
|
||||||
info!("Restoring virtio-net {}", id);
|
{
|
||||||
(
|
info!("Restoring virtio-net {}", id);
|
||||||
state.avail_features,
|
(
|
||||||
state.acked_features,
|
state.avail_features,
|
||||||
state.config,
|
state.acked_features,
|
||||||
state.queue_size,
|
state.config,
|
||||||
true,
|
state.queue_size,
|
||||||
)
|
true,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
let mut avail_features = (1 << VIRTIO_NET_F_MTU)
|
||||||
|
| (1 << VIRTIO_RING_F_EVENT_IDX)
|
||||||
|
| (1 << VIRTIO_F_VERSION_1);
|
||||||
|
|
||||||
|
if iommu {
|
||||||
|
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configure TSO/UFO features when hardware checksum offload is enabled.
|
||||||
|
if offload_csum {
|
||||||
|
avail_features |= (1 << VIRTIO_NET_F_CSUM)
|
||||||
|
| (1 << VIRTIO_NET_F_GUEST_CSUM)
|
||||||
|
| (1 << VIRTIO_NET_F_CTRL_GUEST_OFFLOADS);
|
||||||
|
|
||||||
|
if offload_tso {
|
||||||
|
avail_features |= (1 << VIRTIO_NET_F_HOST_ECN)
|
||||||
|
| (1 << VIRTIO_NET_F_HOST_TSO4)
|
||||||
|
| (1 << VIRTIO_NET_F_HOST_TSO6)
|
||||||
|
| (1 << VIRTIO_NET_F_GUEST_ECN)
|
||||||
|
| (1 << VIRTIO_NET_F_GUEST_TSO4)
|
||||||
|
| (1 << VIRTIO_NET_F_GUEST_TSO6);
|
||||||
|
}
|
||||||
|
|
||||||
|
if offload_ufo {
|
||||||
|
avail_features |= (1 << VIRTIO_NET_F_HOST_UFO) | (1 << VIRTIO_NET_F_GUEST_UFO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
avail_features |= 1 << VIRTIO_NET_F_CTRL_VQ;
|
||||||
|
let queue_num = num_queues + 1;
|
||||||
|
|
||||||
|
let mut config = VirtioNetConfig::default();
|
||||||
|
if let Some(mac) = guest_mac {
|
||||||
|
build_net_config_space(
|
||||||
|
&mut config,
|
||||||
|
mac,
|
||||||
|
num_queues,
|
||||||
|
Some(mtu),
|
||||||
|
&mut avail_features,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
let mut avail_features =
|
build_net_config_space_with_mq(
|
||||||
1 << VIRTIO_NET_F_MTU | 1 << VIRTIO_RING_F_EVENT_IDX | 1 << VIRTIO_F_VERSION_1;
|
&mut config,
|
||||||
|
num_queues,
|
||||||
|
Some(mtu),
|
||||||
|
&mut avail_features,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if iommu {
|
(
|
||||||
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
avail_features,
|
||||||
}
|
0,
|
||||||
|
config,
|
||||||
// Configure TSO/UFO features when hardware checksum offload is enabled.
|
vec![queue_size; queue_num],
|
||||||
if offload_csum {
|
false,
|
||||||
avail_features |= 1 << VIRTIO_NET_F_CSUM
|
)
|
||||||
| 1 << VIRTIO_NET_F_GUEST_CSUM
|
};
|
||||||
| 1 << VIRTIO_NET_F_CTRL_GUEST_OFFLOADS;
|
|
||||||
|
|
||||||
if offload_tso {
|
|
||||||
avail_features |= 1 << VIRTIO_NET_F_HOST_ECN
|
|
||||||
| 1 << VIRTIO_NET_F_HOST_TSO4
|
|
||||||
| 1 << VIRTIO_NET_F_HOST_TSO6
|
|
||||||
| 1 << VIRTIO_NET_F_GUEST_ECN
|
|
||||||
| 1 << VIRTIO_NET_F_GUEST_TSO4
|
|
||||||
| 1 << VIRTIO_NET_F_GUEST_TSO6;
|
|
||||||
}
|
|
||||||
|
|
||||||
if offload_ufo {
|
|
||||||
avail_features |= 1 << VIRTIO_NET_F_HOST_UFO | 1 << VIRTIO_NET_F_GUEST_UFO;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
avail_features |= 1 << VIRTIO_NET_F_CTRL_VQ;
|
|
||||||
let queue_num = num_queues + 1;
|
|
||||||
|
|
||||||
let mut config = VirtioNetConfig::default();
|
|
||||||
if let Some(mac) = guest_mac {
|
|
||||||
build_net_config_space(
|
|
||||||
&mut config,
|
|
||||||
mac,
|
|
||||||
num_queues,
|
|
||||||
Some(mtu),
|
|
||||||
&mut avail_features,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
build_net_config_space_with_mq(
|
|
||||||
&mut config,
|
|
||||||
num_queues,
|
|
||||||
Some(mtu),
|
|
||||||
&mut avail_features,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
(
|
|
||||||
avail_features,
|
|
||||||
0,
|
|
||||||
config,
|
|
||||||
vec![queue_size; queue_num],
|
|
||||||
false,
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(Net {
|
Ok(Net {
|
||||||
common: VirtioCommon {
|
common: VirtioCommon {
|
||||||
|
@ -98,16 +98,16 @@ impl Blk {
|
|||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// Filling device and vring features VMM supports.
|
// Filling device and vring features VMM supports.
|
||||||
let mut avail_features = 1 << VIRTIO_BLK_F_SIZE_MAX
|
let mut avail_features = (1 << VIRTIO_BLK_F_SIZE_MAX)
|
||||||
| 1 << VIRTIO_BLK_F_SEG_MAX
|
| (1 << VIRTIO_BLK_F_SEG_MAX)
|
||||||
| 1 << VIRTIO_BLK_F_GEOMETRY
|
| (1 << VIRTIO_BLK_F_GEOMETRY)
|
||||||
| 1 << VIRTIO_BLK_F_RO
|
| (1 << VIRTIO_BLK_F_RO)
|
||||||
| 1 << VIRTIO_BLK_F_BLK_SIZE
|
| (1 << VIRTIO_BLK_F_BLK_SIZE)
|
||||||
| 1 << VIRTIO_BLK_F_FLUSH
|
| (1 << VIRTIO_BLK_F_FLUSH)
|
||||||
| 1 << VIRTIO_BLK_F_TOPOLOGY
|
| (1 << VIRTIO_BLK_F_TOPOLOGY)
|
||||||
| 1 << VIRTIO_BLK_F_CONFIG_WCE
|
| (1 << VIRTIO_BLK_F_CONFIG_WCE)
|
||||||
| 1 << VIRTIO_BLK_F_DISCARD
|
| (1 << VIRTIO_BLK_F_DISCARD)
|
||||||
| 1 << VIRTIO_BLK_F_WRITE_ZEROES
|
| (1 << VIRTIO_BLK_F_WRITE_ZEROES)
|
||||||
| DEFAULT_VIRTIO_FEATURES;
|
| DEFAULT_VIRTIO_FEATURES;
|
||||||
|
|
||||||
if num_queues > 1 {
|
if num_queues > 1 {
|
||||||
|
@ -147,12 +147,12 @@ pub enum Error {
|
|||||||
}
|
}
|
||||||
type Result<T> = std::result::Result<T, Error>;
|
type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
pub const DEFAULT_VIRTIO_FEATURES: u64 = 1 << VIRTIO_F_RING_INDIRECT_DESC
|
pub const DEFAULT_VIRTIO_FEATURES: u64 = (1 << VIRTIO_F_RING_INDIRECT_DESC)
|
||||||
| 1 << VIRTIO_F_RING_EVENT_IDX
|
| (1 << VIRTIO_F_RING_EVENT_IDX)
|
||||||
| 1 << VIRTIO_F_VERSION_1
|
| (1 << VIRTIO_F_VERSION_1)
|
||||||
| 1 << VIRTIO_F_IN_ORDER
|
| (1 << VIRTIO_F_IN_ORDER)
|
||||||
| 1 << VIRTIO_F_ORDER_PLATFORM
|
| (1 << VIRTIO_F_ORDER_PLATFORM)
|
||||||
| 1 << VIRTIO_F_NOTIFICATION_DATA
|
| (1 << VIRTIO_F_NOTIFICATION_DATA)
|
||||||
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits();
|
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits();
|
||||||
|
|
||||||
const HUP_CONNECTION_EVENT: u16 = EPOLL_HELPER_EVENT_LAST + 1;
|
const HUP_CONNECTION_EVENT: u16 = EPOLL_HELPER_EVENT_LAST + 1;
|
||||||
|
@ -118,10 +118,10 @@ impl Net {
|
|||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// Filling device and vring features VMM supports.
|
// Filling device and vring features VMM supports.
|
||||||
let mut avail_features = 1 << VIRTIO_NET_F_MRG_RXBUF
|
let mut avail_features = (1 << VIRTIO_NET_F_MRG_RXBUF)
|
||||||
| 1 << VIRTIO_NET_F_CTRL_VQ
|
| (1 << VIRTIO_NET_F_CTRL_VQ)
|
||||||
| 1 << VIRTIO_F_RING_EVENT_IDX
|
| (1 << VIRTIO_F_RING_EVENT_IDX)
|
||||||
| 1 << VIRTIO_F_VERSION_1
|
| (1 << VIRTIO_F_VERSION_1)
|
||||||
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits();
|
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits();
|
||||||
|
|
||||||
if mtu.is_some() {
|
if mtu.is_some() {
|
||||||
@ -130,19 +130,19 @@ impl Net {
|
|||||||
|
|
||||||
// Configure TSO/UFO features when hardware checksum offload is enabled.
|
// Configure TSO/UFO features when hardware checksum offload is enabled.
|
||||||
if offload_csum {
|
if offload_csum {
|
||||||
avail_features |= 1 << VIRTIO_NET_F_CSUM | 1 << VIRTIO_NET_F_GUEST_CSUM;
|
avail_features |= (1 << VIRTIO_NET_F_CSUM) | (1 << VIRTIO_NET_F_GUEST_CSUM);
|
||||||
|
|
||||||
if offload_tso {
|
if offload_tso {
|
||||||
avail_features |= 1 << VIRTIO_NET_F_HOST_ECN
|
avail_features |= (1 << VIRTIO_NET_F_HOST_ECN)
|
||||||
| 1 << VIRTIO_NET_F_HOST_TSO4
|
| (1 << VIRTIO_NET_F_HOST_TSO4)
|
||||||
| 1 << VIRTIO_NET_F_HOST_TSO6
|
| (1 << VIRTIO_NET_F_HOST_TSO6)
|
||||||
| 1 << VIRTIO_NET_F_GUEST_ECN
|
| (1 << VIRTIO_NET_F_GUEST_ECN)
|
||||||
| 1 << VIRTIO_NET_F_GUEST_TSO4
|
| (1 << VIRTIO_NET_F_GUEST_TSO4)
|
||||||
| 1 << VIRTIO_NET_F_GUEST_TSO6;
|
| (1 << VIRTIO_NET_F_GUEST_TSO6);
|
||||||
}
|
}
|
||||||
|
|
||||||
if offload_ufo {
|
if offload_ufo {
|
||||||
avail_features |= 1 << VIRTIO_NET_F_HOST_UFO | 1 << VIRTIO_NET_F_GUEST_UFO;
|
avail_features |= (1 << VIRTIO_NET_F_HOST_UFO) | (1 << VIRTIO_NET_F_GUEST_UFO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ where
|
|||||||
info!("Restoring virtio-vsock {}", id);
|
info!("Restoring virtio-vsock {}", id);
|
||||||
(state.avail_features, state.acked_features, true)
|
(state.avail_features, state.acked_features, true)
|
||||||
} else {
|
} else {
|
||||||
let mut avail_features = 1u64 << VIRTIO_F_VERSION_1 | 1u64 << VIRTIO_F_IN_ORDER;
|
let mut avail_features = (1u64 << VIRTIO_F_VERSION_1) | (1u64 << VIRTIO_F_IN_ORDER);
|
||||||
|
|
||||||
if iommu {
|
if iommu {
|
||||||
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
avail_features |= 1u64 << VIRTIO_F_IOMMU_PLATFORM;
|
||||||
@ -529,7 +529,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_virtio_device() {
|
fn test_virtio_device() {
|
||||||
let mut ctx = TestContext::new();
|
let mut ctx = TestContext::new();
|
||||||
let avail_features = 1u64 << VIRTIO_F_VERSION_1 | 1u64 << VIRTIO_F_IN_ORDER;
|
let avail_features = (1u64 << VIRTIO_F_VERSION_1) | (1u64 << VIRTIO_F_IN_ORDER);
|
||||||
let device_features = avail_features;
|
let device_features = avail_features;
|
||||||
let driver_features: u64 = avail_features | 1 | (1 << 32);
|
let driver_features: u64 = avail_features | 1 | (1 << 32);
|
||||||
let device_pages = [
|
let device_pages = [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user