fa00e1e
From fa85d662b57f3e8ed692e35f3699e1e82c8043e7 Mon Sep 17 00:00:00 2001
c8dfc65
From: Hans de Goede <hdegoede@redhat.com>
c8dfc65
Date: Fri, 31 Aug 2012 13:41:38 +0200
5544c1b
Subject: [PATCH] usb-redir: Convert to new libusbredirparser 0.5 API
c8dfc65
c8dfc65
This gives us support for 64 bit ids which is needed for using XHCI with
c8dfc65
the new hcd generated ids.
c8dfc65
c8dfc65
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
c8dfc65
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
c8dfc65
---
c8dfc65
 configure         |  2 +-
c8dfc65
 hw/usb/redirect.c | 62 +++++++++++++++++++++++++++----------------------------
c8dfc65
 2 files changed, 32 insertions(+), 32 deletions(-)
c8dfc65
c8dfc65
diff --git a/configure b/configure
f375e62
index 5eb4369..d43d61a 100755
c8dfc65
--- a/configure
c8dfc65
+++ b/configure
f375e62
@@ -2757,7 +2757,7 @@ fi
c8dfc65
 
c8dfc65
 # check for usbredirparser for usb network redirection support
c8dfc65
 if test "$usb_redir" != "no" ; then
c8dfc65
-    if $pkg_config --atleast-version=0.3.4 libusbredirparser >/dev/null 2>&1 ; then
c8dfc65
+    if $pkg_config --atleast-version=0.5 libusbredirparser >/dev/null 2>&1 ; then
c8dfc65
         usb_redir="yes"
c8dfc65
         usb_redir_cflags=$($pkg_config --cflags libusbredirparser 2>/dev/null)
c8dfc65
         usb_redir_libs=$($pkg_config --libs libusbredirparser 2>/dev/null)
c8dfc65
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
5544c1b
index b7c7f1e..321f5be 100644
c8dfc65
--- a/hw/usb/redirect.c
c8dfc65
+++ b/hw/usb/redirect.c
c8dfc65
@@ -107,27 +107,27 @@ static void usbredir_interface_info(void *priv,
c8dfc65
     struct usb_redir_interface_info_header *interface_info);
c8dfc65
 static void usbredir_ep_info(void *priv,
c8dfc65
     struct usb_redir_ep_info_header *ep_info);
c8dfc65
-static void usbredir_configuration_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_configuration_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_configuration_status_header *configuration_status);
c8dfc65
-static void usbredir_alt_setting_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_alt_setting_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_alt_setting_status_header *alt_setting_status);
c8dfc65
-static void usbredir_iso_stream_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_iso_stream_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_iso_stream_status_header *iso_stream_status);
c8dfc65
-static void usbredir_interrupt_receiving_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_interrupt_receiving_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_interrupt_receiving_status_header
c8dfc65
     *interrupt_receiving_status);
c8dfc65
-static void usbredir_bulk_streams_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_bulk_streams_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_bulk_streams_status_header *bulk_streams_status);
c8dfc65
-static void usbredir_control_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_control_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_control_packet_header *control_packet,
c8dfc65
     uint8_t *data, int data_len);
c8dfc65
-static void usbredir_bulk_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_bulk_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_bulk_packet_header *bulk_packet,
c8dfc65
     uint8_t *data, int data_len);
c8dfc65
-static void usbredir_iso_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_iso_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_iso_packet_header *iso_packet,
c8dfc65
     uint8_t *data, int data_len);
c8dfc65
-static void usbredir_interrupt_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_interrupt_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_interrupt_packet_header *interrupt_header,
c8dfc65
     uint8_t *data, int data_len);
c8dfc65
 
5544c1b
@@ -814,6 +814,7 @@ static void usbredir_chardev_open(USBRedirDevice *dev)
c8dfc65
 
c8dfc65
     usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version);
c8dfc65
     usbredirparser_caps_set_cap(caps, usb_redir_cap_filter);
