diff --git a/fpga/include/villas/fpga/ips/dma.hpp b/fpga/include/villas/fpga/ips/dma.hpp index 41a1fe115..d8b609794 100644 --- a/fpga/include/villas/fpga/ips/dma.hpp +++ b/fpga/include/villas/fpga/ips/dma.hpp @@ -55,7 +55,7 @@ public: bool readComplete() { return hasScatterGather() ? readCompleteSG() : readCompleteSimple(); } - bool pingPong(const MemoryBlock& src, const MemoryBlock& dst, size_t len); + bool memcpy(const MemoryBlock& src, const MemoryBlock& dst, size_t len); inline bool hasScatterGather() const diff --git a/fpga/lib/ips/dma.cpp b/fpga/lib/ips/dma.cpp index 3a5878441..ed9f0a888 100644 --- a/fpga/lib/ips/dma.cpp +++ b/fpga/lib/ips/dma.cpp @@ -132,8 +132,14 @@ Dma::reset() bool -Dma::pingPong(const MemoryBlock& src, const MemoryBlock& dst, size_t len) +Dma::memcpy(const MemoryBlock& src, const MemoryBlock& dst, size_t len) { + if(len == 0) + return true; + + if(not connectLoopback()) + return false; + if(this->read(dst, len) == 0) return false; diff --git a/fpga/tests/dma.cpp b/fpga/tests/dma.cpp index 63c1c0470..cb6b722f6 100644 --- a/fpga/tests/dma.cpp +++ b/fpga/tests/dma.cpp @@ -55,7 +55,7 @@ Test(fpga, dma, .description = "DMA") cr_assert(len == lenRandom, "Failed to get random data"); /* Start transfer */ - cr_assert(dma.pingPong(src.getMemoryBlock(), dst.getMemoryBlock(), len), + cr_assert(dma.memcpy(src.getMemoryBlock(), dst.getMemoryBlock(), len), "DMA ping pong failed"); /* Compare data */