[svn-commits] sruffell: branch linux/2.5 r10116 - /linux/branches/2.5/drivers/dahdi/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Thu Aug 11 14:56:22 CDT 2011
Author: sruffell
Date: Thu Aug 11 14:56:18 2011
New Revision: 10116
URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10116
Log:
dahdi_dynamic: Call dahdi_receive in rx packet handler.
Currently dahdi_receive is called on all channels in the context of the
master dynamic span. If one span (not the master) receive two packets
before the master span received a packet, the older packet on the
dynamic span would end up lost because the "readchunk" for the
channels would be overwritten by the new packet. DAHLIN-245
Signed-off-by: Wagner Gegler <wagner at aligera.com.br> (License #6268)
Changed dahdi_ec_chunk to dahdi_ec_span.
Signed-off-by: Shaun Ruffell <sruffell at digium.com>
Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10110
Modified:
linux/branches/2.5/drivers/dahdi/dahdi_dynamic.c
Modified: linux/branches/2.5/drivers/dahdi/dahdi_dynamic.c
URL: http://svnview.digium.com/svn/dahdi/linux/branches/2.5/drivers/dahdi/dahdi_dynamic.c?view=diff&rev=10116&r1=10115&r2=10116
==============================================================================
--- linux/branches/2.5/drivers/dahdi/dahdi_dynamic.c (original)
+++ linux/branches/2.5/drivers/dahdi/dahdi_dynamic.c Thu Aug 11 14:56:18 2011
@@ -200,16 +200,9 @@
{
struct dahdi_dynamic *d;
struct dahdi_dynamic_driver *drv;
- int y;
rcu_read_lock();
list_for_each_entry_rcu(d, &dspan_list, list) {
- for (y = 0; y < d->span.channels; y++) {
- struct dahdi_chan *const c = d->span.chans[y];
- /* Echo cancel double buffered data */
- dahdi_ec_chunk(c, c->readchunk, c->writechunk);
- }
- dahdi_receive(&d->span);
dahdi_transmit(&d->span);
/* Handle all transmissions now */
dahdi_dynamic_sendmessage(d);
@@ -369,6 +362,9 @@
/* note if we had a missing packet */
if (unlikely(rxpos != rxcnt))
printk(KERN_NOTICE "Span %s: Expected seq no %d, but received %d instead\n", span->name, rxcnt, rxpos);
+
+ dahdi_ec_span(span);
+ dahdi_receive(span);
/* If this is our master span, then run everything */
if (master)
More information about the svn-commits
mailing list