c8dfc65
+    usbredirparser_caps_set_cap(caps, usb_redir_cap_64bits_ids);
5544c1b
     usbredirparser_init(dev->parser, VERSION, caps, USB_REDIR_CAPS_SIZE, 0);
c8dfc65
     usbredirparser_do_write(dev->parser);
c8dfc65
 }
5544c1b
@@ -1204,15 +1205,15 @@ static void usbredir_ep_info(void *priv,
c8dfc65
     }
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_configuration_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_configuration_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_configuration_status_header *config_status)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     USBPacket *p;
c8dfc65
     int len = 0;
c8dfc65
 
c8dfc65
-    DPRINTF("set config status %d config %d id %u\n", config_status->status,
c8dfc65
-            config_status->configuration, id);
c8dfc65
+    DPRINTF("set config status %d config %d id %"PRIu64"\n",
c8dfc65
+            config_status->status, config_status->configuration, id);
c8dfc65
 
c8dfc65
     p = usbredir_find_packet_by_id(dev, 0, id);
c8dfc65
     if (p) {
5544c1b
@@ -1225,16 +1226,15 @@ static void usbredir_configuration_status(void *priv, uint32_t id,
c8dfc65
     }
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_alt_setting_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_alt_setting_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_alt_setting_status_header *alt_setting_status)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     USBPacket *p;
c8dfc65
     int len = 0;
c8dfc65
 
c8dfc65
-    DPRINTF("alt status %d intf %d alt %d id: %u\n",
c8dfc65
-            alt_setting_status->status,
c8dfc65
-            alt_setting_status->interface,
c8dfc65
+    DPRINTF("alt status %d intf %d alt %d id: %"PRIu64"\n",
c8dfc65
+            alt_setting_status->status, alt_setting_status->interface,
c8dfc65
             alt_setting_status->alt, id);
c8dfc65
 
c8dfc65
     p = usbredir_find_packet_by_id(dev, 0, id);
5544c1b
@@ -1249,13 +1249,13 @@ static void usbredir_alt_setting_status(void *priv, uint32_t id,
c8dfc65
     }
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_iso_stream_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_iso_stream_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_iso_stream_status_header *iso_stream_status)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     uint8_t ep = iso_stream_status->endpoint;
c8dfc65
 
