mbox series

[net-next,0/2] net: axienet: fix DMA Tx error

Message ID 20220613034202.3777248-1-andy.chiu@sifive.com (mailing list archive)
Headers show
Series net: axienet: fix DMA Tx error | expand

Message

Andy Chiu June 13, 2022, 3:42 a.m. UTC
We ran into multiple DMA TX errors while writing files over a network
block device running on top of a DMA-connected AXI Ethernet device on
64-bit RISC-V machines. The errors indicated that the DMA had fetched a
null descriptor and we found that the reason for this is that AXI DMA had
unexpectedly processed a partially updated tail descriptor pointer. To
fix it, we suggest that the driver should use one 64-bit write instead
of two 32-bit writes to perform such update if possible. For those
archectures where double-word load/stores are unavailable, e.g. 32-bit
archectures, force a driver probe failure if the driver finds 64-bit
capability on DMA.

Andy Chiu (2):
  net: axienet: make the 64b addresable DMA depends on 64b archectures
  net: axienet: Use iowrite64 to write all 64b descriptor pointers

 drivers/net/ethernet/xilinx/xilinx_axienet.h  | 51 +++++++++++++++++++
 .../net/ethernet/xilinx/xilinx_axienet_main.c | 28 ++--------
 2 files changed, 55 insertions(+), 24 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org June 13, 2022, 11:40 a.m. UTC | #1
Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Mon, 13 Jun 2022 11:42:00 +0800 you wrote:
> We ran into multiple DMA TX errors while writing files over a network
> block device running on top of a DMA-connected AXI Ethernet device on
> 64-bit RISC-V machines. The errors indicated that the DMA had fetched a
> null descriptor and we found that the reason for this is that AXI DMA had
> unexpectedly processed a partially updated tail descriptor pointer. To
> fix it, we suggest that the driver should use one 64-bit write instead
> of two 32-bit writes to perform such update if possible. For those
> archectures where double-word load/stores are unavailable, e.g. 32-bit
> archectures, force a driver probe failure if the driver finds 64-bit
> capability on DMA.
> 
> [...]

Here is the summary with links:
  - [net-next,1/2] net: axienet: make the 64b addresable DMA depends on 64b archectures
    https://git.kernel.org/netdev/net/c/00be43a74ca2
  - [net-next,2/2] net: axienet: Use iowrite64 to write all 64b descriptor pointers
    https://git.kernel.org/netdev/net/c/b690f8df6497

You are awesome, thank you!