On Fri, 18 Jul 2014, Amit Virdi wrote: > On 7/17/2014 8:25 PM, Alan Stern wrote: > > I can't say this is actually wrong, but have you ever encountered a > > situation where this would be needed? How often does anyone need to do > > a multi-packet transfer over an interrupt endpoint? > > Honestly, I haven't found any such real device yet. I did this change > while I was going through the code when adding support for interrupt > transfers in gadget zero. I'm a no expert, but the spec says it should > be supported so this code should be added. I just remembered, the HID spec requires that all reports (except the longest) end with a short packet. And since output reports are allowed to be sent over an Interrupt-OUT endpoint, we have to accept the URB_ZERO_PACKET flag for interrupt URBs. > However, I messed up a little in this patch. It should have been > --- > case USB_ENDPOINT_XFER_ISOC: > allowed |= URB_ISO_ASAP; > break; > + case USB_ENDPOINT_XFER_INT: > + if (is_out) > + allowed |= URB_ZERO_PACKET; > + else > + allowed |= URB_SHORT_NOT_OK; > + break; > } > allowed &= urb->transfer_flags; > > --- > Otherwise, it sets zero packet flag for control out transfers too. > > I'll send a V2 with this change if you agree to setting of the zero > packet flag for interrupt transfers. How about this change instead? URB_FREE_BUFFER); switch (xfertype) { case USB_ENDPOINT_XFER_BULK: + case USB_ENDPOINT_XFER_INT: if (is_out) allowed |= URB_ZERO_PACKET; /* FALLTHROUGH */ Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html