diff -urN linux-2.0.36/drivers/net/ppp.c linux/drivers/net/ppp.c
--- linux-2.0.36/drivers/net/ppp.c	Tue Feb 13 17:30:17 2001
+++ linux/drivers/net/ppp.c	Tue Feb 13 17:40:06 2001
@@ -1103,6 +1103,31 @@
 			++flags;
 		}
 /*
+ * Handles software flow control of output.
+ */
+		if (I_IXON(tty)) {
+			if (chr == STOP_CHAR(tty)) {
+				if (!tty->stopped) {
+					tty->stopped = 1;
+					if (tty->driver.stop)
+						(tty->driver.stop)(tty);
+				}
+				continue;
+			}
+			if (chr == START_CHAR(tty)) {
+				if (tty->stopped) {
+					tty->stopped = 0;
+					if (tty->driver.start)
+						(tty->driver.start)(tty);
+					if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
+					    tty->ldisc.write_wakeup)
+						(tty->ldisc.write_wakeup)(tty);
+					wake_up_interruptible(&tty->write_wait);
+				}
+				continue;
+			}
+		}
+/*
  * Set the flags for 8 data bits and no parity.
  *
  * Actually, it sets the flags for d7 being 0/1 and parity being even/odd
