Oliver Neukum <oliver@xxxxxxxxxx> writes: > Am Dienstag, 17. November 2009 19:35:07 schrieb Eric W. Biederman: >> Boiled down. ftdi_chars_in_buffer is essentially >> priv->tx_outstanding_bytes. tx_outstanding_bytes is incremented when an >> urb request is sent and tx_outstanding_bytes is decremented when an urb >> request completes. >> >> It turns out I have a moderately noisy usb line, and so I occasionally >> get messages like: >> >> ehci_hcd 0000:00:0a.1: detected XactErr len 0/7 retry 31 >> >> Which as best as I can tell result in the urb getting abandoned and >> neither completed nor canceled (because we have hit the maximum >> retry count and they still don't succeed). > > The URB should be finished with an error code in urb->status. > ftdi_write_bulk_callback() does decrement the counter even in > the error case. > >> Which appears to result in tx_outstanding_bytes getting stuck at >> some positive number. > > Do you see this message > > if (status) { > dbg("nonzero write bulk status received: %d", status); > return; > } > > if you enable debugging output? I will have to give that a try. The problem isn't that easy to reproduce. But I do have a 100% correlation between urb retry counts and hangs in tty_wait_until_sent. Eric -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html