I thought I'd give people a chance to jump on this before I opened a PR on it.
I'm currently using a Cyclades board at 115200 to talk to my PII laptop with a 16550A UART on board via a null modem cable. I'm trying to run PPP over the link with crtscts set, although I see the same problems using programs other than PPP. I stuck a printf() at line 2113 of /usr/src/sys/i386/isa/sio.c to see if CRTS_IFLOW was being turned on, whereas CRTS_IFLOW is the input half of crtscts. I managed to get the printf, so I'm assuming that sio is being advised to do RTS input flow control. However, when I start running data, I get silo overflows. Sometimes its more frequent than others, but its enough to keep most of the packets from going through the link. I have a breakout box on the line, as well as detectors in the Cyclades driver for sensing line state change, and RTS never drops on the 16550A. It just happily overflows. I realize that 99% of the time, sio is used with a modem. Therefore, also being a modem tester, I realize that its rare to completely saturate a 115200bps link between the modem and the UART in the PC (we have exactly one test case with highly-compressible data where this happens reliably), so I suspect that this problem may go unnoticed in many cases, simply because you don't fill the FIFO. I also went so far as to check individual RS232 signals via TIOCMSET to make sure that the port functioned as commanded. It did so. So, I suspect the problem is that the driver is not correctly driving flow control. I will therefore start to dive in to the problem to isolate it. However, I figured I'd give everyone a chance to comment before I filed a PR. -Brian To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message