Linux cryptographic layer development
 help / color / mirror / Atom feed
* [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet
@ 2008-12-18 18:35 Lee Nipper
  2008-12-20  6:10 ` Herbert Xu
  0 siblings, 1 reply; 2+ messages in thread
From: Lee Nipper @ 2008-12-18 18:35 UTC (permalink / raw)
  To: linux-crypto; +Cc: Kim Phillips

Previous commit for interrupt mitigation moved the done interrupt
acknowlegement from the isr to the talitos_done tasklet.
This patch moves the done interrupt acknowledgement back
into the isr so that done interrupts will always be acknowledged.
This covers the case for acknowledging interrupts for channel done processing
that has actually already been completed by the tasklet prior to fielding
a pending interrupt.

Signed-off-by: Lee Nipper <lee.nipper@freescale.com>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
---
This patch applies to
git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git

 drivers/crypto/talitos.c |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index c2294f2..d14c68d 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -330,11 +330,9 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
 
 		/* descriptors with their done bits set don't get the error */
 		rmb();
-		if ((request->desc->hdr & DESC_HDR_DONE) == DESC_HDR_DONE) {
+		if ((request->desc->hdr & DESC_HDR_DONE) == DESC_HDR_DONE)
 			status = 0;
-			/* Ack each pkt completed on channel */
-			out_be32(priv->reg + TALITOS_ICR, (1 << (ch * 2)));
-		} else
+		else
 			if (!error)
 				break;
 			else
@@ -575,17 +573,13 @@ static irqreturn_t talitos_interrupt(int irq, void *data)
 
 	isr = in_be32(priv->reg + TALITOS_ISR);
 	isr_lo = in_be32(priv->reg + TALITOS_ISR_LO);
+	/* Acknowledge interrupt */
+	out_be32(priv->reg + TALITOS_ICR, isr);
+	out_be32(priv->reg + TALITOS_ICR_LO, isr_lo);
 
-	if (unlikely((isr & ~TALITOS_ISR_CHDONE) || isr_lo)) {
-		/*
-		 * Acknowledge error interrupts here.
-		 * Done interrupts are ack'ed as part of done_task.
-		 */
-		out_be32(priv->reg + TALITOS_ICR, isr);
-		out_be32(priv->reg + TALITOS_ICR_LO, isr_lo);

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet
  2008-12-18 18:35 [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet Lee Nipper
@ 2008-12-20  6:10 ` Herbert Xu
  0 siblings, 0 replies; 2+ messages in thread
From: Herbert Xu @ 2008-12-20  6:10 UTC (permalink / raw)
  To: Lee Nipper; +Cc: linux-crypto, Kim Phillips

On Thu, Dec 18, 2008 at 06:35:05PM +0000, Lee Nipper wrote:
> Previous commit for interrupt mitigation moved the done interrupt
> acknowlegement from the isr to the talitos_done tasklet.
> This patch moves the done interrupt acknowledgement back
> into the isr so that done interrupts will always be acknowledged.
> This covers the case for acknowledging interrupts for channel done processing
> that has actually already been completed by the tasklet prior to fielding
> a pending interrupt.
> 
> Signed-off-by: Lee Nipper <lee.nipper@freescale.com>
> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>

Patch applied.  Thanks Lee!
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-12-20  6:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-18 18:35 [PATCH] crypto: talitos - ack done interrupt in isr instead of tasklet Lee Nipper
2008-12-20  6:10 ` Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox