diff options
author | Hans de Goede <hdegoede@redhat.com> | 2012-08-28 09:43:18 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2012-08-29 10:51:26 +0200 |
commit | e5b5df4e37ae7285f58d4879524d6fe240fbacf3 (patch) | |
tree | 2da582a80b3f4c342df05bd7f38aade22d738d32 | |
parent | d12852b812323e58abb4a3d5d67bd9e3d3577454 (diff) |
usb-core: Add a usb_ep_find_packet_by_id() helper function
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r-- | hw/usb.h | 2 | ||||
-rw-r--r-- | hw/usb/core.c | 14 |
2 files changed, 16 insertions, 0 deletions
@@ -377,6 +377,8 @@ void usb_ep_set_max_packet_size(USBDevice *dev, int pid, int ep, uint16_t raw); int usb_ep_get_max_packet_size(USBDevice *dev, int pid, int ep); void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled); +USBPacket *usb_ep_find_packet_by_id(USBDevice *dev, int pid, int ep, + uint64_t id); void usb_attach(USBPort *port); void usb_detach(USBPort *port); diff --git a/hw/usb/core.c b/hw/usb/core.c index 2da38e7fd..981ee9aff 100644 --- a/hw/usb/core.c +++ b/hw/usb/core.c @@ -724,3 +724,17 @@ void usb_ep_set_pipeline(USBDevice *dev, int pid, int ep, bool enabled) struct USBEndpoint *uep = usb_ep_get(dev, pid, ep); uep->pipeline = enabled; } + +USBPacket *usb_ep_find_packet_by_id(USBDevice *dev, int pid, int ep, + uint64_t id) +{ + struct USBEndpoint *uep = usb_ep_get(dev, pid, ep); + USBPacket *p; + + while ((p = QTAILQ_FIRST(&uep->queue)) != NULL) { + if (p->id == id) + return p; + } + + return NULL; +} |