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