From owner-freebsd-multimedia@FreeBSD.ORG Wed Apr 20 17:27:10 2005 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9F38D16A4CE; Wed, 20 Apr 2005 17:27:10 +0000 (GMT) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.FreeBSD.org (Postfix) with ESMTP id 56E0C43D2F; Wed, 20 Apr 2005 17:27:08 +0000 (GMT) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.12.8) with ESMTP id j3KHR7m8020449; Wed, 20 Apr 2005 10:27:07 -0700 (PDT) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id j3KHR7ET020448; Wed, 20 Apr 2005 10:27:07 -0700 (PDT) (envelope-from rizzo) Date: Wed, 20 Apr 2005 10:27:07 -0700 From: Luigi Rizzo To: multimedia@freebsd.org Message-ID: <20050420102707.B20180@xorpc.icir.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="tKW2IUtsqtDRztdT" Content-Disposition: inline User-Agent: Mutt/1.2.5.1i cc: net@freebsd.org Subject: asterisk and zaptel patches X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Apr 2005 17:27:10 -0000 --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--