[asterisk-dev] Link reliability issues on DAHDI
Felipe Bergo
fbergo at gmail.com
Thu Nov 13 12:18:28 CST 2008
Thanks for the reply, Kevin.
> Well, many bugs have been fixed in DAHDI since 2.0.0-rc4, so I'd really
> suggest upgrading before spending much more time on this.
I will upgrade to the latest kernel and svn checkout of DAHDI and repeat the
tests in the next few days.
>
>
> What buffer policy is your application using for the DAHDI channels,
> what size are you setting the buffers to, and how many buffers are you
> configuring?
Both TX and RX policies immediate, 32 buffers of 512 bytes each (just like
the hdlcstress.c sample application provided on dahdi-tools). I have tried
16x1024 and 8x2048 with no noticeable difference.
>
> > About ELAST errors:
> >
> > What is the the intended semantic of the ELAST error on reads and writes
> > ? On a write, if the buffers are full/link is busy, isn't the driver
> > supposed to block the write instead of returning an error immediately ?
>
> Are you setting the channel file descriptor to non-blocking mode? If so,
> this is exactly what you should expect.
I am not setting O_NONBLOCK. But if I were, I would expect EAGAIN errors,
not ELAST.
Looking at the kernel module source, reads and writes return ELAST when
(chan->eventinidx != chan->eventoutidx), which I interpret as "the event
queue is not empty":
(dahdi-base.c, rev. 5275, line 1914):
for (;;) {
> spin_lock_irqsave(&chan->lock, flags);
> if (chan->eventinidx != chan->eventoutidx) {
> spin_unlock_irqrestore(&chan->lock, flags);
> return -ELAST /* - chan->eventbuf[chan->eventoutidx]*/;
> }
>
The code in dahdi_chan_write is very similar.
-- Felipe Bergo
LABCOM Sistemas, Campinas, SP, Brazil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20081113/70f0449e/attachment.htm
More information about the asterisk-dev
mailing list