serial driver bug: new discoveries

Ulrich Windl (ulrich.windl@rz.uni-regensburg.de)
Fri, 29 Jan 1999 09:34:48 +0100


Hi,

I spent last evening hacking around in the serial driver doing things like:

diff -u -r1.1.1.4.2.1 serial.c
--- serial.c 1999/01/26 21:44:43 1.1.1.4.2.1
+++ serial.c 1999/01/28 20:08:36
@@ -97,7 +97,7 @@

/* Set of debugging defines */

-#undef SERIAL_DEBUG_INTR
+#define SERIAL_DEBUG_INTR
#undef SERIAL_DEBUG_OPEN
#undef SERIAL_DEBUG_FLOW
#undef SERIAL_DEBUG_RS_WAIT_UNTIL_SENT
@@ -2850,6 +2850,10 @@

ret += sprintf(buf+ret, " tx:%d rx:%d",
state->icount.tx, state->icount.rx);
+
+ ret += sprintf(buf+ret, " [MSR:%02x IER:%02x IIR:%02x]",
+ status & 0xff, info->IER & 0xff,
+ serial_inp(info, UART_IIR) & 0xff);

if (state->icount.frame)
ret += sprintf(buf+ret, " fe:%d", state->icount.frame);

That way I found out that receive interrupts are not enabled when DTR is
set and CTS cleared. When you put the signals in the other direction it
works! Of course CLOCAL and CREAD were both set. IMHO if CLOCAL is set the
driver should NOT care about the modem status lines...

BTW: Reading the IIR in my patch above might be dangerous as it could reset
the interrupt request...

Regards,
Ulrich

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/