Created attachment 144015 [details] Fix for discarding data when internal buffer full. For NS8250 family UARTs, svn 120146 - http://svnweb.freebsd.org/base?view=revision&revision=120146 - made a change to flush the UART if the kernel buffers are full. The commit message suggests this is because of how the read loop was structured. However, this change mad it so that if the internal FreeBSD buffer is full, it will drop all pending data... effectively punishing devices for having too much data buffered. At least one network exposed UART is capable of this. The attached patch doesn't clear the interrupt if the rx buffer is full by checking the buffer has space before reading LSR.
Keyword: patch or patch-ready – in lieu of summary line prefix: [patch] * bulk change for the keyword * summary lines may be edited manually (not in bulk). Keyword descriptions and search interface: <https://bugs.freebsd.org/bugzilla/describekeywords.cgi>
I no longer have this device, and #191266 is fixed.