• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2021 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use vmm_vhost::message::VhostUserProtocolFeatures;
6 
7 use crate::virtio::vhost::user::vmm::Connection;
8 use crate::virtio::vhost::user::vmm::QueueSizes;
9 use crate::virtio::vhost::user::vmm::Result;
10 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice;
11 use crate::virtio::DeviceType;
12 
13 const QUEUE_SIZE: u16 = 1024;
14 
15 // control, event, tx, and rx queues
16 const NUM_QUEUES: usize = 4;
17 
18 impl VhostUserVirtioDevice {
new_snd(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice>19     pub fn new_snd(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice> {
20         let queue_sizes = QueueSizes::AskDevice {
21             queue_size: QUEUE_SIZE,
22             default_queues: NUM_QUEUES,
23         };
24         let max_queues = NUM_QUEUES;
25 
26         let allow_features = 0;
27         let allow_protocol_features =
28             VhostUserProtocolFeatures::MQ | VhostUserProtocolFeatures::CONFIG;
29 
30         VhostUserVirtioDevice::new(
31             connection,
32             DeviceType::Sound,
33             queue_sizes,
34             max_queues,
35             allow_features,
36             allow_protocol_features,
37             base_features,
38             None,
39             false,
40         )
41     }
42 }
43