Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Patch: fidbirq() with recovery after lost intr



Marian Durkovic writes:
 > I've run several tests on this, ranging from streaming one TV channel with
 > videolan server up to streaming 16 TV channels from 3 NOVA cards in the
 > same machine (CPU load ~ 60%) 
 > It runs stable for hours now - I see no packet corruption in any case.

I'll test it and run it through a stream analyzer. I'll see if I also
can dig out an older mainboard which showed problems without DMA
pointer checking.


 > >  > 2) In case of missed interrupt - are you sure that the DMA is immediately
 > >  > overwriting the old half-buffer? During debugging I've seen a lot of
 > >  > occurencies when during the oldposition was below the new one,
 > >  > e.g.   
 > >  > 
 > >  > TSF=1  DMApos=96256 oldpos=95880
 > >  > 
 > >  > however the data were intact (the old ones).
 > > 
 > > 
 > > You then transferred the data at 95880 and it was still the old data?
 > 
 > Yes, exactly. Moreover somewhere I've seen a post stating the
 > 7146 has in fact three half-buffers, but only two are visible.
 > If this is true, the following thing happens:
 > 
 >   field=1:        buffer 1   *buffer 2        (buffer 3 hidden)
 >   field=0:       *buffer 3    buffer 2        (buffer 1 hidden)
 >   field=1:        buffer 3   *buffer 1        (buffer 2 hidden)
 >   field=0:       *buffer 2    buffer 1        (buffer 3 hidden)
 > 
 > Normally you read the latest buffer (marked with a '*'), but in case something 
 > goes wrong, you still have the previous one intact (DMA writes into the hidden
 > one). This corresponds to your current code where during field0 you read up to
 > the end and start from the beginning in the same interrupt, but for field1 
 > you always stop at the end of the buffer, and resume from start only in
 > next interrupt.

No, sorry, but the thing with the 3 buffers is absolutely wrong.
The total buffer space is allocated in the driver and only is big
enough for 2 fields.
The SAA7146 has no such hidden buffers. All buffers (for any DMA) have
to be allocated and handled by the driver.

With which tools do you check the data integrity?


Ralph


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index