usb: usbtest: support superspeed device capbility descriptor test
In Test 9 of usbtest module, it is used for performing chapter 9 tests N times. SuperSpeed USB Device Capability descriptor is one of the generic device-level capbility descriptors which added in section 9.6.2.2 of USB 3.0 spec. This patch adds to support getting SuperSpeed USB Device Capability descriptor test scenario for USB 3.0. Signed-off-by: Huang Rui <ray.huang@amd.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
82f92672ac
commit
b8fef79518
|
@ -628,6 +628,35 @@ static int is_good_ext(struct usbtest_dev *tdev, u8 *buf)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int is_good_ss_cap(struct usbtest_dev *tdev, u8 *buf)
|
||||
{
|
||||
struct usb_ss_cap_descriptor *ss;
|
||||
|
||||
ss = (struct usb_ss_cap_descriptor *) buf;
|
||||
|
||||
if (ss->bLength != USB_DT_USB_SS_CAP_SIZE) {
|
||||
ERROR(tdev, "bogus superspeed device capability descriptor length\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* only bit[1] of bmAttributes is used for LTM and others are
|
||||
* reserved
|
||||
*/
|
||||
if (ss->bmAttributes & ~0x02) { /* reserved == 0 */
|
||||
ERROR(tdev, "reserved bits set in bmAttributes\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* bits[0:3] of wSpeedSupported is used and others are reserved */
|
||||
if (le16_to_cpu(ss->wSpeedSupported) & ~0x0f) { /* reserved == 0 */
|
||||
ERROR(tdev, "reserved bits set in wSpeedSupported\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* sanity test for standard requests working with usb_control_mesg() and some
|
||||
* of the utility functions which use it.
|
||||
*
|
||||
|
@ -773,6 +802,14 @@ static int ch9_postconfig(struct usbtest_dev *dev)
|
|||
return -EDOM;
|
||||
}
|
||||
break;
|
||||
case USB_SS_CAP_TYPE:
|
||||
if (buf + USB_DT_USB_SS_CAP_SIZE >
|
||||
dev->buf + total ||
|
||||
!is_good_ss_cap(dev, buf)) {
|
||||
dev_err(&iface->dev, "bogus superspeed device capability descriptor\n");
|
||||
return -EDOM;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue