RedHat 7.1 -- Kernel Compatibility Issues
Some 2.4 kernel-based distributions (RedHat 7.1 included) have a patch
applied to them which modifies the behavior of Linux when an open of
a serial port is canceled (for instance, if an application is waiting
for the carrier signal and a user hits CTRL-C to kill the application).
With this behavior change, the device driver is unable to cleanup its
internal data structures and the sane functioning of the driver is
compromised. The classic symptom of this problem is that the command
"lsmod", which (among other things) will return a count of the
applications using the device driver, will return a non-zero value
even if all applications associated with the serial ports
are killed.
Unfortunately, it is impossible (from within the device driver) to
determine which behavior is implemented in the running kernel. However,
Digi now provides a workaround to allow customers with this problem
to change the Digi behavior to be compatible with these "patched"
kernels.
To enable the change which provides alternate behavior when a serial
"open" call fails, execute the following after the device driver
is loaded:
echo "alt_fail_open=1" > /proc/dgrp/info
To return to the standard behavior, execute:
echo "alt_fail_open=0" > /proc/dgrp/info
To examine the current state of this driver tuning variable:
cat /proc/dgrp/info
Unfortunately, this command must be executed each time the device
driver is loaded (i.e. when the system is booted). To make this
process easier for customers, the Digi standard driver startup
tools will execute the command on the customer's behalf when it
loads the driver if the following command is executed:
touch /usr/bin/dgrp/config/alt_fail_open
This command will create a file in your file system. The Digi
tools, if they detect the existence of this file, will enable
the "alt_fail_open" behavior on your behalf at every system
boot.
History
- Version 1.3-0:
-
Added full support for Digi's EtherLite products which are running
Digi RealPort compatible firmware, including the EtherLite 2,
EtherLite 160, EtherLite 162, and the EtherLite 80.
Fixed a kernel panic if a port is open, `dgrp_daemon stop` is
executed, and a program then goes to write to the still open port.
Now write returns EIO in that condition.
Fixed a select(2) problem in kernel 2.2.15 and later of 2.2.x kernels
which could cause programs like telnet or ssh to appear to hang
until a key is pressed.
Fixed a data loss problem which would manifest itself when exactly
four kilobytes of data were transmitted after a port was opened.
Added /lib/modules/`uname -r`/kernel/drivers/char to the list of
locations that the kit will test for existence when trying to
find an appropriate location to install the driver module, in
response to testing in native 2.4 kernel-based distributions.
- Version 1.2-2:
Increased support for Digi's ethernet-based serial connectivity
family; including Digi One, EtherLite, and PortServer products.
Added support for arbitrary integer baud rates via the "ditty-rp" utility.
Detailed information about the type and version of configured remote
devices was made available via the "/proc/dgrp/nodeinfo" file.
A memory corruption problem which would cause sysem instability
was eliminated.
Unexpected pauses and loss in port traffic as a result of a network
buffer overflow were resolved.
- Version 1.1-7:
Added 2.4 kernel support.
Removed references to invalid email addresses.
Driver now handles RedHat 7.0 (kgcc vs. gcc).
The GUI tool now displays the DCD signal when viewing ports.
RealPort ports now match other Linux serial ports for default
settings, as well as making all port settings "sticky". As
a result of this change, CLOCAL is now on by default.
Configuration scripts remove the "/dev" files if a
PortServer is unconfigured.
Only physical line drops are detected as a "hangup" condition...
the driver would previously treat a change from CLOCAL to -CLOCAL
as a carrier transition.
Startup scripts are installed in "/etc/init.d" if
"/etc/rc.d/init.d" does not exist.
RPM installation will not "error out" if "chkconfig" (a RedHat
tool) does not exist on the system.
A message was added to the RPM installation to communicate
to users whether the installation scripts were added or not.
On newer systems, RPM would inadvertently strip the driver module
of its symbols, causing it to fail. The module is no longer stripped.
- Version 1.0-0:
Added a new proc file: /proc/dgrp/info. This file allows one to
determine the value of a number of state variables associated with
the driver, including the driver revision.
Continued refinement of the GUI. The GUI is now distributed
as a single file, rather than a collection of "tcl" files.
dgrp_cfg_node now does validity checking of its ID and COUNT parameters.
- Version 0.1-7: A first pass at cleaning up the code was
completed for beta release.
All driver build warnings have been fixed. Appropriate part numbers have
been correctly placed in the appropriate documents. A useful driver
revision number is now placed in the console log when the module is loaded.
- Version 0.1-5: a minimum break time of
250ms is now enforced. A PPP hang problem was resolved.
Continued enhancements of the packaging.
- Version 0.1-4: decided to install dgrp.o
to the /usr/bin/dgrp directory, and then link in the
postinstall phase to a suitable /lib/modules/*/misc
directory. This avoids the problem of having the
path to dgrp.o hardcoded in the spec file.
- Version 0.1-3: added new scripts to
autoload the driver on system startup and initialize
any PortServers configured in /etc/dgrp.backing.store
- Version 0.1-1 - pilot release in January 1999