diff options
author | Mathias Nyman <[email protected]> | 2016-05-02 11:39:03 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2016-05-03 14:32:07 -0700 |
commit | cdc77c82a8286b1181b81b6e5ef60c8e83ded7bc (patch) | |
tree | c3eafc1c0e03d5154d43925cc279ffb84240e87c | |
parent | 72f595f3b5cef2c36beb1d07409de58d9e503428 (diff) |
usb: misc: usbtest: fix pattern tests for scatterlists.
The current implemenentation restart the sent pattern for each entry in
the sg list. The receiving end expects a continuous pattern, and test
will fail unless scatterilst entries happen to be aligned with the
pattern
Fix this by calculating the pattern byte based on total sent size
instead of just the current sg entry.
Signed-off-by: Mathias Nyman <[email protected]>
Fixes: 8b5249019352 ("[PATCH] USB: usbtest: scatterlist OUT data pattern testing")
Cc: <[email protected]> # v2.6.18+
Acked-by: Felipe Balbi <[email protected]>
Acked-by: Alan Stern <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r-- | drivers/usb/misc/usbtest.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index de485d8a5beb..6b978f04b8d7 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -532,6 +532,7 @@ static struct scatterlist * alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe) { struct scatterlist *sg; + unsigned int n_size = 0; unsigned i; unsigned size = max; unsigned maxpacket = @@ -564,7 +565,8 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe) break; case 1: for (j = 0; j < size; j++) - *buf++ = (u8) ((j % maxpacket) % 63); + *buf++ = (u8) (((j + n_size) % maxpacket) % 63); + n_size += size; break; } |