[comp.unix.questions] Help needed with Modems/DHU driver

rc@eddie.MIT.EDU (CAF System Mgr) (11/17/87)

We have a DHU-11 16 channel MUX installed in the unibus chassis
controlled by the Vax Unibus adapter. We are currently running the
dhu driver that came with the BSD 4.3 distribution.

The modems we'd like to use are NEC N2420/30HNE 2400 baud modems with
MNP error correction.  The modems prefer to talk to the host at a
single baud rate, regardless of the speed of the connection over the
telephone line.  In our case, the modem to host link runs at 2400 baud
regardless of whether the remote modem connection is at 2400, 1200,
or 300 (gak!) baud.

The problem occurs when the modem is communicating to a remote
modem at 1200 baud.  If the user tries to cat a large file, the
modem's buffer eventually fills up and then loses large chunks of the
data stream.  The modem uses the CTS line to indicate when its buffer is
full, but the DHU driver ignores the state of the CTS line.  The DHU
hardware is capable of sensing the status of the CTS line, but it will
not do any flow control on its own.

The modifications we attempted last time were made to two
files:
	vaxuba/dhu.c  and sys/tty.c

We modified the dhuread() routine to look for a transition on CTS
(right after the code that looks for the transition in CD).  The new
dhuread() made a call to ttymodem() to handle flow control.

We modified ttymodem() in tty.c to only do flow control if
mdmbuf was set and if carrier was present.

The result was that the new driver recognized the high
to low transition (XOFF) of CTS correctly and stopped the tty output.
It did not, however, restart the output until the user typed the
restart character (control-Q or whatever it was set to).

Any help/information in fixing the above would be greatly
appreciated.

Thanks !!

-rc
ARPA: rc@eddie.MIT.EDU
UUCP: ...!mit-eddie!rc