dmaengine Archive on lore.kernel.org
 help / color / Atom feed
From: Philipp Puschmann <philipp.puschmann@emlix.com>
To: linux-kernel@vger.kernel.org
Cc: vkoul@kernel.org, dan.j.williams@intel.com, shawnguo@kernel.org,
	s.hauer@pengutronix.de, kernel@pengutronix.de,
	festevam@gmail.com, linux-imx@nxp.com,
	gregkh@linuxfoundation.org, jslaby@suse.com,
	dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-serial@vger.kernel.org,
	Philipp Puschmann <philipp.puschmann@emlix.com>
Subject: [PATCH 3/4] serial: imx: adapt rx buffer and dma periods
Date: Wed, 11 Sep 2019 16:49:42 +0200
Message-ID: <20190911144943.21554-4-philipp.puschmann@emlix.com> (raw)
In-Reply-To: <20190911144943.21554-1-philipp.puschmann@emlix.com>

Using only 4 DMA periods for UART RX is very few if we have a high
frequency of small transfers - like in our case using Bluetooth with many
small packets via UART - causing many dma transfers but in each only
filling a fraction of a single buffer. Such a case may lead to the
situation that DMA RX transfer is triggered but no buffer is available.
While we have addressed the dma handling already we still want to avoid
UART RX FIFO overrun. So we decrease the size of the buffers and increase
their number and the total buffer size.

Signed-off-by: Philipp Puschmann <philipp.puschmann@emlix.com>
---
 drivers/tty/serial/imx.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 57d6e6ba556e..cdc51569237c 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1028,8 +1028,6 @@ static void imx_uart_timeout(struct timer_list *t)
 	}
 }
 
-#define RX_BUF_SIZE	(PAGE_SIZE)
-
 /*
  * There are two kinds of RX DMA interrupts(such as in the MX6Q):
  *   [1] the RX DMA buffer is full.
@@ -1112,7 +1110,8 @@ static void imx_uart_dma_rx_callback(void *data)
 }
 
 /* RX DMA buffer periods */
-#define RX_DMA_PERIODS 4
+#define RX_DMA_PERIODS	16
+#define RX_BUF_SIZE	(PAGE_SIZE / 4)
 
 static int imx_uart_start_rx_dma(struct imx_port *sport)
 {
-- 
2.23.0


  parent reply index

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-11 14:49 [PATCH 0/4] Fix UART DMA freezes for iMX6 Philipp Puschmann
2019-09-11 14:49 ` [PATCH 1/4] dmaengine: imx-sdma: fix buffer ownership Philipp Puschmann
2019-09-16 14:17   ` Lucas Stach
2019-09-19  9:20     ` Philipp Puschmann
2019-09-11 14:49 ` [PATCH 2/4] dmaengine: imx-sdma: fix dma freezes Philipp Puschmann
2019-09-16 14:22   ` Lucas Stach
2019-09-11 14:49 ` Philipp Puschmann [this message]
2019-09-16 14:24   ` [PATCH 3/4] serial: imx: adapt rx buffer and dma periods Lucas Stach
2019-09-11 14:49 ` [PATCH 4/4] dmaengine: imx-sdma: drop redundant variable Philipp Puschmann
2019-09-16 14:30   ` Lucas Stach
2019-09-12 15:31 ` [PATCH 0/4] Fix UART DMA freezes for iMX6 Fabio Estevam
2019-09-12 18:23 ` Fabio Estevam
2019-09-16 13:55   ` Philipp Puschmann
2019-09-16 14:00     ` Fabio Estevam
2019-09-16 14:10     ` [EXT] " Andy Duan
2019-09-16  8:02 ` Robin Gong
2019-09-16 13:41   ` Philipp Puschmann
     [not found] ` <20190919102319.23368-1-philipp.puschmann@emlix.com>
     [not found]   ` <20190919102319.23368-2-philipp.puschmann@emlix.com>
2019-09-19 10:27     ` [PATCH v2 1/3] dmaengine: imx-sdma: fix buffer ownership Lucas Stach
2019-09-19 10:34       ` Philipp Puschmann

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190911144943.21554-4-philipp.puschmann@emlix.com \
    --to=philipp.puschmann@emlix.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

dmaengine Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dmaengine/0 dmaengine/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dmaengine dmaengine/ https://lore.kernel.org/dmaengine \
		dmaengine@vger.kernel.org dmaengine@archiver.kernel.org
	public-inbox-index dmaengine

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.dmaengine


AGPL code for this site: git clone https://public-inbox.org/ public-inbox