qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hans de Goede <hdegoede@redhat.com>
Subject: [Qemu-devel] [PATCH 02/14] usb-linux: Get speed from sysfs rather then from the connectinfo ioctl
Date: Tue, 31 May 2011 11:35:18 +0200	[thread overview]
Message-ID: <1306834530-12763-3-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1306834530-12763-1-git-send-email-hdegoede@redhat.com>

The connectinfo ioctl only differentiates between lo speed devices, and
all other speeds, where as we would like to know the real speed. The real
speed is available in sysfs so use that when available.
---
 usb-linux.c |   37 +++++++++++++++++++++----------------
 1 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/usb-linux.c b/usb-linux.c
index ea3ab5f..db28762 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -1053,10 +1053,9 @@ static int usb_linux_update_endp_table(USBHostDevice *s)
 }
 
 static int usb_host_open(USBHostDevice *dev, int bus_num,
-                         int addr, char *port, const char *prod_name)
+                        int addr, char *port, const char *prod_name, int speed)
 {
     int fd = -1, ret;
-    struct usbdevfs_connectinfo ci;
     char buf[1024];
 
     if (dev->fd != -1) {
@@ -1111,24 +1110,29 @@ static int usb_host_open(USBHostDevice *dev, int bus_num,
         goto fail;
     }
 
-    ret = ioctl(fd, USBDEVFS_CONNECTINFO, &ci);
-    if (ret < 0) {
-        perror("usb_host_device_open: USBDEVFS_CONNECTINFO");
-        goto fail;
-    }
-
-    printf("husb: grabbed usb device %d.%d\n", bus_num, addr);
-
     ret = usb_linux_update_endp_table(dev);
     if (ret) {
         goto fail;
     }
 
-    if (ci.slow) {
-        dev->dev.speed = USB_SPEED_LOW;
-    } else {
-        dev->dev.speed = USB_SPEED_HIGH;
+    if (speed == -1) {
+        struct usbdevfs_connectinfo ci;
+
+        ret = ioctl(fd, USBDEVFS_CONNECTINFO, &ci);
+        if (ret < 0) {
+            perror("usb_host_device_open: USBDEVFS_CONNECTINFO");
+            goto fail;
+        }
+
+        if (ci.slow) {
+            speed = USB_SPEED_LOW;
+        } else {
+            speed = USB_SPEED_HIGH;
+        }
     }
+    dev->dev.speed = speed;
+
+    printf("husb: grabbed usb device %d.%d\n", bus_num, addr);
 
     if (!prod_name || prod_name[0] == '\0') {
         snprintf(dev->dev.product_desc, sizeof(dev->dev.product_desc),
@@ -1342,7 +1346,8 @@ static int usb_host_scan_dev(void *opaque, USBScanFunc *func)
     }
 
     device_count = 0;
-    bus_num = addr = speed = class_id = product_id = vendor_id = 0;
+    bus_num = addr = class_id = product_id = vendor_id = 0;
+    speed = -1; /* Can't get the speed from /[proc|dev]/bus/usb/devices */
     for(;;) {
         if (fgets(line, sizeof(line), f) == NULL) {
             break;
@@ -1652,7 +1657,7 @@ static int usb_host_auto_scan(void *opaque, int bus_num, int addr, char *port,
         }
         DPRINTF("husb: auto open: bus_num %d addr %d\n", bus_num, addr);
 
-        usb_host_open(s, bus_num, addr, port, product_name);
+        usb_host_open(s, bus_num, addr, port, product_name, speed);
     }
 
     return 0;
-- 
1.7.5.1

  parent reply	other threads:[~2011-05-31  9:35 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-31  9:35 [Qemu-devel] [PATCH 00/14] usb: various usb fixes Hans de Goede
2011-05-31  9:35 ` [Qemu-devel] [PATCH 01/14] usb-linux: Set usb_auto_timer to NULL after deleting it Hans de Goede
2011-06-01 10:48   ` Gerd Hoffmann
2011-06-01 14:24     ` Hans de Goede
2011-05-31  9:35 ` Hans de Goede [this message]
2011-06-01 11:25   ` [Qemu-devel] [PATCH 02/14] usb-linux: Get speed from sysfs rather then from the connectinfo ioctl Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 03/14] usb-linux: Teach about super speed Hans de Goede
2011-06-01 11:28   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 04/14] usb-linux: Don't do perror when errno is not set Hans de Goede
2011-06-01 11:29   ` Gerd Hoffmann
2011-06-01 11:43   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 05/14] usb-linux: Don't call usb_host_close when usb_host_open fails Hans de Goede
2011-06-01 12:22   ` Gerd Hoffmann
2011-06-01 14:33     ` Hans de Goede
2011-05-31  9:35 ` [Qemu-devel] [PATCH 06/14] usb-linux: Ensure devep != 0 Hans de Goede
2011-06-01 12:24   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 07/14] usb-linux: If opening a device fails remove it from our filter list Hans de Goede
2011-06-01 12:32   ` Gerd Hoffmann
2011-06-01 14:37     ` Hans de Goede
2011-06-06 10:24       ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 08/14] usb-linux: Don't try to open the same device twice Hans de Goede
2011-06-01 12:35   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 09/14] usb-linux: Don't declare a usbdevice_name Hans de Goede
2011-06-01 12:44   ` Gerd Hoffmann
2011-06-01 14:38     ` Hans de Goede
2011-05-31  9:35 ` [Qemu-devel] [PATCH 10/14] usb-linux: Enlarge buffer for descriptors to 8192 bytes Hans de Goede
2011-06-01 12:44   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 11/14] usb-bus: Add knowledge of USB_SPEED_SUPER to usb_speed helper Hans de Goede
2011-06-01 12:47   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 12/14] usb-bus: Don't allow attaching a device to a bus with no free ports Hans de Goede
2011-05-31  9:35 ` [Qemu-devel] [PATCH 13/14] usb-bus: Don't detach non attached devices on device exit Hans de Goede
2011-06-01 12:51   ` Gerd Hoffmann
2011-05-31  9:35 ` [Qemu-devel] [PATCH 14/14] usb: Proper error propagation for usb_device_attach errors Hans de Goede
2011-05-31  9:42   ` Michael Tokarev
2011-05-31  9:51     ` Hans de Goede
2011-05-31  9:56       ` Kevin Wolf
2011-05-31 10:05         ` Hans de Goede
2011-05-31 10:12           ` Kevin Wolf
2011-05-31 10:13             ` Hans de Goede
2011-06-01 12:50               ` Gerd Hoffmann
2011-06-01 14:42                 ` Hans de Goede
2011-06-06 10:27                   ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1306834530-12763-3-git-send-email-hdegoede@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).