On Wed, 19 Jan 2005, Philipp Schmid wrote:
> I have captured a few dumps when this failure is happening. It ~always~
> happens to the same type of transfer:
>
> Enqueue: FA 2 ep2in bulk: len 13 short_ok
> pack_fifo @ c5d6/2e9c fmrem
> CC=f EP=2 DIR=2 CNT=0 LEN=13 MPS=64 TGL=1 ACT=1 FA=2 SPD=0 LST=1 B5=0
> fc00 2840 080d 0002
> unpack_fifo @ c5d7/73 fmrem
> CC=f EP=2 DIR=2 CNT=0 LEN=13 MPS=64 TGL=1 ACT=1 FA=2 SPD=0 LST=1 B5=0
> fc00 2840 080d 0002
Philipp, thank you for the failure logs. Could you please
try whether the patch below cures the problem, if applied to
the latest driver version.
Olav
--- linux-2.6.9-isp/drivers/usb/host/isp116x-hcd.c.or 2005-01-20
14:21:53.000000000 +0200
+++ linux-2.6.9-isp/drivers/usb/host/isp116x-hcd.c 2005-01-20
15:14:38.000000000 +0200
@@ -344,7 +344,7 @@ static void postproc_atl_queue(struct is
cc = PTD_GET_CC(ptd);
spin_lock(&urb->lock);
- short_not_ok = urb->transfer_flags & URB_SHORT_NOT_OK;
+ short_not_ok = 1;
/* Data underrun is special. For allowed underrun
we clear the error and continue as normal. For
@@ -353,9 +353,10 @@ static void postproc_atl_queue(struct is
we do a STATUS stage.
*/
if (cc == TD_DATAUNDERRUN){
- if (! short_not_ok){
+ if (! (urb->transfer_flags & URB_SHORT_NOT_OK)){
DBG("Allowed data underrun\n");
cc = TD_CC_NOERROR;
+ short_not_ok = 0;
}else{
ep->error_count = 1;
if (usb_pipecontrol(urb->pipe))
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel