]> git.proxmox.com Git - mirror_qemu.git/commitdiff
usb-bus: introduce a wrapper function to check speed
authorGonglei <arei.gonglei@huawei.com>
Fri, 19 Sep 2014 07:25:20 +0000 (15:25 +0800)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 23 Sep 2014 10:51:08 +0000 (12:51 +0200)
In this way, we can check speed directly, don't need
call usb_device_attach(), which has other conditions,
such as checking the chardev is open.

Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/bus.c
include/hw/usb.h

index b375293529c1caf0c25570b5b4dc611f23c1f016..da1eba9fbd8d6f2a08ddc0ab46773f3a910ed4cc 100644 (file)
@@ -478,7 +478,7 @@ static void usb_mask_to_str(char *dest, size_t size,
     }
 }
 
-void usb_device_attach(USBDevice *dev, Error **errp)
+void usb_check_attach(USBDevice *dev, Error **errp)
 {
     USBBus *bus = usb_bus_from_device(dev);
     USBPort *port = dev->port;
@@ -499,6 +499,18 @@ void usb_device_attach(USBDevice *dev, Error **errp)
                    bus->qbus.name, port->path, portspeed);
         return;
     }
+}
+
+void usb_device_attach(USBDevice *dev, Error **errp)
+{
+    USBPort *port = dev->port;
+    Error *local_err = NULL;
+
+    usb_check_attach(dev, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
 
     dev->attached++;
     usb_attach(port);
index 8ffbba21741863be248c3048dc68a0da7b3ef349..b20b95912321ac57a51bfb2e872a34db85a269fc 100644 (file)
@@ -553,6 +553,7 @@ void usb_release_port(USBDevice *dev);
 void usb_device_attach(USBDevice *dev, Error **errp);
 int usb_device_detach(USBDevice *dev);
 int usb_device_delete_addr(int busnr, int addr);
+void usb_check_attach(USBDevice *dev, Error **errp);
 
 static inline USBBus *usb_bus_from_device(USBDevice *d)
 {