summary refs log tree commit diff
path: root/devices/src/virtio/vhost/net.rs
diff options
context:
space:
mode:
authorChuanxiao Dong <chuanxiao.dong@intel.corp-partner.google.com>2020-02-07 10:36:25 +0800
committerCommit Bot <commit-bot@chromium.org>2020-03-25 01:33:59 +0000
commit57b8201eeb75d9b2cbf424fa7a91d6738fe8610c (patch)
treec057756783df53b0c9df7cb237051754cb7df160 /devices/src/virtio/vhost/net.rs
parent02f58e6d74bc1926424de43e9caec707f17c1b80 (diff)
downloadcrosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar.gz
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar.bz2
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar.lz
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar.xz
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.tar.zst
crosvm-57b8201eeb75d9b2cbf424fa7a91d6738fe8610c.zip
vhost: pass response_socket to activate thread
Pass the Option of the response socket should be used by the
activate thread, to communicate with its device model.

BUG=None
TEST=cargo test -p devices

Change-Id: I929f4c901468e920116f2a744ec73571d91080e3
Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2046451
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'devices/src/virtio/vhost/net.rs')
-rw-r--r--devices/src/virtio/vhost/net.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/devices/src/virtio/vhost/net.rs b/devices/src/virtio/vhost/net.rs
index 21f1587..cc9521a 100644
--- a/devices/src/virtio/vhost/net.rs
+++ b/devices/src/virtio/vhost/net.rs
@@ -204,6 +204,11 @@ where
                 if let Some(vhost_interrupt) = self.vhost_interrupt.take() {
                     if let Some(kill_evt) = self.workers_kill_evt.take() {
                         let acked_features = self.acked_features;
+                        let socket = if self.response_socket.is_some() {
+                            self.response_socket.take()
+                        } else {
+                            None
+                        };
                         let worker_result = thread::Builder::new()
                             .name("vhost_net".to_string())
                             .spawn(move || {
@@ -214,6 +219,7 @@ where
                                     interrupt,
                                     acked_features,
                                     kill_evt,
+                                    socket,
                                 );
                                 let activate_vqs = |handle: &U| -> Result<()> {
                                     for idx in 0..NUM_QUEUES {
@@ -284,6 +290,7 @@ where
                     self.tap = Some(tap);
                     self.vhost_interrupt = Some(worker.vhost_interrupt);
                     self.workers_kill_evt = Some(worker.kill_evt);
+                    self.response_socket = worker.response_socket;
                     return true;
                 }
             }