On 7 July 2016 at 20:51, Michal Nazarewicz <mina86@xxxxxxxxxx> wrote: > On Thu, Jul 07 2016, Baolin Wang wrote: >> Some gadget device (such as dwc3 gadget) requires quirk_ep_out_aligned_size >> attribute, which means it need to align the request buffer's size to an ep's >> maxpacketsize. >> >> Thus we add usb_ep_align_maybe() function to check if it is need to align >> the request buffer's size to an ep's maxpacketsize. >> >> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx> > > Acked-by: Michal Nazarewicz <mina86@xxxxxxxxxx> > >> --- >> drivers/usb/gadget/function/f_midi.c | 18 +++++++++++------- >> 1 file changed, 11 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c >> index 58fc199..2e3f11e 100644 >> --- a/drivers/usb/gadget/function/f_midi.c >> +++ b/drivers/usb/gadget/function/f_midi.c >> @@ -328,7 +328,7 @@ static int f_midi_start_ep(struct f_midi *midi, >> static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) >> { >> struct f_midi *midi = func_to_midi(f); >> - unsigned i; >> + unsigned i, length; >> int err; >> >> /* we only set alt for MIDIStreaming interface */ >> @@ -345,9 +345,11 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) >> >> /* pre-allocate write usb requests to use on f_midi_transmit. */ >> while (kfifo_avail(&midi->in_req_fifo)) { >> - struct usb_request *req = >> - midi_alloc_ep_req(midi->in_ep, midi->buflen); >> + struct usb_request *req; >> >> + length = usb_ep_align_maybe(midi->gadget, midi->in_ep, >> + midi->buflen); >> + req = midi_alloc_ep_req(midi->in_ep, length); >> if (req == NULL) >> return -ENOMEM; >> >> @@ -359,10 +361,12 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) >> >> /* allocate a bunch of read buffers and queue them all at once. */ >> for (i = 0; i < midi->qlen && err == 0; i++) { >> - struct usb_request *req = >> - midi_alloc_ep_req(midi->out_ep, >> - max_t(unsigned, midi->buflen, >> - bulk_out_desc.wMaxPacketSize)); >> + struct usb_request *req; >> + >> + length = usb_ep_align_maybe(midi->gadget, midi->out_ep, >> + midi->buflen); >> + req = midi_alloc_ep_req(midi->out_ep, >> + max_t(unsigned, length, bulk_out_desc.wMaxPacketSize)); > > Perhaps: > > + length = midi->buflen < bulk_out_desc.wMaxPacketSize > + ? bulk_out_desc.wMaxPacketSize > + : usb_ep_align_maybe(midi->gadget, midi->out_ep, > + midi->buflen); > + req = midi_alloc_ep_req(midi->out_ep, length); > > I find it somewhat cleaner. Up to you. But if the gadget does not requires 'quirk_ep_out_aligned_size', then we also can keep midi->buflen length although midi->buflen < bulk_out_desc.wMaxPacketSize, right? Thanks for your comment. > >> if (req == NULL) >> return -ENOMEM; >> > > -- > Best regards > ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ > «If at first you don’t succeed, give up skydiving» -- Baolin.wang Best Regards -- 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