From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932557AbcGHNFY (ORCPT ); Fri, 8 Jul 2016 09:05:24 -0400 Received: from mail-wm0-f44.google.com ([74.125.82.44]:37383 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932451AbcGHNFK convert rfc822-to-8bit (ORCPT ); Fri, 8 Jul 2016 09:05:10 -0400 From: Michal Nazarewicz To: Baolin Wang Cc: Felipe Balbi , Greg KH , eu@felipetonello.com, dan.carpenter@oracle.com, USB , LKML , Mark Brown Subject: Re: [PATCH] usb: gadget: f_midi: Add checking if it need align buffer's size to an ep's maxpacketsize In-Reply-To: Organization: http://mina86.com/ References: <8ff4f814afc70cf9c00cc6718d7ae93fae94884a.1467881565.git.baolin.wang@linaro.org> User-Agent: Notmuch/0.19+53~g2e63a09 (http://notmuchmail.org) Emacs/25.1.50.1 (x86_64-unknown-linux-gnu) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEWbfGlUPDDHgE57V0jUupKjgIObY0PLrom9mH4dFRK4gmjPs41MxjOgAAACP0lEQVQ4T23Sv2vbQBQHcBk1xE6WyALX107VUEgmn6+ouUwpEQQ6uRjttkWP4CkBg2M0BQLBdPFZYPsyFYo7qEtKDQ7on+t7+nF2Ux8ahD587717OmNYrOvycHsZ+o2r051wHTHysAvGb8ygvgu4QWT0sCmkgZCIEnlV2X8BtyraazFGDuxhmKSQJMlwHQ7v5MHSNxmz78rfElwAa3ieVD9e+hBhjaPDDG6NgFo2f4wBMNIo5YmRtF0RyDgFjJjlMIWbnuM4x9MMfABGTlN4qgIQB4A1DEyA1BHWtfeWNUMwiVJKoqh97KrkOO+qzgluVYLvFCUKAX73nONeBr7BGMdM6Sg0kuep03VywLaIzRiVr+GAzKlpQIsAFnWAG2e6DT5WmWDiudZMIc6hYrMOmeMQK9WX0B+/RfjzL9DI7Y9/Iayn29Ci0r2i4f9gMimMSZLCDMalgQGU5hnUtqAN0OGvEmO1Wnl0C0wWSCEHnuHBqmygxdxA8oWXwbipoc1EoNR9DqOpBpOJrnr0criQab9ZT4LL+wI+K7GBQH30CrhUruilgP9DRTrhVWZCiAyILP+wiuLeCKGTD6r/nc8LOJcAwR6IBTUs+7CASw3QFZ0MdA2PI3zNziH4ZKVhXCRMBjeZ1DWMekKwDCASwExy+NQ86TaykaDAFHO4aP48y4fIcDM5yOG8GcTLbOyp8A8azjJI93JFd1EA6yN8sSxMQJWoABqniRZVykYgRXErzrdqExAoUrRb0xfRp8p2A/4XmfilTtkDZ4cAAAAASUVORK5CYII= X-Face: -TR8(rDTHy/(xl?SfWd1|3:TTgDIatE^t'vop%*gVg[kn$t{EpK(P"VQ=~T2#ysNmJKN$"yTRLB4YQs$4{[.]Fc1)*O]3+XO^oXM>Q#b^ix,O)Zbn)q[y06$`e3?C)`CwR9y5riE=fv^X@x$y?D:XO6L&x4f-}}I4=VRNwiA^t1-ZrVK^07.Pi/57c_du'& X-PGP: 50751FF4 X-PGP-FP: AC1F 5F5C D418 88F8 CC84 5858 2060 4012 5075 1FF4 X-Hashcash: 1:20:160708:r.baldyga@samsung.com::tV3K5Dk48m28Px9G:00000000000000000000000000000000000000000TYy X-Hashcash: 1:20:160708:eu@felipetonello.com::axv4KX3mGsvgGwkO:000000000000000000000000000000000000000000gQj X-Hashcash: 1:20:160708:linux-kernel@vger.kernel.org::eJgyvG7Sk4LoK3Js:0000000000000000000000000000000002zQy X-Hashcash: 1:20:160708:dan.carpenter@oracle.com::xLg+rLB+XhvRq5pW:00000000000000000000000000000000000001/XM X-Hashcash: 1:20:160708:balbi@kernel.org::1MaQ8HBwwxlo1qyg:04VVS X-Hashcash: 1:20:160708:linux-usb@vger.kernel.org::xzOnslZRghq0ghwI:0000000000000000000000000000000000003Ks1 X-Hashcash: 1:20:160708:baolin.wang@linaro.org::XM+bjIkQdT6x8Gwz:0000000000000000000000000000000000000007HP4 X-Hashcash: 1:20:160708:broonie@kernel.org::wLGG256l4hS+KJdb:00000000000000000000000000000000000000000006XF/ X-Hashcash: 1:20:160708:gregkh@linuxfoundation.org::Z4G/7o8tSyHq15zr:00000000000000000000000000000000000AYYZ Date: Fri, 08 Jul 2016 15:04:55 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 08 2016, Baolin Wang wrote: > On 7 July 2016 at 20:51, Michal Nazarewicz 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 >> >> Acked-by: Michal Nazarewicz >> >>> --- >>> 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. I don’t know. That’s not what the original code was doing. The original code was using: max_t(unsigned, midi->buflen, bulk_out_desc.wMaxPacketSize)); for some reason.> >>> if (req == NULL) >>> return -ENOMEM; >>> >> >> -- >> Best regards >> ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ >> «If at first you don’t succeed, give up skydiving» > > > > -- > Baolin.wang > Best Regards -- Best regards ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ «If at first you don’t succeed, give up skydiving»