[RFC PATCH 15/16] char-device: Do not stop and clear interface on reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This allows less hard reset to the device so can be
used to reset the device into a clean but working
state.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/char-device.c | 2 --
 server/reds.c        | 6 +++++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/server/char-device.c b/server/char-device.c
index 87a4b19..8aa232b 100644
--- a/server/char-device.c
+++ b/server/char-device.c
@@ -810,7 +810,6 @@ void red_char_device_reset(RedCharDevice *dev)
     GList *client_item;
     RedCharDeviceWriteBuffer *buf;
 
-    red_char_device_stop(dev);
     dev->priv->wait_for_migrate_data = FALSE;
     spice_debug("char device %p", dev);
     while ((buf = g_queue_pop_tail(&dev->priv->write_queue))) {
@@ -832,7 +831,6 @@ void red_char_device_reset(RedCharDevice *dev)
         dev_client->num_client_tokens += dev_client->num_client_tokens_free;
         dev_client->num_client_tokens_free = 0;
     }
-    red_char_device_reset_dev_instance(dev, NULL);
 }
 
 void red_char_device_wakeup(RedCharDevice *dev)
diff --git a/server/reds.c b/server/reds.c
index b144d1e..8db70ee 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -431,6 +431,7 @@ static void reds_reset_vdp(RedsState *reds)
 {
     RedCharDeviceVDIPort *dev = reds->agent_dev;
     SpiceCharDeviceInterface *sif;
+    RedCharDevice *char_dev;
 
     dev->priv->read_state = VDI_PORT_READ_STATE_READ_HEADER;
     dev->priv->receive_pos = (uint8_t *)&dev->priv->vdi_chunk_header;
@@ -463,7 +464,10 @@ static void reds_reset_vdp(RedsState *reds)
      *  The tokens are also reset to avoid mismatch in upon agent reconnection.
      */
     dev->priv->agent_attached = FALSE;
-    red_char_device_reset(RED_CHAR_DEVICE(dev));
+    char_dev = RED_CHAR_DEVICE(dev);
+    red_char_device_stop(char_dev);
+    red_char_device_reset(char_dev);
+    red_char_device_reset_dev_instance(char_dev, NULL);
 
     sif = spice_char_device_get_interface(reds->vdagent);
     if (sif->state) {
-- 
git-series 0.9.1
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]