Hi All, I seem to get much the same whether using af_alg or tcrypt to poke the support for ahashes that I just added to our driver. Taking the af_alg path as that is the one I've chased further. We return -EINPROGRESS (along with it seems lots of other ahash implementations) if we have some data in flight. The hardware is asynchronous and we don't currently bother to check if it is already done or not (may do so later as an optimization). In hash_sendmsg (algif_hash.c) we have err = crypto_wait_req(crypto_ahash_update(&ctx->req), &ctx->wait); Now crypto_wait does a wait_for_completion if it gets -EINPROGRESS from the crypto_ahash_update call. Given hash_sendmsg is called from a socket we can't do a wait_for_completion here safely. I note for the various wait calls in the equivalent skcipher code we drop through with an error if they would otherwise sleep. I'm guessing that I'm missing something! As far as I can tell the first few drivers I looked at caam_hash and crypto4xx do exactly the same thing I am doing (superficially anyway)... Anyone have any thoughts? Thanks, Jonathan