Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jul 2015 04:11:47 +0200
From:      Hans Petter Selasky <hps@selasky.org>
To:        Svatopluk Kraus <onwahe@gmail.com>
Cc:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   Re: [RPI-B] [HEADS UP] DWC OTG TX path optimisation for 11-current
Message-ID:  <55BAD963.9000808@selasky.org>
In-Reply-To: <CAFHCsPXmm8rhZpiQ4uhPCkwBKC1o5gMLFYHEj9s5e3ObU21BPg@mail.gmail.com>
References:  <55A7D8CE.4020809@selasky.org>	<CAHNYxxMp9jGDbV-5=-cE6daR-O3eN5pdvO1s-=QfX=A9XYqYmA@mail.gmail.com>	<55B23276.8090703@selasky.org>	<CAHNYxxNc9uB62hHEv1PM9PcsGgUs=zsvNgatqLD0p%2BiiDA3Aiw@mail.gmail.com>	<55B73113.2020308@selasky.org>	<CAFHCsPVaPZpqXLS7OApa=Xz5VLnLjVpV5dYV8Pn2uHh1Lcz7Tg@mail.gmail.com>	<55B8AB76.7030603@selasky.org>	<CAFHCsPUMaYEwJsaGUFuw9yZi_5bmraSBsOYpRWvSeuebpXBJUA@mail.gmail.com>	<55B8B297.1010008@selasky.org>	<CAFHCsPVGLs8j6LAV%2Bg4rP_ueTOd8pUOupYFGvmgC3XGcJC720Q@mail.gmail.com>	<20150729154516.GH78154@funkthat.com>	<55B8F5EC.2050908@selasky.org>	<CAFHCsPXmQCKt-5xWa6XwECqFO5oz4mT9m1mPu0dKmmQ%2BG9yUAA@mail.gmail.com>	<55B9F914.7030403@selasky.org>	<CAFHCsPVzFE-a2x2rsZRshGZExwZX9dCz2hXtpb2t5LFKN-14aQ@mail.gmail.com>	<55BA1889.4040509@selasky.org>	<55BA1AC7.4050602@selasky.org> <CAFHCsPXmm8rhZpiQ4uhPCkwBKC1o5gMLFYHEj9s5e3ObU21BPg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 07/30/15 17:22, Svatopluk Kraus wrote:
> Well, I'm trying to join answers for your previous emails in this one.
>
> On Thu, Jul 30, 2015 at 2:38 PM, Hans Petter Selasky <hps@selasky.org> wrote:
>> On 07/30/15 14:28, Hans Petter Selasky wrote:
>>
>> Can you run only "usbdump" while the interface is UP and the errors are printed in the console?
>>
>> We are looking for ERR different from "0".
>
>
> It looks that there is no ERR different from "0" in usbdump at all.
> Again, it looks that the load is generated "internally" and it does
> not depend on explicit usb request directly.
>
>>
>> Does the interface come back when you down/up it?
>
> Yes, it works.
>
>> BTW: All your USB HUBs are self powered?
>
> Yes, my usb hub has external power supply (12V, 4A) and my usb disk is
> connected only.
>
>>
>> Does the device recover if you do:
>>
>> usbconfig -d X.Y reset
>>
>> for the ue0 ?
>
> Yes, it does.
>
>
> Anyhow, I think that I figured out why the system has so slow response
> time when it's triggered. In general, it's not good idea to not limit
> somehow interrupt filter execution time. If something wrong is
> happening, then such filter can halt all system. I can get back fast
> system response time with attached patch. Note that it's only a
> proof-of-concept patch and it does not remove the problem. There is
> still something what generates big load when it's triggered even if
> system is 99% idle after trigger was pulled.
>
> Svata
>

Hi,

Your patch looks OK, though I would really like to know why the repeat 
statement is looping. Does the following patch make any difference for you?

> Index: sys/dev/usb/controller/dwc_otg.c
> ===================================================================
> --- sys/dev/usb/controller/dwc_otg.c	(revision 286002)
> +++ sys/dev/usb/controller/dwc_otg.c	(working copy)
> @@ -579,6 +579,9 @@
>  	sc->sc_irq_mask |= GINTMSK_RXFLVLMSK;
>  	DWC_OTG_WRITE_4(sc, DOTG_GINTMSK, sc->sc_irq_mask);
>
> +	/* clear RX FIFO level interrupt */
> +	DWC_OTG_WRITE_4(sc, DOTG_GINTSTS, GINTMSK_RXFLVL);
> +
>  	/* clear cached status */
>  	sc->sc_last_rx_status = 0;
>  }

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55BAD963.9000808>