*BSD News Article 79630


Return to BSD News archive

Newsgroups: comp.unix.bsd.freebsd.misc
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!nntp.coast.net!news2.acs.oakland.edu!news.tacom.army.mil!news.webspan.net!www.nntp.primenet.com!nntp.primenet.com!hunter.premier.net!news.mathworks.com!EU.net!sun4nl!wmt!usenet
From: Rene de Vries <revr@cadre.nl>
Subject: Re: UUCP on ASUS P55TP4N
X-Nntp-Posting-Host: ganymedes
Content-Type: text/plain; charset=us-ascii
Message-ID: <325116D1.37E4@cadre.nl>
Sender: usenet@wmt.nl
Content-Transfer-Encoding: 7bit
Cc: rene@freeze.iaf.nl
Organization: Cayenne Software - a Bachman and Cadre company
References: <DyEyAF.8I@acme1.ruhr.de> <52nu1t$8cc@godzilla.zeta.org.au>
Mime-Version: 1.0
Date: Tue, 1 Oct 1996 13:04:17 GMT
X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.4 sun4m)
Lines: 62

Bruce Evans wrote:
> 
> In article <DyEyAF.8I@acme1.ruhr.de>,
> Christoph Haas <chris@acme1.ruhr.de> wrote:
> >I'm succesfully running FreeBSD 2.1.5-STABLE on my old 486/100. Taylor UUCP can use the modem on /dev/cuaa1 (which is an onboard multi-i/o chip) without any problems. Now I moved to a new system based on an ASUS P55TP4N. The kernel detects 2 serial ports and I can use both of them with a mouse in X11 (so the hardware seems to be ok). When I start a ppp session with a modem conected to one of the ports, everything seems to be allright, but when I try to use UUCP on this port, I get tons of error
> k
> >sums, missing packets etc.). Is there a known bug in the sources (maybe the sio drivers) or on the board ?
> 
> This is a known bug in the UART used on some ASUS P55TP boards.  It shows
> up mainly under uccp and gdb-remote because they make (usually null) changes
> to the UART settings while data is arriving.  Try the enclosed work-around.
> It makes null changes harmless.
> 
> diff -c2 sio.c~ sio.c
> *** sio.c~      Sat Sep 14 19:30:41 1996
> --- sio.c       Mon Sep 30 15:26:21 1996
> ***************
> *** 1937,1943 ****
> 
>         if (divisor != 0) {
>                 outb(iobase + com_cfcr, cfcr | CFCR_DLAB);
> !               outb(iobase + com_dlbl, divisor & 0xFF);
> !               outb(iobase + com_dlbh, (u_int) divisor >> 8);
>         }
>         outb(iobase + com_cfcr, com->cfcr_image = cfcr);
> --- 1956,1975 ----
> 
>         if (divisor != 0) {
> +               u_char dlbh;
> +               u_char dlbl;
> +
>                 outb(iobase + com_cfcr, cfcr | CFCR_DLAB);
> !               /*
> !                * Only set the divisor registers if they would change,
> !                * since on some 16550 incompatibles (UMC8669F), setting
> !                * them while input is arriving them loses sync until
> !                * data stops arriving.
> !                */
> !               dlbl = divisor & 0xFF;
> !               if (inb(iobase + com_dlbl) != dlbl)
> !                       outb(iobase + com_dlbl, dlbl);
> !               dlbh = (u_int) divisor >> 8;
> !               if (inb(iobase + com_dlbh) != dlbh)
> !                       outb(iobase + com_dlbh, dlbh);
>         }
>         outb(iobase + com_cfcr, com->cfcr_image = cfcr);
> --
> Bruce Evans  bde@zeta.org.au

Some time ago I posted a message on freebsd-hackers containing a more
suffisticated
patch. This patch checks if the new baudrate is different from the old
one, if not
so the speed is set, otherwise the speed is left at the old (and new)
value.
(I mailed it as rene@freeze.iaf.nl; this was a patch to FreeBSD 2.1)

--- _   _  _ __  _
|- |_| |- |-  / |-  Rene de Vries                              
revr@cadre.nl
|  |\  |_ |_ /_ |_  Cayenne Software Inc., European Operations, PD,
Delft, NL