Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/dev/ic/com.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/dev/ic/com.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.264.2.2 retrieving revision 1.265 diff -u -p -r1.264.2.2 -r1.265 --- src/sys/dev/ic/com.c 2007/11/21 21:19:33 1.264.2.2 +++ src/sys/dev/ic/com.c 2007/10/19 11:59:49 1.265 @@ -1,4 +1,4 @@ -/* $NetBSD: com.c,v 1.264.2.2 2007/11/21 21:19:33 bouyer Exp $ */ +/* $NetBSD: com.c,v 1.265 2007/10/19 11:59:49 ad Exp $ */ /*- * Copyright (c) 1998, 1999, 2004 The NetBSD Foundation, Inc. @@ -73,7 +73,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.264.2.2 2007/11/21 21:19:33 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.265 2007/10/19 11:59:49 ad Exp $"); #include "opt_com.h" #include "opt_ddb.h" @@ -1660,8 +1660,16 @@ comstart(struct tty *tp) goto out; if (sc->sc_tx_stopped) goto out; - if (!ttypull(tp)) - goto out; + + if (tp->t_outq.c_cc <= tp->t_lowat) { + if (ISSET(tp->t_state, TS_ASLEEP)) { + CLR(tp->t_state, TS_ASLEEP); + wakeup(&tp->t_outq); + } + selwakeup(&tp->t_wsel); + if (tp->t_outq.c_cc == 0) + goto out; + } /* Grab the first contiguous region of buffer space. */ {