diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2015-01-22 12:40:27 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-02-02 18:11:26 (GMT) |
commit | 9119fba0cfeda6d415c9f068df66838a104b87cb (patch) | |
tree | 53dd37bcf84ef8d0bd4e461b177b34c601d03844 /drivers/tty/serial/8250 | |
parent | a39d1da11b675b2cc2e0ffaafa8952ac7c3bd104 (diff) | |
download | linux-9119fba0cfeda6d415c9f068df66838a104b87cb.tar.xz |
serial: 8250_dma: don't bother DMA with small transfers
If we would like to send amount of data less than FIFO size we better would do
this via PIO mode. Otherwise the overhead could be significant.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/8250')
-rw-r--r-- | drivers/tty/serial/8250/8250_dma.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c index e508939..21d01a4 100644 --- a/drivers/tty/serial/8250/8250_dma.c +++ b/drivers/tty/serial/8250/8250_dma.c @@ -80,6 +80,10 @@ int serial8250_tx_dma(struct uart_8250_port *p) return 0; dma->tx_size = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); + if (dma->tx_size < p->port.fifosize) { + ret = -EINVAL; + goto err; + } desc = dmaengine_prep_slave_single(dma->txchan, dma->tx_addr + xmit->tail, |