From c2331dd0cafe7c483525af7ef87e03386aeee14a Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Tue, 10 Feb 2015 15:26:35 +0100 Subject: Better handle empty_detected flag --- dma/ipe.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dma/ipe.c b/dma/ipe.c index b692e0d..0b415e8 100644 --- a/dma/ipe.c +++ b/dma/ipe.c @@ -405,6 +405,9 @@ int dma_ipe_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin memcpy(&cur, &start, sizeof(struct timeval)); while (((*last_written_addr_ptr == 0)||(ctx->last_read_addr == (*last_written_addr_ptr)))&&((wait == PCILIB_TIMEOUT_INFINITE)||(((cur.tv_sec - start.tv_sec)*1000000 + (cur.tv_usec - start.tv_usec)) < wait))) { usleep(10); +#ifdef IPEDMA_SUPPORT_EMPTY_DETECTED + if (*empty_detected_ptr) break; +#endif /* IPEDMA_SUPPORT_EMPTY_DETECTED */ gettimeofday(&cur, NULL); } @@ -412,7 +415,7 @@ int dma_ipe_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin if ((ctx->last_read_addr == (*last_written_addr_ptr))||(*last_written_addr_ptr == 0)) { #ifdef IPEDMA_SUPPORT_EMPTY_DETECTED //# ifdef IPEDMA_DEBUG - if ((wait)&&(*last_written_addr_ptr)) + if ((wait)&&(*last_written_addr_ptr)&&(!*empty_detected_ptr)) pcilib_warning("The empty_detected flag is not set, but no data arrived within %lu us\n", wait); //# endif /* IPEDMA_DEBUG */ #endif /* IPEDMA_SUPPORT_EMPTY_DETECTED */ -- cgit v1.2.3 From e43e5999f2af8b69185e0c627515cca755150418 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Tue, 10 Feb 2015 15:50:53 +0100 Subject: Only complain on empty_detected flag if debugging is one --- dma/ipe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dma/ipe.c b/dma/ipe.c index 0b415e8..f2d0f74 100644 --- a/dma/ipe.c +++ b/dma/ipe.c @@ -414,10 +414,10 @@ int dma_ipe_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin // Failing out if we exited on timeout if ((ctx->last_read_addr == (*last_written_addr_ptr))||(*last_written_addr_ptr == 0)) { #ifdef IPEDMA_SUPPORT_EMPTY_DETECTED -//# ifdef IPEDMA_DEBUG +# ifdef IPEDMA_DEBUG if ((wait)&&(*last_written_addr_ptr)&&(!*empty_detected_ptr)) pcilib_warning("The empty_detected flag is not set, but no data arrived within %lu us\n", wait); -//# endif /* IPEDMA_DEBUG */ +# endif /* IPEDMA_DEBUG */ #endif /* IPEDMA_SUPPORT_EMPTY_DETECTED */ return (ret&PCILIB_STREAMING_FAIL)?PCILIB_ERROR_TIMEOUT:0; } -- cgit v1.2.3