Re: [RFC PATCH] tty: serial: core: Only invoke ->start_tx() if there is data to send

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux