aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/si
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1996-05-05 17:35:19 +0000
committerPeter Wemm <peter@FreeBSD.org>1996-05-05 17:35:19 +0000
commit3461d589f27adbc21d3313e25d31e0313a89c3b8 (patch)
tree36004e0ce832bfe93e23df91eb9c6c564dc9aa76 /sys/dev/si
parent34914e50d4db960571da370dbd1f5939537a5dbd (diff)
Notes
Diffstat (limited to 'sys/dev/si')
-rw-r--r--sys/dev/si/si.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sys/dev/si/si.c b/sys/dev/si/si.c
index e60a0872ed73..a607fdda00ce 100644
--- a/sys/dev/si/si.c
+++ b/sys/dev/si/si.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.c,v 1.37 1996/03/28 14:28:51 scrappy Exp $
+ * $Id: si.c,v 1.38 1996/05/05 17:09:04 peter Exp $
*/
#ifndef lint
@@ -1891,16 +1891,27 @@ siintr(int unit)
}
/*
- * Process read characters if not skipped above
+ * If the tty input buffers are blocked, stop emptying
+ * the incoming buffers and let the auto flow control
+ * assert..
*/
- c = ccbp->hi_rxipos - ccbp->hi_rxopos;
- if (c == 0) {
+ if (tp->t_state & TS_TBLOCK) {
goto end_rx;
}
+ /*
+ * Process read characters if not skipped above
+ */
op = ccbp->hi_rxopos;
ip = ccbp->hi_rxipos;
+ c = ip - op;
+ if (c == 0) {
+ goto end_rx;
+ }
+
n = c & 0xff;
+ if (n > 250)
+ n = 250;
DPRINT((pp, DBG_INTR, "n = %d, op = %d, ip = %d\n",
n, op, ip));