Skip site navigation (1)Skip section navigation (2)
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>