[asterisk-dev] Re: TDMoE timing

Tony Mountifield tony at softins.clara.co.uk
Mon Feb 13 08:21:04 MST 2006

In article <43EA12E7.8060801 at digium.com>,
Kevin P. Fleming <kpfleming at digium.com> wrote:
> Tony Mountifield wrote:
> > I'll put a printk in the driver to confirm my suspicion, but even if so,
> > I'm not sure how I will fix it. Perhaps this is why people say TDMoE needs
> > its own interface.
> I would also suggest using a kernel much newer than 2.4.22, and 
> preferably 2.6.something... the networking stack in 2.6 is much improved.

OK, I've been fighting with trying to get TDMoE working under kernel 2.6,
and it appears to being its own set of problems.

The main one is that under 2.6, it appears that dev_queue_xmit() may NOT
be called with interrupts disabled. Under 2.4, that was quite permissible.
Bug 5126 is related to this, but __ztdynamic_run() is not the whole story.

If ztdynamic is taking its timing from a local zaptel device, then the
ztdynamic_run function is called via an ioctl from the zt_receive function
which was called for the master span on the zaptel device. It appears
that this also happens with interrupts disabled (the spinlock on the
"bigzaplock"), which again precludes the calling of dev_queue_xmit()
further down the stack.

So... has ANYONE successfully got TDMoE to work under kernel 2.6?

If so, was with with tasklets enabled or disabled?

I currently have tasklets disabled, because the notes suggested that it
was possible occasionally to lose a timeslot when using tasklets. It looks
like I will have to try with tasklets enabled, because I suspect that may
be the only way to legally call dev_queue_xmit() under 2.6.

Comments please?

Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org

More information about the asterisk-dev mailing list