From b2a8ab668c1b0a25071182d7aeaff2b6bfb977aa Mon Sep 17 00:00:00 2001 From: hadaq Date: Wed, 19 Oct 2011 16:38:26 +0000 Subject: [PATCH] update --- pexor/kernel-module/pexor_trb.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pexor/kernel-module/pexor_trb.c b/pexor/kernel-module/pexor_trb.c index 0e6af13..1255e52 100644 --- a/pexor/kernel-module/pexor_trb.c +++ b/pexor/kernel-module/pexor_trb.c @@ -1355,13 +1355,13 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata *priv, unsigned long arg) for (sg_ctr = 0; sg_ctr < priv->dma.nr_sglist; sg_ctr++) { unsigned int loops = 0; - mb(); /* sync current sg-entry to Device */ dma_sync_single_for_device(priv->class_dev, sg_dma_address(&priv->dma.sglist[sg_ctr]), sg_dma_len(&priv->dma.sglist[sg_ctr]), DMA_FROM_DEVICE); - + mb(); + iowrite32(sg_dma_address(&priv->dma.sglist[sg_ctr]), priv->pexor.dma_dest); iowrite32(sg_dma_len(&priv->dma.sglist[sg_ctr]) / 4, @@ -1397,6 +1397,14 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata *priv, unsigned long arg) goto OUT_IOCTL; } } + + /* sync current sg-entry to CPU */ + dma_sync_single_for_cpu(priv->class_dev, + sg_dma_address(&priv->dma.sglist[sg_ctr]), + sg_dma_len(&priv->dma.sglist[sg_ctr]), + DMA_FROM_DEVICE); + mb(); + /* Check for kernel timeout */ if (loops == PEXOR_DMA_MAXPOLLS) { pexor_msg(KERN_ERR @@ -1411,12 +1419,6 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata *priv, unsigned long arg) goto OUT_IOCTL; } - /* sync current sg-entry to CPU */ - dma_sync_single_for_cpu(priv->class_dev, - sg_dma_address(&priv->dma.sglist[sg_ctr]), - sg_dma_len(&priv->dma.sglist[sg_ctr]), - DMA_FROM_DEVICE); - mb(); /* Check status: do we need another dma for data */ if (dmaSize > 0) { -- 2.43.0