History of CAPI for BSD (C4B) and all its components
====================================================
[11.03.2006] Package v1.1.1
===========================
[11.03.2006] startup scripts
Bugfix: The startup scripts capibase, avmaic, daic, ix1a and i4bcapimgr
did not work on system startup. Loading the kernel modules and the board
firmware did only work when executed "by hand" after system startup.
[28.02.2006] Package v1.1
=========================
[28.02.2006] avmaicctl, daicctl, ix1actl
Bugfix: On termination these tools could dump core.
[28.02.2006] avmaic
The driver now compiles and installs under 7-CURRENT (at least from
2006-01-17). Not sure if the PC-Card part really works under 6.x or 7.x,
currently it is only tested under 5.x.
[27.02.2006] avmaicctl, daicctl, ix1actl
Bugfix: The command line options "-d" and "-b
" did not work. Using
them lead to unexpected behaviour.
[26.02.2006] patches
Established a new method for creating and distributing patchsets. Now
only the absolutely necessary system source files are modified, i.e. the
i4b part. And even this is only necessary if one uses c4b together with
i4b.
Updated the patchsets for 5.3-RELEASE and 5.4-RELEASE, created new
patchsets for 5.5-RELEASE (in fact for 5.5-PRERELEASE) and 6.0-STABLE
from 2006-01-16. The later should work for all 6.x versions in the
foreseeable future.
[19.02.2006] all
Restructured the project. All kernel modules are now bundeled under the
"kernel" subdirectory. The tools to be installed under "/usr/sbin" were
collected under "tools". This way the project subdirectories are better
suited to be integrated into the official FreeBSD source tree.
And on the other side it is possible to completely build and install
everything outside the FreeBSD source tree. This makes it possible to
create new patch sets that only contain patches absolutely necessary to
run the system. Future patchsets will no more make the attempt to
integrate c4b into the FreeBSD source tree to make updating c4b and
FreeBSD separately much easier.
[27.12.2005] avmaic
The driver now uses busdma(9) for communicating with dma-based boards (B1
PCI v4, C2, C4, T1 PCI). Driver version number raised to 2.0.
[30.10.2005] avmaicctl, daicctl, ix1actl
Bugfix: At program termination these tools could dump core.
[27.05.2005] Package v1.0
=========================
[06.05.2005] avmaicctl, daicctl, ix1actl, capitest, capitrace
The new directory "common" under "/usr/src/usr.sbin/c4b" contains source
files common to all c4b tools.
[14.04.2005] all
Everything (maybe besides "i4bcapimgr" because of "i4b") is ready to
compile under the AMD64 architecture. If it really works must be checked
by some other person.
[03.04.2005] kcapimgr, capidev, avmaic, daic, ix1a
Raised the internal module version numbers to "1.0".
[01.04.2005] ix1a, ix1actl
Several bug fixes and tests. All S0 boards work.
[30.03.2005] avmaicctl
All ports of an AVM C2 or C4 can now be separately configured. E.g. some
can be configured for multipoint access, the remaining ones may be set
for point-to-point operation.
[26.03.2005] capitrace
Bugfix: The "B-Channel Information" structure produced an error message
if a non-empty structure was provided in the "Additional Information"
structure of e.g. a Connect-Request.
[23.03.2005] Startup scripts for "/etc/rc.d"
From 5.3-RELEASE on the old startup file "/etc/rc.d/capi" will no longer
be used. It is replaced by several new scripts:
capibase - Start and stop the basic CAPI subsystem (kcapimgr,
capidev)
avmaic - Load the avmaic driver and load all configured boards
daic - Load the daic driver and load all configured boards
ix1a - Load the ix1a driver and load all configured boards.
i4bcapimgr - Load the link between c4b and i4b, if both are enabled
It is now necessary to enable the CAPI controller drivers in
"/etc/rc.conf", i.e. "avmaic_enable" and others must be set to "YES" to
make the startup scripts do real work.
[23.03.2005] avmaicctl, daicctl
These tools now work with a configuration file, by default
"/etc/avmaic.cfg" and "/etc/daic.cfg", respectively. The manual files for
the tools and the driver were updated accordingly. Two new manual pages
"avmaic.cfg.5" and "daic.cfg.5" were added.
[24.01.2004] ix1a
First working version of this driver with a Datafire Basic ISA 4MB.
[17.01.2004] kcapimgr
Bugfix: When unloading an error message was printed that the message
handler thread could not be terminated.
[29.12.2004] avmaic, daic
Removed the limitation for the maximum number of supported boards (by
default four). It is now possible to drive more than four boards without
the need to re-compile the kernel modules with a higher maximum number of
units (AVMAIC_MAX_UNITS and DAIC_MAX_UNITS, respectively). These module
options have now disappeared, because they are not needed any more.
The 5.3-RELEASE patchset was updated to reflect this change. For older
systems the options mentionned are registered but not used by the driver.
Raised the versions to 0.10 for avamic and 0.4 for daic.
[29.12.2004] avmaic
Added support for the B1-PCMCIA (and basically support for the M1 / M2,
their PCMCIA product ids are still missing). The only drawback is that
the card does not work directly after inserting it into the cardbus slot.
The avmaic driver must be unloaded and reloaded to make it work.
A solution could be to have the pccard driver patched to not toggle the
socket power when performing the attach operation. But this must be
discussed with the maintainer(s) of the pccard driver.
[23.12.2004] Package v0.93
--------------------------
[22.12.2004] avmaic
Modified some timing issues. Some DELAY() calls were removed, most
timeouts are now handled through getmicrotime().
[24.11.2004]
New patchset for 5.3-RELEASE.
[07.11.2004] avmaic
Modified some timeout values to be more tolerant against high system or
board load.
[17.10.2004] avmaic
Bugfix: A kernel crash could occur if the i/o range for a B1-ISA could
not be allocated, e.g. another device might occupy this range.
[17.10.2004] capitrace
Bugfix: With some recent 5.2-Current a new compiler version was
introduced that could not compile the program. The cause was some
erraneous macro calls, that could be compiled with earlier compiler
versions, but are not understood by the current version.
[01.07.2004] i4bcapimgr
Support for 64bit CAPI specification.
[29.06.2004] capidev
Bugfix: Data-B3-Requests are now again accepted if they do not contain
the qwData64 field for 64bit CAPI applications.
[29.06.2004] capi20.h
Extension: There are now structure definitions explicitly for 32 and 64
bit applications for Data-B3-Requests and -Indications. The "old"
structures for both architectures remains the same.
[29.06.2004] kcapimgr
Bugfix: The trace routine for application registration was left out when
kcapimgr was made 64bit ready according to the CAPI specification.
[29.06.2004] kcapimgr
Bugfix: atomic_* functions were applied to variables of type size_t.
[01.06.2004] Package v0.92
--------------------------
[30.05.2004] New patchset for Current from 30.05.2004.
[30.05.2004] avmaic
Update of the firmware files to 3-11-03 for AVM-B1 and to 3-11-04 for
AVM-C2 and -C4.
[30.05.2004] daic
The driver now seems to work. It is possible to establish voice, HDLC
and X.75 connections. ISO 8208 should also be possible (with more than
one NCCI per PLCI), but capitest is currently not capable of handling
such connections. Of course DTMF detection is still not possible (no
support by controller).
The only real known problem is flow control for HDLC and X.75
connections, maybe also for voice connections. A Disconnect-B3-Request
for an X.75 connection bypasses any pending data block in the
controller. The other side receives a Disconnect-B3-Indication, but not
the data blocks sent out (and buffered) before.
[20.05.2004] capidev
Bugfix: If kcapi_get_message() was called before any message was reported
through the callback function or it was called more often than messages
are reported, the poll call would have returned immediately for a very
long time, even if there was no message to retrieve. Even well
implemented applications used up 100% cpu time in this case.
[13.05.2004] capitest
Bugfix: When echoing data for incoming connections, the Data-B3-Request
always contained a data block of 2KB, even if the received data block was
shorter.
Bugfix: When echoing data for incoming connections, the connection was
aborted on the first incoming data block.
[12.05.2004] kcapimgr
In kcapi_put_message() a check is made, if the application id as the
function argument and the one within the CAPI message are the same. If
they are different, the message is rejected.
[15.04.2004] capitest
Bugfix: If a connection is to be aborted in state P-2, now a negative
Connect-Response is sent instead of a Disconnect-Request.
[14.04.2004] libcapi20
Bugfix: The capi20_wait_for_message() function could return with a result
value of EINTR that is no CAPI result value. Now the internal poll() call
is restarted if it is aborted by receiving a signal.
[08.04.2004] kcapimgr
Raised the window for Data-B3-blocks to send from 7 to 8. Capi4Hylafax
by default has a send window of 8 data blocks and it expects the CAPI
implementation to accept this number of unconfirmed data blocks in all
cases.
[08.04.2004] Package v0.91
--------------------------
[08.04.2004] i4bcapimgr
Bugfix: Some source files included "limits.h" instead of "sys/limits.h".
This prevented this module from beeing directly compiled into the kernel.
[06.04.2004] capidev
Removed the last occurrence of splxxx() (besides the use in i4bcapimgr
because of the necessary interaction with i4b).
[06.04.2004] kcapimgr, capidev, avmaic, i4bcapimgr
Changed the logging facility from bit masks to levels. The output now
contains a character that resembles the logging level for each message.
So it is easier to distinguish error messages from debugging output.
[06.04.2004] all
Added support for 64bit applications. All kernel modules and tool
programs should work in Intel-/AMD-based 64bit hardware as well as on
32bit i386-systems. Due to lack of 64bit hardware this is currently
untested. But the 32bit part seems to work.
Note: This includes some change in "capi_bsd.h". In order to evade
alignment problems with some hardware, the length of the strings in
structure CAPICtlrDriverInfo_t is modified, so the word members of the
structure are aligned on word boundaries. This leads to a binary
incompatibility to earlier versions.
[01.04.2004] Package v0.9
-------------------------
[31.03.2004] daicctl, daic
After some bugfixes the driver receives incoming calls and we can start
outgoing calls. But a real connection is still not possible.
[31.03.2004] CAPI header files
Updated the headers according to echo cancellation (substituted
preliminary stuff by approved definitions).
[29.03.2004] all
Created a working patchset for 5.2-Current from 29.03.2004.
[14.03.2004] all
Created a working patchset for 5.2-Current from 08.03.2004.
[14.03.2004] i4bcapimgr, kcapimgr
Before calling kthread_exit() the Giant mutex is now acquired, because
kthread_exit() will not do it for us.
[14.03.2004] i4bcapimgr
Bugfix: The mutexes for accessing the rx and tx queues for each
connection data structure are now released when unloading the kernel
module.
Bugfix: When cleaning up tx and rx queues, the queue mutex was obtained
twice.
[26.02.2004] capitest
Bugfix: If the Connect-Request failed, the counter for the current number
of outgoing connections became negative. Because it is an unsigned value
and before termination the program will wait for all connections to be
terminated, the program could only be killed by "kill -9".
[25.02.2004]
Updated the patchset for 5.0-RELEASE to integrate c4b completely into the
source tree.
[16.02.2004]
Some minor changes to let the package compile under 5.2-RELEASE.
[16.02.2004] daic
Did some rework, but the driver is still not working.
[25.01.2004]
Created a new patch set that is now hopefully complete with respect to
the necessary source tree modifications. It is not applied with the
script "getall.sh" any more. Instead there is a script "do-patches.sh" in
the patch directory that does it.
[25.01.2004]
Restructured the scripts and patches to integrate c4b into a source tree.
This includes some places in the source tree that were missing until now.
The patches should now be complete to insert c4b into a source tree with
every detail (at least until 5.1-RELEASE, 5.2-RELEASE and Current will
follow). The work to create a new patch set for a new release or for a
new Current version shall now be much less than before.
[21.01.2004]
Changed the location of the CAPI header files from /usr/src/include to
/sys/c4b/include. Otherwise the kernel could only be build with the rest
of the source tree available. The CAPI header files are still installed
through /usr/src/include/Makefile into /usr/include. To let the header
files remain unchanged, the kernel needs an additional include path
"${S}/c4b/include" if the c4b modules are to be compiled directly into
the kernel. This directory is added by a makeoptions line in the kernel
configuration file. For the kernel modules the additional include
directory is added through the respective module makefile.
[21.01.2004] all c4b kernel modules
Some minor changes to eliminate compiler warnings. This also includes the
makefiles for the kernel modules.
[01.01.2004] i4bcapimgr
Bugfix: Sending an Alert-Request led to a kernel panic.
[31.12.2003] libcapi20
Turned the library source from C++ to C. This could be useful for
programs that are implemented in pure C and a system operator has turned
off building C++ related stuff for building the whole system.
[31.12.2003] daic
First complete and compilable version of the CAPI driver for legacy Diehl
active ISDN boards. The driver will now be built as a second CAPI driver
besides the avmaic driver. The driver should support the boards S, Sn,
Sx, SCOM and Quattro. There is currently no support for the Diehl S2m
board. It should use the same logical interface as the S0 boards, but the
physical interface is something different. The driver is considered to be
pre-alpha (only compiled, not even loaded yet).
The daic driver should be a good step in two directions: to create a
driver for the current Eicon DIVA Server boards and to create a driver
for passive boards.
[28.09.2003] Package v0.8
-------------------------
[27.09.2003] i4bcapimgr
Bugfix: The eighth unconfirmed data block was dropped because of an
unterminated loop if kcapi_put_message() delivered "queue full" or
"busy".
[23.09.2003] capitest
All known / detected bugs fixed after rewriting.
[21.09.2003] kcapimgr
The application part needed rework like the controller part. The two
synchronisation objects used earlier are replaced by a single sx mutex.
This object type is used because it is necessary to hold this mutex when
calling into the tracing part, where again an sx mutex must be obtained,
possibly sleeping to gain access.
[17.09.2003] capidev
Like kcapimgr the synchronisation mechanism had to be corrected. A file
lock was held while calling into the CAPI manager. And this call would
finally lead into a sleep call, resulting into a panic.
[14.09.2003] kcapimgr
Again the synchronisation mechanism in the controller handling part had
to be worked over. Now the mutex is never held any more when a thread
goes to sleep. This would otherwise lead to a kernel panic.
[30.08.2003] capitest
The program was modified to handle incoming connections over all
available controllers and to handle batches of outgoing calls over more
than one controller at a time. And additionally user-user data for the
connection type and for checksum data can be sent to the partner side.
These modifications can be used to perform stress tests for the CAPI
manager and CAPI controller drivers.
[18.08.2003]
Modifications to the synchronisation mechanism in the kcapimgr module.
The most often called functions in the controller handling part
(application register, release and put_message in kcapi_ctlr) now only
need to acquire one non-recursive mutex (before: a recursive mutex and a
shared / recursive "struct lock").
[31.07.2003]
First version compilable under 5.1-RELEASE (and current at this time).
For 5.1-RELEASE there is a new script "/etc/rc.d/capi" to startup CAPI
support. It will still load the kernel modules for kcapimgr and capidev
if enabled through "rc.conf". This is also true for controller drivers,
their download commands and the i4bcapimgr module. These jobs should be
put into their own startup scripts.
Version number raised to 0.8.
[28.06.2003]
First version compilable under 5.0-RELEASE. Complete reimplementation of
the (kernel) thread synchronization mechanisms. From this point on the
package can only be compiled under FreeBSD 5.0 and higher. The only
version available vor v4.x will remain package v0.6. Bugfixes to this
package will lead to version numbers v0.6.x.
Version number raised to 0.7.
[24.03.2003] Package v0.6
-------------------------
[09.03.2003] i4bcapimgr
Bugfix: A burst of data transmit requests could lead to a loop of
Data-B3-Requests while the destination controller is busy with eight
unconfirmed data blocks. During this loop no other operation was possible
and thus no Data-B3-Confirm or Data-B3-Indication could be processed. The
effect was e.g. a stalled connection during a put operation in a ftp
session.
Added version information as a sysctl variable and a version number of
0.6.
[09.03.2003] kcapimgr
Version number raised to 0.6.
[09.03.2003] avmaic
Version number raised to 0.6.
[09.03.2003] kcapimgr, capidev, i4bcapimgr, avmaic
The internal handling for sysctl variables has changed. Such variables
are now defined with the macros intended for this purpose. In this
context the sysctl variables were moved away from the "debug" tree. The
CAPI manager now introduces its own "capi" variable tree.
Some values, namely the logging masks of all modules, may now be
initialized on module load through kernel "tunable" environment variables
in "/boot/loader.conf". So it is normally not needed any more to compile
a module with a specific default logging mask.
[01.03.2003] avmaic
Bugfix: The check of the flags device field in the attach function was
wrong for a AVM-T1.
[20.02.2003] avmaic
Bugfix: The i/o transfer of a specific byte or series of bytes could lock
up the board and even the complete system. There was a misunderstanding
in the concept of the i/o port based communication with a board that is
now corrected.
[02.02.2003] avmaic
Bugfix: Memory for bus-master DMA is now allocated through contigmalloc()
to get a contiguous memory block of physical memory for communication
with a DMA based board. This was formerly done by simply calling
malloc().
[02.02.2003] i4bcapimgr
Bugfix: The initial logging mask was set to null. Now it is correctly set
to LOG_ERROR.
[29.01.2003] i4bcapimgr
Changed the data block resend timeout from 200ms to 250ms and the number
of send attempts from 10 to 60. So if a Data-B3-Request results in an
0x1103, the overall time to try to send it is raised from 2s to 15s. When
establishing a new connection, sometimes an outgoing data block was lost.
Maybe this will solve the problem. Because the send queue of the network
might be filled too much in this situation, a burst could lead to the
CAPI controller queue fill up (only 8 entries).
[28.01.2003] Package v0.5
-------------------------
- Contains kcapimgr v0.5 and avmaic v0.5.
- Testing and bug fixes for AVM-B1 PCI v4 and the i/o port only mode to
simulate a AVM-B1 PCI v3 (i.e. without DMA use). Now only AVM-C2 and the
T1 variants are untested.
- Bugfix: There was a potential deadlock in the CAPI manager. If one
application performed a kcapi_release() with still a connection active
and another application calling kcapi_put_message() at the same time, the
threads for both applications owned one lock and wanted to get a second
lock, the classical deadlock. This lead to blocking the whole CAPI
manager and thus the CAPI system.
- Added preliminary support for kernel tunable 'constants' (settable in
/boot/loader.conf) for the logging masks in kcapimgr and avmaic. So there
is no need any more to compile these modules with a special logging mask
set through make options. This will be documented when all other modules
have support for kernel tunable parameters as far as it makes sense.
- Added a README as a cook book to incorporate C4B into a FreeBSD system
out-of-the-box. As C4B will only be included in a future v5 release, this
is the only option for people running earlier versions of FreeBSD.
4.6-RELEASE and 4.7-RELEASE are supported, other versions may work but are
not supported by the author.
- Added a history (this file).
[14.01.2003] Package v0.4
-------------------------
- Contains kcapimgr v0.4 and avmaic v0.4.
- Some minor bugfixes.
- Completed capitrace program for trace file evaluation. Still some message
parameters are not decoded, namely all Facility-Parameter structures.
- Added system patches for FreeBSD 4.7-RELEASE to automatically patch the
system for inclusion of CAPI for BSD.
- Added a lot of manual pages for documentation of the whole C4B package.
The starting point is c4b(4).
[23.12.2002] Package v0.3
-------------------------
- Contains kcapimgr v0.3 and avmaic v0.3.
- Some bugfixes and internal changes.
- Preliminary support for CAPI traces. The capitrace program is still not
complete. The trace file evaluation functionality is nearly non-existing.
- Added shell script to automatically patch FreeBSD 4.6-RELEASE to include
CAPI for BSD into the system.
[14.07.2002] Package v0.2
-------------------------
- Contains kcapimgr v0.2 and avmaic v0.2.
- First working version of CAPI for BSD.
- Tested with AVM-B1 ISA and AVM-C4.