usb-bus: introduce a wrapper function to check speed

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>
This commit is contained in:
Gonglei 2014-09-19 15:25:20 +08:00 committed by Gerd Hoffmann
parent bd2ba2752d
commit 594a53607e
2 changed files with 14 additions and 1 deletions

View 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);

View 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)
{