public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Paul Fulghum <paulkf@microgate.com>
To: Kouji Toriatama <toriatama@inter7.jp>
Cc: linux-kernel@vger.kernel.org
Subject: Re: PPP with PCMCIA modem stalls on 2.6.10 or later
Date: Wed, 15 Feb 2006 10:02:48 -0600	[thread overview]
Message-ID: <1140019368.3119.12.camel@amdx2.microgate.com> (raw)
In-Reply-To: <20060215.221135.121135595.toriatama@inter7.jp>

On Wed, 2006-02-15 at 22:11 +0900, Kouji Toriatama wrote:

> Are there any other tests I can do to pin down the problem?

Try the following patch, and report the syslog output.

This may be lost receive data due to full flip buffer.
2.6.9 would try processing rx data in the ISR if the
flip buffer was full. This violated locking requirements
and was changed to only process rx data in scheduled work.
This can slow the processing of data.

Also try using the setserial utility to set
the 'low_latency' option for the device. That should
operate the same as 2.6.9 (which can be dangerous).

--

The improved flip buffering code in 2.6.16-rc3
should also prevent any loss of data. If possible,
try 2.6.16-rc3.

Thanks,
Paul

--- linux-2.6.15/drivers/serial/8250.c	2006-01-02 21:21:10.000000000 -0600
+++ b/drivers/serial/8250.c	2006-02-15 09:52:26.000000000 -0600
@@ -1143,6 +1143,7 @@ receive_chars(struct uart_8250_port *up,
 		/* The following is not allowed by the tty layer and
 		   unsafe. It should be fixed ASAP */
 		if (unlikely(tty->flip.count >= TTY_FLIPBUF_SIZE)) {
+			printk("receive_chars:flip full:low_latency=%d\n", tty->low_latency);
 			if (tty->low_latency) {
 				spin_unlock(&up->port.lock);
 				tty_flip_buffer_push(tty);
@@ -1152,6 +1153,8 @@ receive_chars(struct uart_8250_port *up,
 			 * If this failed then we will throw away the
 			 * bytes but must do so to clear interrupts
 			 */
+			if (tty->flip.count >= TTY_FLIPBUF_SIZE)
+				printk("receive_chars:flip full:discard char\n");
 		}
 		ch = serial_inp(up, UART_RX);
 		flag = TTY_NORMAL;
@@ -1169,6 +1172,7 @@ receive_chars(struct uart_8250_port *up,
 
 		if (unlikely(lsr & (UART_LSR_BI | UART_LSR_PE |
 				    UART_LSR_FE | UART_LSR_OE))) {
+			printk("receive_chars:char error lsr=%02X\n", lsr);
 			/*
 			 * For statistics only
 			 */




  reply	other threads:[~2006-02-15 16:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-13 14:16 PPP with PCMCIA modem stalls on 2.6.10 or later Kouji Toriatama
2006-02-13 20:51 ` Paul Fulghum
2006-02-14 15:57   ` Kouji Toriatama
2006-02-14 17:12     ` Paul Fulghum
2006-02-15 13:11       ` Kouji Toriatama
2006-02-15 16:02         ` Paul Fulghum [this message]
2006-02-16 16:09           ` Kouji Toriatama
2006-02-16 16:24             ` Paul Fulghum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1140019368.3119.12.camel@amdx2.microgate.com \
    --to=paulkf@microgate.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=toriatama@inter7.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox