Here's a potential serial problem with 2.2.14. It also still appears to
exist in 2.3.99-pre3.
In drivers/char/serial.c:transmit_chars() there is:
count = info->xmit_fifo_size;
do {
serial_out(info, UART_TX,
info->xmit_buf[info->xmit_tail++]);
info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1);
info->state->icount.tx++;
if (--info->xmit_cnt <= 0)
break;
} while (--count > 0);
However info->xmit_fifo_size is set to 16 for a 16550A, and the FIFO
threshold for speeds of 2400bps and above is 8. And it calls
transmit_chars() when the threshold is reached. This would mean the FIFO
would get overrun if it ever rose above the threshold and there were more
than 8 more chars waiting to be sent.
Is my analysis correct? If so, I would have thought more people would have
noticed :-/. Please CC me on replies, thanks.
Jifl
-- Red Hat, 35 Cambridge Place, Cambridge, UK. CB2 1NS Tel: +44 (1223) 728762 "Plan to be spontaneous tomorrow." || These opinions are all my own fault- 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/
This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:25 EST