Re: [PATCH] usbfs: Increase arbitrary limit for USB 3 isopkt length

From: Federico Manzan
Date: Fri May 24 2013 - 11:35:33 EST


On 05/24/2013 03:51 PM, Alan Stern wrote:
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index caefc80..7ac137e 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -1287,9 +1287,11 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
goto error;
}
for (totlen = u = 0; u< uurb->number_of_packets; u++) {
- /* arbitrary limit,
- * sufficient for USB 2.0 high-bandwidth iso */
- if (isopkt[u].length> 8192) {
+ /* arbitrary limit need for USB 3.0
+ * bMaxBurst (0~15 allowed, 1~16 packets)
+ * bmAttributes (bit 1:0, mult 0~2, 1~3 packets)
+ * sizemax: 1024 * 16 * 3 = 49152*/
+ if (isopkt[u].length> 65536) {
ret = -EINVAL;
goto error;
}
A couple of suggestions for improvements:

First, new or updated multi-line comments should follow the accepted
formatting standard:

/*
* Start comment here...
* and end here.
*/
ok, I change the comment in the suggested way
Second, it's confusing for the comment to mention that the limit is
49152 and the code to set the limit to 65536. They should agree on a
single value (probably 49152).

In the USB 2 isochronous the limit is 1024 byte x 3 pkts = 3072, but in the code is write 8192. I don't understand why, for the memory page size? for have a tolerant limits? for rounding to a nice number?
So I wrote a limit some more big and round, but I agree with you the best way is write the correct limit, so I modify in this way, soon.

Federico Manzan

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/