diff --git a/hw/usb-audio.c b/hw/usb-audio.c index cd589b718a..a4ea0b0fe2 100644 --- a/hw/usb-audio.c +++ b/hw/usb-audio.c @@ -691,7 +691,6 @@ static void usb_audio_class_init(ObjectClass *klass, void *data) k->product_desc = "QEMU USB Audio Interface"; k->usb_desc = &desc_audio; k->init = usb_audio_initfn; - k->handle_packet = usb_generic_handle_packet; k->handle_reset = usb_audio_handle_reset; k->handle_control = usb_audio_handle_control; k->handle_data = usb_audio_handle_data; diff --git a/hw/usb-bt.c b/hw/usb-bt.c index 90c3b0e0eb..58b247ef41 100644 --- a/hw/usb-bt.c +++ b/hw/usb-bt.c @@ -535,7 +535,6 @@ static void usb_bt_class_initfn(ObjectClass *klass, void *data) uc->init = usb_bt_initfn; uc->product_desc = "QEMU BT dongle"; uc->usb_desc = &desc_bluetooth; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_bt_handle_reset; uc->handle_control = usb_bt_handle_control; uc->handle_data = usb_bt_handle_data; diff --git a/hw/usb-bus.c b/hw/usb-bus.c index 5c05ed5806..e907d0db79 100644 --- a/hw/usb-bus.c +++ b/hw/usb-bus.c @@ -91,15 +91,6 @@ static void usb_device_handle_destroy(USBDevice *dev) } } -int usb_device_handle_packet(USBDevice *dev, USBPacket *p) -{ - USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev); - if (klass->handle_packet) { - return klass->handle_packet(dev, p); - } - return -ENOSYS; -} - void usb_device_cancel_packet(USBDevice *dev, USBPacket *p) { USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev); diff --git a/hw/usb-ccid.c b/hw/usb-ccid.c index 881da3002e..b3bcfeb4ac 100644 --- a/hw/usb-ccid.c +++ b/hw/usb-ccid.c @@ -1320,7 +1320,6 @@ static void ccid_class_initfn(ObjectClass *klass, void *data) uc->init = ccid_initfn; uc->product_desc = "QEMU USB CCID"; uc->usb_desc = &desc_ccid; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = ccid_handle_reset; uc->handle_control = ccid_handle_control; uc->handle_data = ccid_handle_data; diff --git a/hw/usb-hid.c b/hw/usb-hid.c index 3c4e45da70..c6489800fd 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -557,7 +557,6 @@ static void usb_hid_class_initfn(ObjectClass *klass, void *data) { USBDeviceClass *uc = USB_DEVICE_CLASS(klass); - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_hid_handle_reset; uc->handle_control = usb_hid_handle_control; uc->handle_data = usb_hid_handle_data; diff --git a/hw/usb-hub.c b/hw/usb-hub.c index bd7641c4bf..22562565c7 100644 --- a/hw/usb-hub.c +++ b/hw/usb-hub.c @@ -455,44 +455,6 @@ static int usb_hub_handle_data(USBDevice *dev, USBPacket *p) return ret; } -static int usb_hub_broadcast_packet(USBHubState *s, USBPacket *p) -{ - USBHubPort *port; - USBDevice *dev; - int i, ret; - - for(i = 0; i < NUM_PORTS; i++) { - port = &s->ports[i]; - dev = port->port.dev; - if (dev && dev->attached && (port->wPortStatus & PORT_STAT_ENABLE)) { - ret = usb_handle_packet(dev, p); - if (ret != USB_RET_NODEV) { - return ret; - } - } - } - return USB_RET_NODEV; -} - -static int usb_hub_handle_packet(USBDevice *dev, USBPacket *p) -{ - USBHubState *s = (USBHubState *)dev; - -#if defined(DEBUG) && 0 - printf("usb_hub: pid=0x%x\n", pid); -#endif - if (dev->state == USB_STATE_DEFAULT && - dev->addr != 0 && - p->devaddr != dev->addr && - (p->pid == USB_TOKEN_SETUP || - p->pid == USB_TOKEN_OUT || - p->pid == USB_TOKEN_IN)) { - /* broadcast the packet to the devices */ - return usb_hub_broadcast_packet(s, p); - } - return usb_generic_handle_packet(dev, p); -} - static void usb_hub_handle_destroy(USBDevice *dev) { USBHubState *s = (USBHubState *)dev; @@ -562,7 +524,6 @@ static void usb_hub_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "QEMU USB Hub"; uc->usb_desc = &desc_hub; uc->find_device = usb_hub_find_device; - uc->handle_packet = usb_hub_handle_packet; uc->handle_reset = usb_hub_handle_reset; uc->handle_control = usb_hub_handle_control; uc->handle_data = usb_hub_handle_data; diff --git a/hw/usb-msd.c b/hw/usb-msd.c index 6153376f3f..c34cad55fe 100644 --- a/hw/usb-msd.c +++ b/hw/usb-msd.c @@ -651,7 +651,6 @@ static void usb_msd_class_initfn(ObjectClass *klass, void *data) uc->init = usb_msd_initfn; uc->product_desc = "QEMU USB MSD"; uc->usb_desc = &desc; - uc->handle_packet = usb_generic_handle_packet; uc->cancel_packet = usb_msd_cancel_io; uc->handle_attach = usb_desc_attach; uc->handle_reset = usb_msd_handle_reset; diff --git a/hw/usb-net.c b/hw/usb-net.c index e2111413b4..f00e854756 100644 --- a/hw/usb-net.c +++ b/hw/usb-net.c @@ -1398,7 +1398,6 @@ static void usb_net_class_initfn(ObjectClass *klass, void *data) uc->init = usb_net_initfn; uc->product_desc = "QEMU USB Network Interface"; uc->usb_desc = &desc_net; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_net_handle_reset; uc->handle_control = usb_net_handle_control; uc->handle_data = usb_net_handle_data; diff --git a/hw/usb-serial.c b/hw/usb-serial.c index c2cb6d24e8..cf83cf21de 100644 --- a/hw/usb-serial.c +++ b/hw/usb-serial.c @@ -583,7 +583,6 @@ static void usb_serial_class_initfn(ObjectClass *klass, void *data) uc->init = usb_serial_initfn; uc->product_desc = "QEMU USB Serial"; uc->usb_desc = &desc_serial; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_serial_handle_reset; uc->handle_control = usb_serial_handle_control; uc->handle_data = usb_serial_handle_data; @@ -612,7 +611,6 @@ static void usb_braille_class_initfn(ObjectClass *klass, void *data) uc->init = usb_serial_initfn; uc->product_desc = "QEMU USB Braille"; uc->usb_desc = &desc_braille; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_serial_handle_reset; uc->handle_control = usb_serial_handle_control; uc->handle_data = usb_serial_handle_data; diff --git a/hw/usb-wacom.c b/hw/usb-wacom.c index 14de14d5f7..46b8010f63 100644 --- a/hw/usb-wacom.c +++ b/hw/usb-wacom.c @@ -357,7 +357,6 @@ static void usb_wacom_class_init(ObjectClass *klass, void *data) uc->product_desc = "QEMU PenPartner Tablet"; uc->usb_desc = &desc_wacom; uc->init = usb_wacom_initfn; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_wacom_handle_reset; uc->handle_control = usb_wacom_handle_control; uc->handle_data = usb_wacom_handle_data; diff --git a/hw/usb.c b/hw/usb.c index 9976f81bd7..638a339840 100644 --- a/hw/usb.c +++ b/hw/usb.c @@ -227,7 +227,7 @@ static int do_token_out(USBDevice *s, USBPacket *p) * * Returns length of the transaction or one of the USB_RET_XXX codes. */ -int usb_generic_handle_packet(USBDevice *s, USBPacket *p) +static int usb_generic_handle_packet(USBDevice *s, USBPacket *p) { /* Rest of the PIDs must match our address */ if (s->state < USB_STATE_DEFAULT || p->devaddr != s->addr) @@ -318,18 +318,12 @@ int usb_handle_packet(USBDevice *dev, USBPacket *p) if (dev == NULL) { return USB_RET_NODEV; } + assert(dev->addr == p->devaddr); assert(p->owner == NULL); - ret = usb_device_handle_packet(dev, p); + ret = usb_generic_handle_packet(dev, p); if (ret == USB_RET_ASYNC) { - if (p->owner == NULL) { - p->owner = usb_ep_get(dev, p->pid, p->devep); - } else { - /* We'll end up here when usb_handle_packet is called - * recursively due to a hub being in the chain. Nothing - * to do. Leave p->owner pointing to the device, not the - * hub. */; - } + p->owner = usb_ep_get(dev, p->pid, p->devep); } return ret; } @@ -339,7 +333,6 @@ int usb_handle_packet(USBDevice *dev, USBPacket *p) handle_packet. */ void usb_packet_complete(USBDevice *dev, USBPacket *p) { - /* Note: p->owner != dev is possible in case dev is a hub */ assert(p->owner != NULL); p->owner = NULL; dev->port->ops->complete(dev->port, p); diff --git a/hw/usb.h b/hw/usb.h index 1beb4b32a9..294c33d85d 100644 --- a/hw/usb.h +++ b/hw/usb.h @@ -234,15 +234,6 @@ typedef struct USBDeviceClass { */ USBDevice *(*find_device)(USBDevice *dev, uint8_t addr); - /* - * Process USB packet. - * Called by the HC (Host Controller). - * - * Returns length of the transaction - * or one of the USB_RET_XXX codes. - */ - int (*handle_packet)(USBDevice *dev, USBPacket *p); - /* * Called when a packet is canceled. */ @@ -360,7 +351,6 @@ void usb_detach(USBPort *port); void usb_port_reset(USBPort *port); void usb_device_reset(USBDevice *dev); void usb_wakeup(USBDevice *dev); -int usb_generic_handle_packet(USBDevice *s, USBPacket *p); void usb_generic_async_ctrl_complete(USBDevice *s, USBPacket *p); int set_usb_string(uint8_t *buf, const char *str); @@ -456,8 +446,6 @@ extern const VMStateDescription vmstate_usb_device; USBDevice *usb_device_find_device(USBDevice *dev, uint8_t addr); -int usb_device_handle_packet(USBDevice *dev, USBPacket *p); - void usb_device_cancel_packet(USBDevice *dev, USBPacket *p); void usb_device_handle_attach(USBDevice *dev); diff --git a/usb-bsd.c b/usb-bsd.c index fc722b3cfa..ca9a1bdc61 100644 --- a/usb-bsd.c +++ b/usb-bsd.c @@ -403,7 +403,6 @@ static void usb_host_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "USB Host Device"; uc->init = usb_host_initfn; - uc->handle_packet = usb_generic_handle_packet; uc->handle_reset = usb_host_handle_reset; uc->handle_control = usb_host_handle_control; uc->handle_data = usb_host_handle_data; diff --git a/usb-linux.c b/usb-linux.c index e7fc9ecd5c..afb13c4d0f 100644 --- a/usb-linux.c +++ b/usb-linux.c @@ -1419,7 +1419,6 @@ static void usb_host_class_initfn(ObjectClass *klass, void *data) uc->init = usb_host_initfn; uc->product_desc = "USB Host Device"; - uc->handle_packet = usb_generic_handle_packet; uc->cancel_packet = usb_host_async_cancel; uc->handle_data = usb_host_handle_data; uc->handle_control = usb_host_handle_control; diff --git a/usb-redir.c b/usb-redir.c index 0a9295142c..d2769a8431 100644 --- a/usb-redir.c +++ b/usb-redir.c @@ -1424,7 +1424,6 @@ static void usbredir_class_initfn(ObjectClass *klass, void *data) uc->init = usbredir_initfn; uc->product_desc = "USB Redirection Device"; uc->handle_destroy = usbredir_handle_destroy; - uc->handle_packet = usb_generic_handle_packet; uc->cancel_packet = usbredir_cancel_packet; uc->handle_reset = usbredir_handle_reset; uc->handle_data = usbredir_handle_data;