net: ll_temac: Handle DMA halt condition caused by buffer underrun
authorEsben Haabendal <esben@geanix.com>
Fri, 21 Feb 2020 06:47:58 +0000 (07:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 21 Mar 2020 07:11:51 +0000 (08:11 +0100)
commit74886a6d9de8a53ed4fee501a35da222974cf66e
treeeda18b5c5fab22496f694a1bb669b42673e76dc2
parentc2cffaea4fde4f0938aacf5c11413750421e58ea
net: ll_temac: Handle DMA halt condition caused by buffer underrun

[ Upstream commit 1d63b8d66d146deaaedbe16c80de105f685ea012 ]

The SDMA engine used by TEMAC halts operation when it has finished
processing of the last buffer descriptor in the buffer ring.
Unfortunately, no interrupt event is generated when this happens,
so we need to setup another mechanism to make sure DMA operation is
restarted when enough buffers have been added to the ring.

Fixes: 92744989533c ("net: add Xilinx ll_temac device driver")
Signed-off-by: Esben Haabendal <esben@geanix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/xilinx/ll_temac.h
drivers/net/ethernet/xilinx/ll_temac_main.c