diff options
author | Paul Zimmerman <Paul.Zimmerman@synopsys.com> | 2012-04-16 17:19:07 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-01 13:38:27 -0400 |
commit | 6a23ccd216b6a8ba2c67a9f9d8969b4431ad2920 (patch) | |
tree | 0358a6569a0f59411494633b160814d4282e7f05 /drivers/usb/misc/usbtest.c | |
parent | 73108aa90cbfc663649885a06fe5c1235307de1c (diff) |
usb: usbtest: two super speed fixes for usbtest
bMaxPacketSize0 field for super speed is a power of 2, not a count.
The size itself is always 512.
Max packet size for a super speed bulk endpoint is 1024, so
allocate the urb size in halt_simple() accordingly.
Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/misc/usbtest.c')
-rw-r--r-- | drivers/usb/misc/usbtest.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index 9dcb68f04f03..055b84adedac 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c | |||
@@ -1028,7 +1028,10 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param) | |||
1028 | case 13: /* short read, resembling case 10 */ | 1028 | case 13: /* short read, resembling case 10 */ |
1029 | req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0); | 1029 | req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0); |
1030 | /* last data packet "should" be DATA1, not DATA0 */ | 1030 | /* last data packet "should" be DATA1, not DATA0 */ |
1031 | len = 1024 - udev->descriptor.bMaxPacketSize0; | 1031 | if (udev->speed == USB_SPEED_SUPER) |
1032 | len = 1024 - 512; | ||
1033 | else | ||
1034 | len = 1024 - udev->descriptor.bMaxPacketSize0; | ||
1032 | expected = -EREMOTEIO; | 1035 | expected = -EREMOTEIO; |
1033 | break; | 1036 | break; |
1034 | case 14: /* short read; try to fill the last packet */ | 1037 | case 14: /* short read; try to fill the last packet */ |
@@ -1387,11 +1390,15 @@ static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) | |||
1387 | 1390 | ||
1388 | static int halt_simple(struct usbtest_dev *dev) | 1391 | static int halt_simple(struct usbtest_dev *dev) |
1389 | { | 1392 | { |
1390 | int ep; | 1393 | int ep; |
1391 | int retval = 0; | 1394 | int retval = 0; |
1392 | struct urb *urb; | 1395 | struct urb *urb; |
1396 | struct usb_device *udev = testdev_to_usbdev(dev); | ||
1393 | 1397 | ||
1394 | urb = simple_alloc_urb(testdev_to_usbdev(dev), 0, 512); | 1398 | if (udev->speed == USB_SPEED_SUPER) |
1399 | urb = simple_alloc_urb(udev, 0, 1024); | ||
1400 | else | ||
1401 | urb = simple_alloc_urb(udev, 0, 512); | ||
1395 | if (urb == NULL) | 1402 | if (urb == NULL) |
1396 | return -ENOMEM; | 1403 | return -ENOMEM; |
1397 | 1404 | ||