[pvrusb2] usb weakiness and streaming errors
Ingo Flaschberger
if at xip.at
Tue Jan 3 16:34:18 CST 2006
Hi
>> I have a Via eapia board, an Via usb 2.0 controller and a 5m active usb
>> repeater cable. (Not very ideal setup, I know).
>>
>> Sometimes, the server has usb errors:
>> kernel: ehci_hcd 0000:00:10.3: devpath 2.1 ep4in 3strikes
>> kernel: pvrusb2 /*---TRACE_READ---*/ data is available
>> kernel: pvrusb2 /*---TRACE_READ---*/ pvr2_ioread_read id=c8e7fc80
>> buffer_error=-71
>
> Well that's a first, in code that has not changed in quite a while. First
> guess is that something hiccupped involving USB bulk transfers. The first
> error message you printed came from the USB core not the pvrusb2 driver,
> which suggests strongly that something went wrong at a level lower than the
> driver. But I'll need to go back and look at this code to see what the
> nature of the error is.
hardware probs..
kernels comment:
---snip---
/* serious "can't proceed" faults reported by the hardware */
if (token & QTD_STS_HALT) {
if (token & QTD_STS_BABBLE) {
/* FIXME "must" disable babbling device's port too
*/
urb->status = -EOVERFLOW;
} else if (token & QTD_STS_MMF) {
/* fs/ls interrupt xfer missed the complete-split
*/
urb->status = -EPROTO;
} else if (token & QTD_STS_DBE) {
urb->status = (QTD_PID (token) == 1) /* IN ? */
? -ENOSR /* hc couldn't read data */
: -ECOMM; /* hc couldn't write data */
} else if (token & QTD_STS_XACT) {
/* timeout, bad crc, wrong PID, etc; retried */
if (QTD_CERR (token))
urb->status = -EPIPE;
else {
ehci_dbg (ehci, "devpath %s ep%d%s 3strikes\n",
^^^^^^^^^^^^^^^^^^^^^^^^^^
urb->dev->devpath,
usb_pipeendpoint (urb->pipe),
usb_pipein (urb->pipe) ? "in" : "out");
urb->status = -EPROTO;
}
---snap---
Seems to be some problems of the via chipset.
>> and pvrusb2 gets an error in pvrusb2-ioread.c; pvr2_ioread_read() line 273
>> and stops the stream, /dev/video0 gets an read error and mythtv freaks ok.
>>
>> my really heavy hotfix was, to exclude the next lines and ignore the error:
>> pvr2_ioread_stop(cp);
>> ret = -EIO;
>> break;
>>
>> and it works.. now. perhaps you know a better way to handle that... Need a
>> tip and I will do the fix then.
>
> I will investigate. You might have found a way to recover from such a
> problem. Not having had that problem here (yet) naturally there's no error
> recovery...
Thanks :)
The recover from the problem is a "russion" solution, just ignoring the
problem. Works very well *g* now since 30 minutes and a lot of usb errors.
bye,
Ingo
More information about the pvrusb2
mailing list