Patch 7 has changes on how to transmit IN USB requests. It implements a FIFO of pre-allocated usb requests and uses then as needed, instead of allocating then on demand. This is my initial implementation and is open for suggestions and comments. Patches 1-6 is pretty much straight forward. changes in v5: - Use ep->enabled insetad of creating driver specific flag - Save MIDIStreaming interface id in driver data - define free_ep_req as static inline in header changes in v4: - pre-alocation of in requests. - more code clean up - fix memory leak on out requests - configure endpoints only when setting up MIDIStreaming interface Felipe F. Tonello (7): usb: gadget: f_midi: Transmit data only when IN ep is enabled usb: gadget: f_midi: remove duplicated code usb: gadget: define free_ep_req as universal function usb: gadget: f_midi: fix leak on failed to enqueue out requests usb: gadget: gmidi: Cleanup legacy code usb: gadget: f_midi: set altsettings only for MIDIStreaming interface usb: gadget: f_midi: pre-allocate IN requests drivers/usb/gadget/function/f_midi.c | 196 ++++++++++++++++++++--------- drivers/usb/gadget/function/f_sourcesink.c | 6 - drivers/usb/gadget/function/g_zero.h | 1 - drivers/usb/gadget/legacy/gmidi.c | 10 +- drivers/usb/gadget/u_f.c | 1 - drivers/usb/gadget/u_f.h | 10 +- 6 files changed, 145 insertions(+), 79 deletions(-) -- 2.5.0 -- 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