On Fri, Dec 22, 2017 at 08:06:03PM +1100, Herbert Xu wrote: > On Fri, Dec 22, 2017 at 09:41:48AM +0100, Corentin Labbe wrote: > > > > It's you that was suggesting using crypto_async_request: > > https://www.mail-archive.com/linux-kernel@xxxxxxxxxxxxxxx/msg1474434.html > > "The only wart with this scheme is that the drivers end up seeing > > struct crypto_async_request and will need to convert that to the > > respective request types but I couldn't really find a better way." > > > > So I wait for any suggestion. > > The core engine code obviously will use the base type but it should > not be exposed to the driver authors. IOW all exposed API should > take the final types such as aead_request before casting it. > For driver->engine calls(crypto_finalize_request/crypto_transfer_request_to_engine) it's easy. But I do not see how to do it for crypto_engine_op appart re-introducing the big if/then/else that you didnt want. Or do you agree to set the request parameter for crypto_engine_op(prepare_request/unprepare_request/do_one_request) to void * ? Regards