At 5:39 PM +0100 11/25/12, Clemens Ladisch wrote:
Daniel Mack wrote:
On 21.11.2012 21:13, Daniel Griscom wrote:
- Once in a while (every few seconds or minutes) a single
packet will be missed
- Once in a longer while (every few minutes or hours), the
system will go into a continuing error condition where three of every eight packets are missed.
[...] This test will tell us whether data is in fact lost before it hits the usb audio driver, or if it's dropped by the USB HCD.
These look like hardware errors.
It's possible. This is a Jetway NF9D-2700 motherboard, with USB handled by an NM10, and there are other Linux issues with the hardware (e.g. the PowerVR GPU isn't supported in recent Ubuntu versions). But, the test results in my previous email (sent after yours) imply that it's a software issue.
You might want to try to check the frames' status in retire_playback_urb(),
I've looked that function over, but it's not clear where in the various structures I'd find the status. Suggestion?
but this will show only DMA/ FIFO problems on the host; the HC will not be able to detect whether the receiving device has handled the packet.
You mean, if the data is put on the USB bus, but the receiving device (my audio card) loses it, there's no way the above will show this? The missing data never appears on the USB bus, so I'm pretty sure that isn't the problem here.
By the way, I'd stated that the pattern of missing packets repeats every eight microframes, and never varies. I've found that that isn't completely true; it sometimes does vary, but not by much. By microframe numbers within a frame, here are the two patterns I've seen:
0 - Miss 1 - Miss 2 - Send 3 - Send 4 - Send 5 - Miss 6 - Send 7 - Send
0 - Miss 1 - Send 2 - Send 3 - Send 4 - Send 5 - Miss 6 - Miss 7 - Send
(I've spent a while trying to concoct some sort of rule for these patterns based on the microframe numbers' bits, with no success. Oh, well.)
As always, thanks for your continuing help, Dan