[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch RFC 2/4] usb: add flag to USBPacket to request complete callback after isoc transfer
> > --- a/hw/usb/host-libusb.c > > +++ b/hw/usb/host-libusb.c > > @@ -451,6 +451,7 @@ static void usb_host_req_complete_iso(struct > > libusb_transfer *transfer) > > } > > if (xfer->ring->ep->pid == USB_TOKEN_IN) { > > QTAILQ_INSERT_TAIL(&xfer->ring->copy, xfer, next); > > + usb_wakeup(xfer->ring->ep, 0); > > } else { > > QTAILQ_INSERT_TAIL(&xfer->ring->unused, xfer, next); > > } > > Hmm, I can see the benefit of this call to avoid polling. > > OTOH I don't see how to find the packages already processed via this > mechanism. To help in my case I'd need: > > - the call being made in the else clause Hmm. This is for IN transfers, notifying the host adapter "I have data for you, please hand me one (or more) USBPacket which I can fill". Why do you need it for OUT transfers too? usb-host has copyed and queued up the data already, there is nothing to pass back ... > - some way to have a package reference in the endpoint (assuming > to use the bus .endpoint_wakeup callback which is called by > usb_wakeup(), too). Yes, endpoint callback would be more useful for this. PortOps needs this for remote wakeup implementation. > The problem here is that host-libusb.c would call usb_wakeup() > not for each packet, but for each libusb I/O, which is combining > multiple packets given to usb_handle_packet(). You can call just call usb_handle_packet() multiple times, either calculate how often based on time and bandwidth, or continue calling until you get no more data back. cheers, Gerd _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |