Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Jul 2005 13:01:02 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        Stefan Walter <sw@gegenunendlich.de>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: usb/82660: EHCI: I/O stuck in state 'physrd'/panic
Message-ID:  <200507101301.04434.hselasky@c2i.net>
In-Reply-To: <20050710093359.GA840@kyuzo.dunkelkammer.void>
References:  <20050626091628.775DD3A1D@kyuzo.dunkelkammer.void> <200507092352.33451.hselasky@c2i.net> <20050710093359.GA840@kyuzo.dunkelkammer.void>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 10 July 2005 11:33, Stefan Walter wrote:
> Hans Petter Selasky, 09.07.05, 23:52h CEST:
>
> QTD(0xc2127100) at 0x1aa5b100:
>   next=0x00000001<T> altnext=0x00000001<T>
>   status=0x000d8d80: toggle=0 bytes=0xd ioc=1 c_page=0x0
>     cerr=3 pid=1 stat=80<ACTIVE>
>   buffer[0]=0x1aa5b0d0
>   buffer[1]=0x1aa5b000
>   buffer[2]=0x00000000
>   buffer[3]=0x00000000
>   buffer[4]=0x00000000
> QH(0xc2127200) at 0x1aa5b200:
>   link=0x1f3a8002<QH>
>   endp=0x8200617e
>     addr=0x7e inact=0 endpt=1 eps=2 dtc=1 hrecl=0
>     mpl=0x200 ctl=0 nrl=8
>   endphub=0x40fff000
>     smask=0x00 cmask=0xf0 huba=0x7f port=1 mult=1
>   curqtd=0x1aa5b100<>
> Overlay qTD:
>   next=0x00000001<T> altnext=0x00000001<T>
>   status=0x000d8d80: toggle=0 bytes=0xd ioc=1 c_page=0x0
>     cerr=3 pid=1 stat=80<ACTIVE>
>   buffer[0]=0x1aa5b0d0
>   buffer[1]=0x1aa5b000
>   buffer[2]=0x00000000
>   buffer[3]=0x00000000
>   buffer[4]=0x00000000

Again, I cannot see any errors. The 13 bytes this transfer should transfer are 
the 13 bytes of the CSW. Is it possible that you could connect two USB 2.0 
flash disks to the same USB controller and see if they both hang at the same 
time. That might indicate that there is something wrong with the EHCI driver.


I had another look at /sys/dev/usb/umass.c and wondered why the CSW has the 
same timeout as the data transfer.

Add:
                sc->timeout = 1000;
Before:

                /* Read the Command Status Wrapper via bulk-in endpoint. */
                if (umass_setup_transfer(sc, sc->bulkin_pipe,
                                &sc->csw, UMASS_BBB_CSW_SIZE, 0,
                                next_xfer)) {
                        umass_bbb_reset(sc, STATUS_WIRE_FAILED);
                        return;
                }

This will shorten the time the driver will wait before doing the reset, and 
your device might work better.

Could you have verified the checksum of the files you are reading/writing 
while this error happens, and see that no data is lost?

--HPS






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