summaryrefslogtreecommitdiffstats
path: root/src/errors.c
diff options
context:
space:
mode:
authorGravatar Jonathan Woithe 2014-06-10 23:10:57 +0930
committerGravatar Stefan Richter 2015-04-28 22:16:16 +0200
commitc756fb8321c9b81d6887ad2d5667ba8d57fb1296 (patch)
treec0627e58be8db3be27f9ee6767fd72857e5eb12b /src/errors.c
parentFix memory leak in response handler (diff)
Prevent requests for previously provided iso tx packets
This bugfix grew out of an extended investigation into a problem encountered by a small number of people running FFADO. FFADO would report that the tx iso cycle number supplied to the iso tx callback seemingly went backwards - something which should not ordinarily occur. The bug seemed to be sensitive to timing and in some cases would disappear when debug traces were inserted into either FFADO or libraw1394. In essence, libraw1394 was requesting tx data for cycles which had already been requested. Initial discussions can be found in the thread "Problem with RME FF800. Can not start jackd" on the ffado-user mailing list. A followup investigation is tracked in FFADO ticket number 379 (http://subversion.ffado.org/ticket/379) and referenced in the thread "Revisiting backward cycle number sequence (ticket 379)" on ffado-devel. The latter mailing list thread includes a lengthy explanation of what I think is happening. To summarise, the root of the problem seems to be that on certain machines under certain conditions, something causes the kernel to post an iso tx event at a time when fewer than irq_interval packets have been transmitted. Unfortunately it has not been possible to determine the underlying cause of this. Whatever the cause, tests carried out with the reporter of ticket 379 have shown that it is occurring. As a result, the adjustment to libraw1394's packet_count must be done with reference to the number of packets reported as transmitted by the kernel instead of simply assuming that irq_interval packets have been sent. A patch implementing this fix is at the end of this post. This fixes the problem when the newer ABI is in use, which provides tx packet timestamps (and thus an indication of the number of packets actually transmitted) to userspace. It does not address the problem when the older ABI is used, but given the nature of the problem I don't think it's possible to fix it without access to the timestamps (or at least without some way to determine the number of packets really transmitted). Testing by "juanramon" (see ticket 379) has demonstrated that it fixes the "backward cycle number" problem on his machine. Thanks to Andreas Hehn and "juanramon" for their invaluable help in tracking this down. Signed-off-by: Jonathan Woithe <jwoithe@just42.net> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions
p;d=retro' width='13' height='13' alt='Gravatar' /> bencollins 1-2/+2 2003-07-22Patch from Stephen Tiedemann to allow reentrancy in raw1394's usage ofGravatar bencollins 7-200/+199 2003-07-17Patch from Dan Maas to add raw1394_iso_recv_flush() call to API, using theGravatar bencollins 2-3/+25 2003-07-17pkg-config support from Kristian Hogsberg.Gravatar bencollins 3-1/+15 2003-07-17Remove trailing whitespace, which automake chokes on.Gravatar bencollins 1-1/+1 2003-07-13Fixed section for -dev package.Gravatar bencollins 1-1/+1 2003-07-13Re-add the pdf buildGravatar bencollins 1-0/+1 2003-07-13Update Debian files.Gravatar bencollins 4-25/+73 2003-07-13Ok, the Debian package was way out of sync with upstreamGravatar bencollins 1-1/+1 2003-07-13Ooops...libtool works a bit different than I thought, but atleast it worksGravatar bencollins 2-6/+1 2003-07-13Generate and install the pdf in the Debian package.Gravatar bencollins 3-3/+4 2003-07-13Don't run configure at the end of autogen.sh. Also, remove autom4te.cache.Gravatar bencollins 1-1/+1 2003-07-13Update Debian maintainerGravatar bencollins 1-1/+2 2003-07-13Update Debian changelog.Gravatar bencollins 1-0/+8 2003-07-13File doesn't really seem needed. The NEWS file gives a good overview, andGravatar bencollins 1-4/+0 2003-07-13Fix compiler warnings.Gravatar bencollins 4-12/+22 2003-07-13Updates from 0.10.0 release.Gravatar bencollins 4-5/+14 2003-04-23add libtoolize to bootstrapGravatar ddennedy 1-1/+10 2003-04-21added Dan Maas' rawiso docsGravatar ddennedy 1-32/+295 2003-04-07new_handle_on_port() error path fix from Jim RadfordGravatar dmaas 1-1/+3 2003-03-26add raw1394_new_handle_on_port() convenience functionGravatar dmaas 2-1/+41 2003-02-22Updates for new rawiso ioctl interface.Gravatar bencollins 3-37/+125 2003-01-15add iso_xmit_sync() and iso_xmit_write(); clean up iso handling a bitGravatar dmaas 5-39/+161 2003-01-15implement tag matching for rawiso receptionGravatar dmaas 3-4/+12 2003-01-06back out previous commit - don't drop the legacy API just yetGravatar dmaas 6-173/+130 2003-01-05emulate legacy ISO reception API on top of new rawiso APIGravatar dmaas 7-131/+174 2002-12-24update iso API for multi-channel reception and new packet buffer layoutGravatar dmaas 4-123/+236 2002-12-20oops, irq_interval needs to be signedGravatar anonymous 1-1/+1 2002-12-20dmaas - renamed exported arm definitions into the raw1394_ namespace; brought...Gravatar anonymous 3-124/+48 2002-12-16rawiso updates:Gravatar dmaas 3-18/+25 2002-11-18fix cplusplus extern C blockGravatar ddennedy 1-4/+4 2002-11-18merged rawiso branchGravatar ddennedy 7-6/+488