Re: [PATCH] usb: dwc2: hcd: fix periodic transfer schedule sequence

From: Doug Anderson
Date: Wed Jan 20 2016 - 19:23:10 EST


John,

On Mon, Nov 16, 2015 at 2:41 PM, Caesar Wang <caesar.upstream@xxxxxxxxx> wrote:
> Hi,
>
> å 2015å11æ16æ 23:25, Yunzhi Li åé:
>>
>> When checking dwc2 host channel interrupts, handle qh in
>> periodic_sched_queued list at first, then we could make sure CSPLIT
>> packets scheduled in the same order as SSPLIT packets.
>>
>> Signed-off-by: Yunzhi Li <lyz@xxxxxxxxxxxxxx>
>
>
> This patch can fix some usb issues on my hand machine.
>
> Says:
> (1) The usb hub can't normal work (KB, mouse ...) when SB headset/Speaker is
> connected to USB2.0 travel HUB.
> (2) The music have the wonder noise when we are use some usb speak.
> ......
>
> So, you can free add my test tag:
>
> Tested-by: Caesar Wang <wxt@xxxxxxxxxxxxxx>
>
>
>> ---
>> drivers/usb/dwc2/hcd_intr.c | 22 ++++++++++++++++++++++
>> 1 file changed, 22 insertions(+)

Just FYI that I'm planning to send up a new version of this patch.
Though we've been carrying it in our Chrome OS tree and it's been
helping, in my reboot tests I did just find a crash right in the code
that this patch is adding. Apparently "qh->channel" is NULL in at
least some case in the loop. This seems like something that could
have happened if dwc2_deactivate_qh() was called and then we got an
interrupt after.

I also realized that it's probably important to get order right even
for non-periodic splits. lyz's patch only handled periodic splits...


-Doug