RE: [PATCH v2 1/4] usb: aspeed-vhub: add qualifier descriptor

From: Neal Liu
Date: Wed Dec 01 2021 - 00:43:37 EST


> -----Original Message-----
> From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Sent: Tuesday, November 30, 2021 7:45 PM
> To: Neal Liu <neal_liu@xxxxxxxxxxxxxx>
> Cc: Felipe Balbi <balbi@xxxxxxxxxx>; Joel Stanley <joel@xxxxxxxxx>; Andrew
> Jeffery <andrew@xxxxxxxx>; Cai Huoqing <caihuoqing@xxxxxxxxx>; Tao Ren
> <rentao.bupt@xxxxxxxxx>; Julia Lawall <julia.lawall@xxxxxxxx>; kernel test
> robot <lkp@xxxxxxxxx>; Sasha Levin <sashal@xxxxxxxxxx>;
> linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-aspeed@xxxxxxxxxxxxxxxx; BMC-SW
> <BMC-SW@xxxxxxxxxxxxxx>
> Subject: Re: [PATCH v2 1/4] usb: aspeed-vhub: add qualifier descriptor
>
> On Tue, Nov 30, 2021 at 06:42:53PM +0800, Neal Liu wrote:
> > Support qualifier descriptor to pass USB30CV compliance test.
>
> Please provide more information here in this description. This does not
> explain what is happening here very well.
>
> Also, what is "USB30CV"?
>

USB 3 Command Verifier (USB3CV) is the official tool for USB 3 Hub and Device Framework testing.
The USB3CV tool includes the xHCI Compliance Drivers for use with the USB3CV.

We would like to pass USB3CV - Chapter 9 Test [USB 2 devices] - Device Qualifier Tests.
A high-speed capable device that has different device information for full-speed and high-speed
must have a Device Qualifier Descriptor.
This patch is to support device qualifier, and the host will retrieve it through Get Descriptor request.

> >
> > Signed-off-by: Neal Liu <neal_liu@xxxxxxxxxxxxxx>
> > ---
> > drivers/usb/gadget/udc/aspeed-vhub/hub.c | 24
> > +++++++++++++++++++++++ drivers/usb/gadget/udc/aspeed-vhub/vhub.h |
> > 1 +
> > 2 files changed, 25 insertions(+)
> >
> > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/hub.c
> > b/drivers/usb/gadget/udc/aspeed-vhub/hub.c
> > index b9960fdd8a51..93f27a745760 100644
> > --- a/drivers/usb/gadget/udc/aspeed-vhub/hub.c
> > +++ b/drivers/usb/gadget/udc/aspeed-vhub/hub.c
> > @@ -68,6 +68,18 @@ static const struct usb_device_descriptor
> ast_vhub_dev_desc = {
> > .bNumConfigurations = 1,
> > };
> >
> > +static const struct usb_qualifier_descriptor ast_vhub_qual_desc = {
> > + .bLength = 0xA,
> > + .bDescriptorType = USB_DT_DEVICE_QUALIFIER,
> > + .bcdUSB = cpu_to_le16(0x0200),
> > + .bDeviceClass = USB_CLASS_HUB,
> > + .bDeviceSubClass = 0,
> > + .bDeviceProtocol = 0,
> > + .bMaxPacketSize0 = 64,
> > + .bNumConfigurations = 1,
> > + .bRESERVED = 0,
>
> Fields that are to be set to zero do not need to be set here, the compiler does it
> for you.
>
> thanks,
>
> greg k-h

This is more clear that we specify each member's value.
Thanks

-Neal