patch-2.2.0-pre5 linux/drivers/char/serial.c
Next file: linux/drivers/isdn/hisax/config.c
Previous file: linux/drivers/char/mem.c
Back to the patch index
Back to the overall index
- Lines: 18
- Date:
Mon Jan 4 11:37:29 1999
- Orig file:
v2.2.0-pre4/linux/drivers/char/serial.c
- Orig date:
Mon Dec 28 15:00:52 1998
diff -u --recursive --new-file v2.2.0-pre4/linux/drivers/char/serial.c linux/drivers/char/serial.c
@@ -2356,6 +2356,17 @@
char_time = 1;
if (timeout)
char_time = MIN(char_time, timeout);
+ /*
+ * If the transmitter hasn't cleared in twice the approximate
+ * amount of time to send the entire FIFO, it probably won't
+ * ever clear. This assumes the UART isn't doing flow
+ * control, which is currently the case. Hence, if it ever
+ * takes longer than info->timeout, this is probably due to a
+ * UART bug of some kind. So, we clamp the timeout parameter at
+ * 2*info->timeout.
+ */
+ if (!timeout || timeout > 2*info->timeout)
+ timeout = 2*info->timeout;
#ifdef SERIAL_DEBUG_RS_WAIT_UNTIL_SENT
printk("In rs_wait_until_sent(%d) check=%lu...", timeout, char_time);
printk("jiff=%lu...", jiffies);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov