diff mbox series

dma: ti: k3-udma: Fix channel hang on teardown

Message ID 20230308041257.2061537-1-vigneshr@ti.com
State Accepted
Commit f8461352b84ea66ad03d3231a5056643ab73515d
Delegated to: Tom Rini
Headers show
Series dma: ti: k3-udma: Fix channel hang on teardown | expand

Commit Message

Raghavendra, Vignesh March 8, 2023, 4:12 a.m. UTC
Setting RX flow error handling will stall the channel until descriptors
are available to move RX data. Setting this bit causes issues when
tearing down ethernet DMA channel at the end of TFTP transfer as
unrelated network packets can cause teardown to stall indefinitely waiting
for driver to queue add more desc leading to channel hang with error
logs:
udma_stop_dev2mem TIMEOUT !
udma_stop_dev2mem: peer not stopped TIMEOUT !
udma_stop_dev2mem TIMEOUT !

Fix this by clearing rx_error_handling similar to how its done for UDMA
as part of udma_alloc_rchan_sci_req()

This fixes occasional TFTP Failures seen when downloading multiple files
one after the other on AM64/AM62 SoCs.

Fixes: 9a92851c33e8 ("dma: ti: k3-udma: Add BCDMA and PKTDMA support")
Reported-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
---
 drivers/dma/ti/k3-udma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Tom Rini March 22, 2023, 6:03 p.m. UTC | #1
On Wed, Mar 08, 2023 at 09:42:57AM +0530, Vignesh Raghavendra wrote:

> Setting RX flow error handling will stall the channel until descriptors
> are available to move RX data. Setting this bit causes issues when
> tearing down ethernet DMA channel at the end of TFTP transfer as
> unrelated network packets can cause teardown to stall indefinitely waiting
> for driver to queue add more desc leading to channel hang with error
> logs:
> udma_stop_dev2mem TIMEOUT !
> udma_stop_dev2mem: peer not stopped TIMEOUT !
> udma_stop_dev2mem TIMEOUT !
> 
> Fix this by clearing rx_error_handling similar to how its done for UDMA
> as part of udma_alloc_rchan_sci_req()
> 
> This fixes occasional TFTP Failures seen when downloading multiple files
> one after the other on AM64/AM62 SoCs.
> 
> Fixes: 9a92851c33e8 ("dma: ti: k3-udma: Add BCDMA and PKTDMA support")
> Reported-by: Nishanth Menon <nm@ti.com>
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index d92b96443694..05c3a4311ced 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -2150,7 +2150,7 @@  static int pktdma_tisci_rx_channel_config(struct udma_chan *uc)
 		flow_req.rx_psinfo_present = 1;
 	else
 		flow_req.rx_psinfo_present = 0;
-	flow_req.rx_error_handling = 1;
+	flow_req.rx_error_handling = 0;
 
 	ret = tisci_ops->rx_flow_cfg(tisci_rm->tisci, &flow_req);