diff mbox

[v1,1/1] etraxfs_dma: Dont forward zero-length payload to clients

Message ID 1455623612-24398-1-git-send-email-edgar.iglesias@gmail.com
State New
Headers show

Commit Message

Edgar E. Iglesias Feb. 16, 2016, 11:53 a.m. UTC
From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
---
 hw/dma/etraxfs_dma.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

Edgar E. Iglesias Feb. 19, 2016, 11:53 p.m. UTC | #1
On Tue, Feb 16, 2016 at 12:53:32PM +0100, Edgar E. Iglesias wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>

Applied


> 
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> ---
>  hw/dma/etraxfs_dma.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/dma/etraxfs_dma.c b/hw/dma/etraxfs_dma.c
> index 9cbb165..d5650eb 100644
> --- a/hw/dma/etraxfs_dma.c
> +++ b/hw/dma/etraxfs_dma.c
> @@ -440,13 +440,16 @@ static int channel_out_run(struct fs_dma_ctrl *ctrl, int c)
>  		D(printf("channel %d pushes %x %u bytes eop=%u\n", c,
>  		         saved_data_buf, len, out_eop));
>  
> -		if (ctrl->channels[c].client->client.push)
> -			ctrl->channels[c].client->client.push(
> -				ctrl->channels[c].client->client.opaque,
> -				buf, len, out_eop);
> -		else
> +		if (ctrl->channels[c].client->client.push) {
> +                        if (len > 0) {
> +				ctrl->channels[c].client->client.push(
> +					ctrl->channels[c].client->client.opaque,
> +					buf, len, out_eop);
> +			}
> +		} else {
>  			printf("WARNING: DMA ch%d dataloss,"
>  			       " no attached client.\n", c);
> +		}
>  
>  		saved_data_buf += len;
>  
> -- 
> 1.9.1
>
diff mbox

Patch

diff --git a/hw/dma/etraxfs_dma.c b/hw/dma/etraxfs_dma.c
index 9cbb165..d5650eb 100644
--- a/hw/dma/etraxfs_dma.c
+++ b/hw/dma/etraxfs_dma.c
@@ -440,13 +440,16 @@  static int channel_out_run(struct fs_dma_ctrl *ctrl, int c)
 		D(printf("channel %d pushes %x %u bytes eop=%u\n", c,
 		         saved_data_buf, len, out_eop));
 
-		if (ctrl->channels[c].client->client.push)
-			ctrl->channels[c].client->client.push(
-				ctrl->channels[c].client->client.opaque,
-				buf, len, out_eop);
-		else
+		if (ctrl->channels[c].client->client.push) {
+                        if (len > 0) {
+				ctrl->channels[c].client->client.push(
+					ctrl->channels[c].client->client.opaque,
+					buf, len, out_eop);
+			}
+		} else {
 			printf("WARNING: DMA ch%d dataloss,"
 			       " no attached client.\n", c);
+		}
 
 		saved_data_buf += len;