On 09/11/2014 04:03 AM, Sebastian Andrzej Siewior wrote: > On 09/10/2014 09:52 PM, Peter Hurley wrote: >> The serial core can't assume that start_tx() does not need invoking >> because hardware that can stop_tx() with data in the transmitter >> won't restart if the ring buffer is empty but data is still in the >> transmitter. [Note that the 16C950 port type does this in the 8250 driver.] > > oh, not sure how I missed this… But now that I look at this, it is also > that ->x_char that could be use for flow control which would have to be > sent even with an empty xmit buffer. > And 8250 in DMA mode does not look at x_char at all. But it would be > better if it would, right? However if the TX side does a 2 KiB transfer > not sure what should be done… Yeah, 8250 dma doesn't send x_char at all; at a minimum 8250 dma should at least send the x_char. The preferred solution is to: 1. Stop DMA 2. Enable interrupt mode, which will automatically send the x_char 3. Restart DMA (presumably from the interrupt handler if UART_LSR_THRE) The issue is whether 8250 dma hardware in general can stop and restart dma without losing where the dma transfer was. Regards, Peter Hurley -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html