2015-10-09 15:14:56

by Frederic Danis

[permalink] [raw]
Subject: [PATCH v3] Revert "serial: 8250_dma: don't bother DMA with small transfers"

This reverts commit 9119fba0cfeda6d415c9f068df66838a104b87cb.

This commit prevents from sending "big" file using Bluetooth.
When sending a lot of data quickly through the Bluetooth interface, and
after a variable amount of data sent, transfer fails with error:
kernel: [ 415.247453] Bluetooth: hci0 hardware error 0x00

Found on T100TA.

After reverting this commit, send works fine for any file size.

Signed-off-by: Frederic Danis <[email protected]>
Fixes: 9119fba0cfed (serial: 8250_dma: don't bother DMA with small
transfers)
Cc: [email protected]
---
v3: Add Fixes and Cc tags
v2: Re-send to correct people

drivers/tty/serial/8250/8250_dma.c | 4 ----
1 file changed, 4 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c
index b503071..78259d3 100644
--- a/drivers/tty/serial/8250/8250_dma.c
+++ b/drivers/tty/serial/8250/8250_dma.c
@@ -77,10 +77,6 @@ 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,
--
1.9.1


2015-10-13 14:10:48

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v3] Revert "serial: 8250_dma: don't bother DMA with small transfers"

On Fri, 2015-10-09 at 17:14 +0200, Frederic Danis wrote:
> This reverts commit 9119fba0cfeda6d415c9f068df66838a104b87cb.
>
> This commit prevents from sending "big" file using Bluetooth.
> When sending a lot of data quickly through the Bluetooth interface,
> and
> after a variable amount of data sent, transfer fails with error:
> kernel: [ 415.247453] Bluetooth: hci0 hardware error 0x00
>
> Found on T100TA.
>
> After reverting this commit, send works fine for any file size.
>
> Signed-off-by: Frederic Danis <[email protected]>
> Fixes: 9119fba0cfed (serial: 8250_dma: don't bother DMA with small
> transfers)
> Cc: [email protected]

Acked-by: Andy Shevchenko <[email protected]>

> ---
> v3: Add Fixes and Cc tags
> v2: Re-send to correct people
>
> drivers/tty/serial/8250/8250_dma.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_dma.c
> b/drivers/tty/serial/8250/8250_dma.c
> index b503071..78259d3 100644
> --- a/drivers/tty/serial/8250/8250_dma.c
> +++ b/drivers/tty/serial/8250/8250_dma.c
> @@ -77,10 +77,6 @@ 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,

--
Andy Shevchenko <[email protected]>
Intel Finland Oy

2015-10-13 11:22:49

by Heikki Krogerus

[permalink] [raw]
Subject: Re: [PATCH v3] Revert "serial: 8250_dma: don't bother DMA with small transfers"

On Fri, Oct 09, 2015 at 05:14:56PM +0200, Frederic Danis wrote:
> This reverts commit 9119fba0cfeda6d415c9f068df66838a104b87cb.
>
> This commit prevents from sending "big" file using Bluetooth.
> When sending a lot of data quickly through the Bluetooth interface, and
> after a variable amount of data sent, transfer fails with error:
> kernel: [ 415.247453] Bluetooth: hci0 hardware error 0x00
>
> Found on T100TA.
>
> After reverting this commit, send works fine for any file size.
>
> Signed-off-by: Frederic Danis <[email protected]>
> Fixes: 9119fba0cfed (serial: 8250_dma: don't bother DMA with small
> transfers)
> Cc: [email protected]

FWIW:

Reviewed-by: Heikki Krogerus <[email protected]>

> ---
> v3: Add Fixes and Cc tags
> v2: Re-send to correct people
>
> drivers/tty/serial/8250/8250_dma.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c
> index b503071..78259d3 100644
> --- a/drivers/tty/serial/8250/8250_dma.c
> +++ b/drivers/tty/serial/8250/8250_dma.c
> @@ -77,10 +77,6 @@ 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,
> --
> 1.9.1

--
heikki