Re: device attached to USB 3.0 hub port doesn't respond address device command after resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2012/2/16 Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx>:
> On Thu, Feb 16, 2012 at 09:10:18PM +0800, Elric Fu wrote:
>> I tried 3.3.0-rc3 and the issue occurred too. I modified the patch for merging
>> initialization and reset paths according to what Alan said. It can fix
>> the issue.
>
> Thanks Elric!  Can you elaborate on this patch description a bit, and
> describe the problem, which device it occurred with, and our analysis of
> what we should have done (i.e. set the hub depth after a reset).  Then
> I'll queue the result for stable.
>

Thank you very much! It is the first time I send a patch. So I wanna
ask a noobly
question about the situation. Is you mean that I can use git send-email command
to send the patch to you and linux-usb adhere to Documentation/SubmittingPatches
likes those patches you released now?

Best Regards,
Elric Fu

> Sarah Sharp
>
>> Signed-off-by: Elric Fu <elricfu1@xxxxxxxxx>
>> ---
>>  drivers/usb/core/hub.c |   22 ++++++++++------------
>>  1 files changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
>> index a0613d8..7654ffb 100644
>> --- a/drivers/usb/core/hub.c
>> +++ b/drivers/usb/core/hub.c
>> @@ -709,6 +709,16 @@ static void hub_activate(struct usb_hub *hub,
>> enum hub_activation_type type)
>>        * For any other type of activation, turn it on.
>>        */
>>       if (type != HUB_RESUME) {
>> +                if (hdev->parent && hub_is_superspeed(hdev) &&
>> +                                hdev->state == USB_STATE_CONFIGURED) {
>> +                        ret = usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
>> +                                        HUB_SET_DEPTH, USB_RT_HUB,
>> +                                        hdev->level - 1, 0, NULL, 0,
>> +                                        USB_CTRL_SET_TIMEOUT);
>> +                        if (ret < 0)
>> +                                dev_err(hub->intfdev,
>> +                                        "set hub depth failed\n");
>> +                }
>>
>>               /* Speed up system boot by using a delayed_work for the
>>                * hub's initial power-up delays.  This is pretty awkward
>> @@ -987,18 +997,6 @@ static int hub_configure(struct usb_hub *hub,
>>               goto fail;
>>       }
>>
>> -     if (hub_is_superspeed(hdev) && (hdev->parent != NULL)) {
>> -             ret = usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
>> -                             HUB_SET_DEPTH, USB_RT_HUB,
>> -                             hdev->level - 1, 0, NULL, 0,
>> -                             USB_CTRL_SET_TIMEOUT);
>> -
>> -             if (ret < 0) {
>> -                     message = "can't set hub depth";
>> -                     goto fail;
>> -             }
>> -     }
>> -
>>       /* Request the entire hub descriptor.
>>        * hub->descriptor can handle USB_MAXCHILDREN ports,
>>        * but the hub can/will return fewer bytes here.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux