I am developing a driver for a multiport serial card under Solaris x86.
One of the integration tests is giving me a problem. The test involves
connecting two ports with a null-modem cable, cat'ing a test file out
to one port, cat'ing the other port to a receive file and then comparing
files. This works fine with hardware and software flow control at speeds
up to 115.2kbps, but sometimes at 230.4kbps and invariably at 460.8kbps
blocks of data are missing.
According to gathered stats, the tx port is sending the correct number
of chars. On the receive side, the correct number of chars are dumped
into a ring buffer at rx interrupt time and a polling function later
puts the correct number of chars into msg blocks and send them upstream.
Neither canput or putq (rq ) ever indicate any problem.
This happens with and without ldterm and ttcompat modules pushed.
Is it possible that the stream head is silently discarding msg blocks?
Any other advice?
"Boing" said Zebedee.