Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Apr 2005 10:27:07 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        multimedia@freebsd.org
Cc:        net@freebsd.org
Subject:   asterisk and zaptel patches
Message-ID:  <20050420102707.B20180@xorpc.icir.org>

next in thread | raw e-mail | index | archive | help

--tKW2IUtsqtDRztdT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

[sorry for the crosspost to -net, but it's relevant there too;
please followup to multimedia@ only]

following a discussion on developers@, i am posting here some
patches for asterisk and the zaptel drivers.
If someone feels like committing these, please go ahead.
I am attaching a description below.

	cheers
	luigi
------------------
These patches are useful to make asterisk and the zaptel drivers
work better with FreeBSD.

In particular:

/usr/ports/net/asterisk:
  + The "wilcalu" module has a bug in the use of poll().
    FreeBSD's poll() always checks for exceptions, even if they
    are not in the mask passed to the system call. The code in
    the module however does not handle this condition, resulting
    in an infinite loop around poll() using all available CPU cycles.
    The patch in ast20050420b.diff only implements a workaround --
    if no data is readable, sleep for 1 second and saving the cpu
    for others. I suggest to disable the module, anyways, until a
    better fix is available.
  + The rtp module at times complains about invalid RTP checksums,
    when all it happens is that there is no data on a socket to read.
    I believe this is a perfectly normal event, so the patch in
    ast20050420b.diff removes the (misleading) error message altogether.
  + The chan_oss.c code is working very badly with the FreeBSD, partly
    because of issues in the driver and partly because the module
    itself was not very clean.
    ast20050420a.diff contains the diff wrt/ the version in the port,
    or if you like it better chan_oss.c contains the whole file.
    I have put in some workaround to limit the amount of data
    buffered in the driver (to keep the audio queue short), centralize
    repeated blocks of code, put global variables into the "oss" structure,
    and in general tried to clean the half-duplex support which, however,
    i suspect is still broken and probably useless anyways.

    
/usr/ports/misc/zaptel
  + the zaptel device driver has bugs in the module loading glue which
    prevent it from probing the card appropriately in FreeBSD 4.x
    The patches patch-zz1 and patch-zz2 (suitable to be put in
    /usr/ports/misc/zaptel/files) fix the problem

-- freebsd audio driver --
  + some of the ioctls are not completely implemented causing unexpected
    results (e.g. setting block sizes etc). On top of this, individual
    device drivers also have issues in the handling of blocksizes,
    with results ranging from no or stuttering sound to large delays
    in the audio playback. While it would be great to fix the driver,
    the problem is that the issues affect so many versions of FreeBSD
    that a solution in user space is still preferable if possible.
    Nevertheless, a simple patch for sys/dev/sound/pci/ich.c is
    attached in ich.c.diff -- this driver (which supports the Intel 82801
    chipset) in most cases defaults to using only 2 8K buffers, which
    at the speeds of interest for telephony result in interrupts being
    250ms apart, way too slow. This patch uses the closest buffer size
    compatible with the request, guaranteeing up to 32 interrupts/s
    if small blocks are used. The driver still has a 500ms delay in
    the output channel at 8KHz, but fixing that requires a more complex
    change.


--tKW2IUtsqtDRztdT
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="ast.tgz"
Content-Transfer-Encoding: base64

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
AA==

--tKW2IUtsqtDRztdT--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050420102707.B20180>