On Mon, Apr 16, 2012 at 02:19:07PM -0700, Paul Zimmerman wrote: > 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@xxxxxxxxxxxx> Greg, this looks fine for me. Should go into v3.5 merge window: Acked-by: Felipe Balbi <balbi@xxxxxx> > --- > 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 959145b..8fe901d 100644 > --- a/drivers/usb/misc/usbtest.c > +++ b/drivers/usb/misc/usbtest.c > @@ -1025,7 +1025,10 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param) > case 13: /* short read, resembling case 10 */ > req.wValue = cpu_to_le16((USB_DT_CONFIG << 8) | 0); > /* last data packet "should" be DATA1, not DATA0 */ > - len = 1024 - udev->descriptor.bMaxPacketSize0; > + if (udev->speed == USB_SPEED_SUPER) > + len = 1024 - 512; > + else > + len = 1024 - udev->descriptor.bMaxPacketSize0; > expected = -EREMOTEIO; > break; > case 14: /* short read; try to fill the last packet */ > @@ -1384,11 +1387,15 @@ static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) > > static int halt_simple(struct usbtest_dev *dev) > { > - int ep; > - int retval = 0; > - struct urb *urb; > + int ep; > + int retval = 0; > + struct urb *urb; > + struct usb_device *udev = testdev_to_usbdev(dev); > > - urb = simple_alloc_urb(testdev_to_usbdev(dev), 0, 512); > + if (udev->speed == USB_SPEED_SUPER) > + urb = simple_alloc_urb(udev, 0, 1024); > + else > + urb = simple_alloc_urb(udev, 0, 512); > if (urb == NULL) > return -ENOMEM; > > -- > 1.7.1 > -- balbi
Attachment:
signature.asc
Description: Digital signature