Subject: interrupt transfer ignored after BABBLE, STALLED error in host controller
To: None <tech-kern@netbsd.org>
From: None <RakeshJalali@aol.com>
List: tech-kern
Date: 10/27/2002 22:35:42
--part1_1bf.12694947.2aee0a8e_boundary
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
I'd like some help on the following scenario:
A device is continuously sending interrupt transfers to the host.
One of the interrupt transfers has more than 64 bytes of data
(because of a bug in the usb chip on the device). The host
controlleron detecting more than 64 bytes, raises the BABBLE,
STALLED flag and puts the TD(transfer descriptor) to INACTIVE state.
The host does not send an ACK for the transfer. The device
on not getting the ACK retransmits the data, this time with the
correct data size (64 bytes). The host controller sends an ACK for
the retransmitted transfer but does not process it i.e. does not
pass it to the layers above. All the interrupt transfers after
this are processed correctly.
The host is running netbsd 1.5 release code.
Now to my question:
1. Why is the retransmitted packet from the device to the host
ACK'ed but not processed?
2. What happens when a TD is set to INACTIVE state on detection
of BABBLE,STALLED flag?
Any help on this would be greatly appreciated.
Thanks
Rakesh Jalali
--part1_1bf.12694947.2aee0a8e_boundary
Content-Type: text/html; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
<HTML><FONT FACE=arial,helvetica><FONT SIZE=2>I'd like some help on the following scenario:
<BR>
<BR>A device is continuously sending interrupt transfers to the host.
<BR>One of the interrupt transfers has more than 64 bytes of data
<BR>(because of a bug in the usb chip on the device). The host
<BR>controlleron detecting more than 64 bytes, raises the BABBLE,
<BR>STALLED flag and puts the TD(transfer descriptor) to INACTIVE state.
<BR>The host does not send an ACK for the transfer. The device
<BR>on not getting the ACK retransmits the data, this time with the
<BR>correct data size (64 bytes). The host controller sends an ACK for
<BR>the retransmitted transfer but does not process it i.e. does not
<BR>pass it to the layers above. All the interrupt transfers after
<BR>this are processed correctly.
<BR>
<BR>The host is running netbsd 1.5 release code.
<BR>
<BR>Now to my question:
<BR>1. Why is the retransmitted packet from the device to the host
<BR>ACK'ed but not processed?
<BR>
<BR>2. What happens when a TD is set to INACTIVE state on detection
<BR>of BABBLE,STALLED flag?
<BR>
<BR>Any help on this would be greatly appreciated.
<BR>
<BR>Thanks
<BR>
<BR>
<BR>Rakesh Jalali
<BR>
<BR>
<BR></FONT></HTML>
--part1_1bf.12694947.2aee0a8e_boundary--