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