提交 b8fef795 编写于 作者: H Huang Rui 提交者: Greg Kroah-Hartman

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: NHuang Rui <ray.huang@amd.com>
Acked-by: NAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 82f92672
...@@ -628,6 +628,35 @@ static int is_good_ext(struct usbtest_dev *tdev, u8 *buf) ...@@ -628,6 +628,35 @@ static int is_good_ext(struct usbtest_dev *tdev, u8 *buf)
return 1; 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 /* sanity test for standard requests working with usb_control_mesg() and some
* of the utility functions which use it. * of the utility functions which use it.
* *
...@@ -773,6 +802,14 @@ static int ch9_postconfig(struct usbtest_dev *dev) ...@@ -773,6 +802,14 @@ static int ch9_postconfig(struct usbtest_dev *dev)
return -EDOM; return -EDOM;
} }
break; 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: default:
break; break;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册