linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize
@ 2016-03-09 19:39 Felipe F. Tonello
  2016-03-09 22:43 ` Steve Calfee
  2016-03-11 23:07 ` Michal Nazarewicz
  0 siblings, 2 replies; 14+ messages in thread
From: Felipe F. Tonello @ 2016-03-09 19:39 UTC (permalink / raw)
  To: linux-usb; +Cc: linux-kernel, Felipe Balbi, Michal Nazarewicz, Robert Baldyga

buflen by default (256) is smaller than wMaxPacketSize (512) in high-speed
devices.

That caused the OUT endpoint to freeze if the host send any data packet of
length greater than 256 bytes.

This is an example dump of what happended on that enpoint:
HOST:   [DATA][Length=260][...]
DEVICE: [NAK]
HOST:   [PING]
DEVICE: [NAK]
HOST:   [PING]
DEVICE: [NAK]
...
HOST:   [PING]
DEVICE: [NAK]

This patch fixes this problem by setting the minimum usb_request's buffer size
for the OUT endpoint as its wMaxPacketSize.

Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
---
 drivers/usb/gadget/function/f_midi.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index 8475e3dc82d4..826ba641f29d 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -366,7 +366,9 @@ 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, midi->buflen);
+			midi_alloc_ep_req(midi->out_ep,
+				max_t(unsigned, midi->buflen,
+					bulk_out_desc.wMaxPacketSize));
 		if (req == NULL)
 			return -ENOMEM;
 
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2016-04-04 11:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-09 19:39 [PATCH] usb: gadget: f_midi: Fixed a bug when buflen was smaller than wMaxPacketSize Felipe F. Tonello
2016-03-09 22:43 ` Steve Calfee
2016-03-10  9:23   ` Felipe Ferreri Tonello
2016-03-11  8:44   ` Clemens Ladisch
2016-03-11 23:07 ` Michal Nazarewicz
2016-03-14 16:00   ` Felipe Ferreri Tonello
2016-03-15  9:48     ` Clemens Ladisch
2016-03-30 10:51   ` Felipe Balbi
2016-03-30 12:33     ` Michal Nazarewicz
2016-04-01  9:25       ` Felipe Ferreri Tonello
2016-04-01 10:22         ` Felipe Balbi
2016-04-01 14:52           ` Felipe Ferreri Tonello
2016-04-04 10:46             ` Felipe Balbi
2016-04-04 11:33               ` Felipe Ferreri Tonello

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).