[HIFN]: Have HW invalidate src and dest descriptors after processing
authorPatrick McHardy <kaber@trash.net>
Wed, 7 May 2008 14:37:29 +0000 (22:37 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 10 Jul 2008 12:35:12 +0000 (20:35 +0800)
The descriptors need to be invalidated after processing for ring
cleanup to work properly and to avoid using an old destination
descriptor when the src and cmd descriptors are already set up
and the dst descriptor isn't.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Acked-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hifn_795x.c

index c9fe18d5348e98b5180f259faf8eb4f99e4eb061..459d283b94c56d9814c84ea4f6217d1dd1f7bd63 100644 (file)
@@ -1297,7 +1297,7 @@ static int hifn_setup_src_desc(struct hifn_device *dev, struct page *page,
 
        dma->srcr[idx].p = __cpu_to_le32(addr);
        dma->srcr[idx].l = __cpu_to_le32(size | HIFN_D_VALID |
-                       HIFN_D_MASKDONEIRQ | HIFN_D_NOINVALID | HIFN_D_LAST);
+                       HIFN_D_MASKDONEIRQ | HIFN_D_LAST);
 
        if (++idx == HIFN_D_SRC_RSIZE) {
                dma->srcr[idx].l = __cpu_to_le32(HIFN_D_VALID |
@@ -1325,7 +1325,7 @@ static void hifn_setup_res_desc(struct hifn_device *dev)
                        HIFN_D_VALID | HIFN_D_LAST);
        /*
         * dma->resr[dma->resi].l = __cpu_to_le32(HIFN_MAX_RESULT | HIFN_D_VALID |
-        *                                      HIFN_D_LAST | HIFN_D_NOINVALID);
+        *                                      HIFN_D_LAST);
         */
 
        if (++dma->resi == HIFN_D_RES_RSIZE) {
@@ -1354,12 +1354,12 @@ static void hifn_setup_dst_desc(struct hifn_device *dev, struct page *page,
        idx = dma->dsti;
        dma->dstr[idx].p = __cpu_to_le32(addr);
        dma->dstr[idx].l = __cpu_to_le32(size | HIFN_D_VALID |
-                       HIFN_D_MASKDONEIRQ | HIFN_D_NOINVALID | HIFN_D_LAST);
+                       HIFN_D_MASKDONEIRQ | HIFN_D_LAST);
 
        if (++idx == HIFN_D_DST_RSIZE) {
                dma->dstr[idx].l = __cpu_to_le32(HIFN_D_VALID |
                                HIFN_D_JUMP | HIFN_D_MASKDONEIRQ |
-                               HIFN_D_LAST | HIFN_D_NOINVALID);
+                               HIFN_D_LAST);
                idx = 0;
        }
        dma->dsti = idx;