Hello David Please recall the issue that i reported wherein the host controller do not PING when it should. The sequence of USB transactions as captured on the wire using the catalyst is reproduced below.
1. 31 bytes OUT (NYET, PING, ACK), 2. 512 bytes OUT (ACK), 3. 13 bytes IN (ACK), 4. repeat 1-3. The issue is that occasinally host controller do not send PING in sequence 1 for about 30 seconds causing reset of the device. Per your advise, i have dumped the qh and qtds. The qh and qtds before the issue triggers are given below. # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (80008c01 data1 nak4) a10f0060 out len=512 02008c80 urb 81473200 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (80008c01 data1 nak4) a10f0060 out len=512 02008c80 urb 81473200 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (80008c01 data1 nak4) a10f0060 out len=512 02008c80 urb 81473200 To me the above log looks ok. /mnt/bin # scsi 30 timer expired I have added the "scsi 30 ..." printk in the scsi driver to know when timeout of scsi 30 seconds timer. The qh and qtd and registers contents after the 30 seconds timeout are given below. /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (801f8c81* data1 nak0) a10f00c0*out len=31 001f8c80 urb 814733e0 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (801f8c81* data1 nak0) a10f00c0*out len=31 001f8c80 urb 814733e0 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (801f8c81* data1 nak0) a10f00c0*out len=31 001f8c80 urb 814733e0 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (801f8c81* data1 nak3) a10f00c0*out len=31 001f8c80 urb 814733e0 /mnt/bin # cat /sys/class/usb_host/usb1/async qh/a10ef100 dev2 hs ep1 42002102 40000000 (801f8c81* data1 nak2) a10f00c0*out len=31 001f8c80 urb 814733e0 The first thing that i notice is that the same qtd persists in the qh for quite some time. The value of token field of qtd is 0x801f8c81 which upon parsing indicates that ping stat bit and active bits of the status fields are 1. In theory, the qtd should be executed by the host controller since the active bit is on and the it should generate ping packet because the ping state bit is 1. But appearently the host controller is not generating the ping packet. is the above the log confirm that this a hardware issue ? Regards Vivek -----Original Message----- From: David Brownell [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 07, 2006 4:03 PM To: Vivek Dharmadhikari Cc: Alan Stern; USB development list Subject: Re: [linux-usb-devel] Usb hangs during small and large file transfer On Wednesday 07 June 2006 3:23 pm, Vivek Dharmadhikari wrote: > > How do i dump, QH and its associated QTDs ? Try dbg_qh() and dbg_qtd() ... see ehci-dbg.c for examples of scanning the qtd list. > >I don't see this happening ... it's not supposed to, and I just looked > >at how the bits affecting PING are managed in the EHCI driver to verify > >that it seems to be coded right. > > Can you elaborate more on the above. I did not understand it. See the EHCI spec and the ehci-q.c file ... the spec will show the bits (search for PING) and the code will show how they're manipulated. _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel