fhci-hub: no need to overwrite byte 3 of the Hub Descriptor
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Sun, 11 Jan 2015 22:47:49 +0000 (01:47 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 25 Jan 2015 12:48:28 +0000 (20:48 +0800)
The code handling Get Hub Descriptor request copies data from root_hub_des[],
then overwrites byte 3 with real 'wHubCharacteristics' value. There's no need
to overwrite, we can substitute the real value right into root_hub_des[3].

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/fhci-hub.c

index 6af2512..4d061a2 100644 (file)
@@ -32,8 +32,8 @@ static u8 root_hub_des[] = {
        0x09, /* blength */
        0x29, /* bDescriptorType;hub-descriptor */
        0x01, /* bNbrPorts */
-       0x00, /* wHubCharacteristics */
-       0x00,
+       0x11, /* wHubCharacteristics */
+       0x00, /* per-port power, no overcurrent */
        0x01, /* bPwrOn2pwrGood;2ms */
        0x00, /* bHubContrCurrent;0mA */
        0x00, /* DeviceRemoveable */
@@ -272,7 +272,6 @@ int fhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
                break;
        case GetHubDescriptor:
                memcpy(buf, root_hub_des, sizeof(root_hub_des));
-               buf[3] = 0x11; /* per-port power, no ovrcrnt */
                len = (buf[0] < wLength) ? buf[0] : wLength;
                break;
        case GetHubStatus: