Date: Sun, 1 Dec 1996 22:34:14 PST From: fenner@parc.xerox.com To: freebsd-bugs@freebsd.org Subject: (fwd) <Synopsis of the problem (one line)>cy.c cyclades driver does not detect DCD drop on cuac* (mgetty) Message-ID: <96Dec1.223425pst.177711@crevenia.parc.xerox.com>
next in thread | raw e-mail | index | archive | help
>Number: 2127
>Category: kern
>Synopsis: cy.c cyclades driver does not detect DCD drop on cuac* (mgetty)
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Nov 29 17:30:01 PST 1996
>Last-Modified: Sun Dec 1 22:31:50 PST 1996
>Originator: Julian Assange
>Organization:
>Release: FreeBSD 3.0-CURRENT i386
>Environment:
Cyclades 16Ye PCI
>Description:
The cy.c driver does not detect DCD drop when using callout devices.
This is a problem for outgoing ppp connections and for mgetty, which
listens for modem RING's on cuac* rather than listening for a carrier
on ttyc*. It is also possible that DCD drops are not followed on ttyc*
(haven't tested). The problem is definately with the cy.c driver as an
otherwise identical configuration works without problem with
16550A ports and sio.c.
>How-To-Repeat:
at&c1 (follow remote carrier)
open line via /dev/cuac*
make remote connection
hang up remote modem.
>Fix:
I am unfamiliar with cy.c, but a few potential problems noted are (the unified diff marks are against sio.c):
-static void
-cd1400_channel_cmd(iobase, cmd, cy_align)
- cy_addr iobase;
- int cmd;
- int cy_align;
-{
- /* XXX hsu@clinet.fi: This is always more dependent on ISA bus speed,
- as the card is probed every round? Replaced delaycount with 8k.
- Either delaycount has to be implemented in FreeBSD or more sensible
- way of doing these should be implemented. DELAY isn't enough here.
- */
- u_int maxwait = 5 * 8 * 1024; /* approx. 5 ms */
+
- /* wait for processing of previous command to complete */
- while (cd_inb(iobase, CD1400_CCR, cy_align) && maxwait--)
- ;
+
Timing is going to be considerably different on PCI vs ISA - however,
however if anything the delay/retry should be over forgiving in its
new (PCI) enviroment rather than the other way around.
In several places, sio.c has had variations on the following code
added:
+ if (com->gone)
+ return(0);
But com->gone is used to indicate a uart that has disappeared,
rather than a DCD drop.
There does not seem to be any great differences in the DCD or HUPCL code
between sio.c and cy.c, although there is lots for RTS/CTS. Perhaps there
is some interplay here I am not seeing.
>Audit-Trail:
Responsible-Changed-From-To: gnats-admin->freebsd-bugs
Responsible-Changed-By: fenner
Responsible-Changed-When: Sun Dec 1 22:31:17 PST 1996
Responsible-Changed-Why:
Submitter did not intend for PR to be confidential.
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?96Dec1.223425pst.177711>
