Hi,
I'm working on DMA support for SHA1/MD5 driver and there are some issues
for comments regarding this.
The SHA1/MD5 digest can be processed in one or three passes. When the
total length for input is known previously, we can configure the
REG_CTRL just once and copy all the data into its buffer (64 bytes per
iteration). This is the one-pass process, where we can configure the DMA
just once too and transfer all the data. The element size is set to 32
bits, the frame size is set to 16 elements and the block size has as
many frames as needed.
Unfortunately, the crypto api does not inform the total length always.
Some times, the dia_update function is called two or more times and it
has to continue the digest process from the previous dia_update. In this
case, the three passes is used. Now, for each 64 bytes written on input
digest buffer, the SHA_CTRL must be configured. The main problem here is
the block size should be set to 1 frame only. I don't think DMA is a
good option for the three passes digest process.
I'm currently trying to mix the one and three passes. For each
dia_update iteration, I'm trying to continue a prior hash but using the
one-shot mode. Without success for now. At least with the documentation
I have and with my tests results, it's not possible. Does Anyone know
how to implement something like this? Or so, is anyone sure it can't be
implemented this way?
Any comments would be welcome.
BR,
David Cohen
-
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html