Date: Wed, 3 Sep 2003 23:42:36 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 37484 for review Message-ID: <200309040642.h846gaDI065704@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=37484 Change 37484 by marcel@marcel_nfs on 2003/09/03 23:42:28 Disable input flow control using CTS. I think the problem is that we're writing the status (ie parity error or framing error) into the receive FIFO. As such, we can only receive half as much characters than when we don't do that. The threshold at which RTS is deasserted is 28. Of course this assumes that we can write 32 characters in the FIFO. But if you write status bytes as wellm the FIFO is full at 16. Hence, we never reach the threshold. The alternative is to not write the status byte into the RFIFO, but that means that we won't know which character or characters in the FIFO have parity errors and/or framing errors. We just get an interrupt to tell us that the UART has detected some error, which given all the non-deterministic latencies is not informative. The Linux driver apparently marks ALL characters with the parity or framing error. I think that's rather brain- dead. Affected files ... .. //depot/projects/uart/dev/uart/uart_dev_sab82532.c#22 edit Differences ... ==== //depot/projects/uart/dev/uart/uart_dev_sab82532.c#22 (text+ko) ==== @@ -556,7 +556,7 @@ break; case SAB_VSTR_V_32: vstr = "v3.2"; - sc->sc_hwiflow = 1; + sc->sc_hwiflow = 0; /* CTS doesn't work with RFC:RFDF. */ sc->sc_hwoflow = 1; break; default:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309040642.h846gaDI065704>