c8dfc65
-    DPRINTF("iso status %d ep %02X id %u\n", iso_stream_status->status,
c8dfc65
+    DPRINTF("iso status %d ep %02X id %"PRIu64"\n", iso_stream_status->status,
c8dfc65
             ep, id);
c8dfc65
 
c8dfc65
     if (!dev->dev.attached || !dev->endpoint[EP2I(ep)].iso_started) {
5544c1b
@@ -1269,14 +1269,14 @@ static void usbredir_iso_stream_status(void *priv, uint32_t id,
c8dfc65
     }
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_interrupt_receiving_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_interrupt_receiving_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_interrupt_receiving_status_header
c8dfc65
     *interrupt_receiving_status)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     uint8_t ep = interrupt_receiving_status->endpoint;
c8dfc65
 
c8dfc65
-    DPRINTF("interrupt recv status %d ep %02X id %u\n",
c8dfc65
+    DPRINTF("interrupt recv status %d ep %02X id %"PRIu64"\n",
c8dfc65
             interrupt_receiving_status->status, ep, id);
c8dfc65
 
c8dfc65
     if (!dev->dev.attached || !dev->endpoint[EP2I(ep)].interrupt_started) {
5544c1b
@@ -1291,12 +1291,12 @@ static void usbredir_interrupt_receiving_status(void *priv, uint32_t id,
c8dfc65
     }
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_bulk_streams_status(void *priv, uint32_t id,
c8dfc65
+static void usbredir_bulk_streams_status(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_bulk_streams_status_header *bulk_streams_status)
c8dfc65
 {
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_control_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_control_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_control_packet_header *control_packet,
c8dfc65
     uint8_t *data, int data_len)
c8dfc65
 {
5544c1b
@@ -1304,7 +1304,7 @@ static void usbredir_control_packet(void *priv, uint32_t id,
c8dfc65
     USBPacket *p;
c8dfc65
     int len = control_packet->length;
c8dfc65
 
c8dfc65
-    DPRINTF("ctrl-in status %d len %d id %u\n", control_packet->status,
c8dfc65
+    DPRINTF("ctrl-in status %d len %d id %"PRIu64"\n", control_packet->status,
c8dfc65
             len, id);
c8dfc65
 
c8dfc65
     p = usbredir_find_packet_by_id(dev, 0, id);
5544c1b
@@ -1326,7 +1326,7 @@ static void usbredir_control_packet(void *priv, uint32_t id,
c8dfc65
     free(data);
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_bulk_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_bulk_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_bulk_packet_header *bulk_packet,
c8dfc65
     uint8_t *data, int data_len)
c8dfc65
 {
5544c1b
@@ -1335,8 +1335,8 @@ static void usbredir_bulk_packet(void *priv, uint32_t id,
c8dfc65
     int len = bulk_packet->length;
c8dfc65
     USBPacket *p;
c8dfc65
 
c8dfc65
-    DPRINTF("bulk-in status %d ep %02X len %d id %u\n", bulk_packet->status,
c8dfc65
-            ep, len, id);
c8dfc65
+    DPRINTF("bulk-in status %d ep %02X len %d id %"PRIu64"\n",
c8dfc65
+            bulk_packet->status, ep, len, id);
c8dfc65
 
c8dfc65
     p = usbredir_find_packet_by_id(dev, ep, id);
c8dfc65
     if (p) {
5544c1b
@@ -1357,15 +1357,15 @@ static void usbredir_bulk_packet(void *priv, uint32_t id,
c8dfc65
     free(data);
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_iso_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_iso_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_iso_packet_header *iso_packet,
c8dfc65
     uint8_t *data, int data_len)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     uint8_t ep = iso_packet->endpoint;
c8dfc65
 
c8dfc65
-    DPRINTF2("iso-in status %d ep %02X len %d id %u\n", iso_packet->status, ep,
c8dfc65
-             data_len, id);
c8dfc65
+    DPRINTF2("iso-in status %d ep %02X len %d id %"PRIu64"\n",
c8dfc65
+             iso_packet->status, ep, data_len, id);
c8dfc65
 
c8dfc65
     if (dev->endpoint[EP2I(ep)].type != USB_ENDPOINT_XFER_ISOC) {
c8dfc65
         ERROR("received iso packet for non iso endpoint %02X\n", ep);
5544c1b
@@ -1383,14 +1383,14 @@ static void usbredir_iso_packet(void *priv, uint32_t id,
c8dfc65
     bufp_alloc(dev, data, data_len, iso_packet->status, ep);
c8dfc65
 }
c8dfc65
 
c8dfc65
-static void usbredir_interrupt_packet(void *priv, uint32_t id,
c8dfc65
+static void usbredir_interrupt_packet(void *priv, uint64_t id,
c8dfc65
     struct usb_redir_interrupt_packet_header *interrupt_packet,
c8dfc65
     uint8_t *data, int data_len)
c8dfc65
 {
c8dfc65
     USBRedirDevice *dev = priv;
c8dfc65
     uint8_t ep = interrupt_packet->endpoint;
c8dfc65
 
c8dfc65
-    DPRINTF("interrupt-in status %d ep %02X len %d id %u\n",
c8dfc65
+    DPRINTF("interrupt-in status %d ep %02X len %d id %"PRIu64"\n",
c8dfc65
             interrupt_packet->status, ep, data_len, id);
c8dfc65
 
c8dfc65
     if (dev->endpoint[EP2I(ep)].type != USB_ENDPOINT_XFER_INT) {