Skip to content

Commit 885e9e2

Browse files
Yuan Kangherbertx
authored andcommitted
crypto: caam - structure renaming
caam_ctx.key_phys to key_dma caam_alg_template supports multiple algorithm types listed in union, which requires cases for different types in function caam_alg_alloc Signed-off-by: Yuan Kang <[email protected]> Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent 0e47930 commit 885e9e2

File tree

1 file changed

+43
-21
lines changed

1 file changed

+43
-21
lines changed

drivers/crypto/caam/caamalg.c

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ struct caam_ctx {
8787
u32 class2_alg_type;
8888
u32 alg_op;
8989
u8 *key;
90-
dma_addr_t key_phys;
90+
dma_addr_t key_dma;
9191
unsigned int enckeylen;
9292
unsigned int split_key_len;
9393
unsigned int split_key_pad_len;
@@ -263,9 +263,9 @@ static int build_sh_desc_ipsec(struct caam_ctx *ctx)
263263
ctx->split_key_pad_len, ctx->enckeylen,
264264
ctx->enckeylen, CLASS_1 | KEY_DEST_CLASS_REG);
265265
} else {
266-
append_key(sh_desc, ctx->key_phys, ctx->split_key_len, CLASS_2 |
266+
append_key(sh_desc, ctx->key_dma, ctx->split_key_len, CLASS_2 |
267267
KEY_DEST_MDHA_SPLIT | KEY_ENC);
268-
append_key(sh_desc, ctx->key_phys + ctx->split_key_pad_len,
268+
append_key(sh_desc, ctx->key_dma + ctx->split_key_pad_len,
269269
ctx->enckeylen, CLASS_1 | KEY_DEST_CLASS_REG);
270270
}
271271

@@ -342,9 +342,9 @@ static int aead_setkey(struct crypto_aead *aead,
342342
/* postpend encryption key to auth split key */
343343
memcpy(ctx->key + ctx->split_key_pad_len, key + authkeylen, enckeylen);
344344

345-
ctx->key_phys = dma_map_single(jrdev, ctx->key, ctx->split_key_pad_len +
345+
ctx->key_dma = dma_map_single(jrdev, ctx->key, ctx->split_key_pad_len +
346346
enckeylen, DMA_TO_DEVICE);
347-
if (dma_mapping_error(jrdev, ctx->key_phys)) {
347+
if (dma_mapping_error(jrdev, ctx->key_dma)) {
348348
dev_err(jrdev, "unable to map key i/o memory\n");
349349
kfree(ctx->key);
350350
return -ENOMEM;
@@ -359,7 +359,7 @@ static int aead_setkey(struct crypto_aead *aead,
359359

360360
ret = build_sh_desc_ipsec(ctx);
361361
if (ret) {
362-
dma_unmap_single(jrdev, ctx->key_phys, ctx->split_key_pad_len +
362+
dma_unmap_single(jrdev, ctx->key_dma, ctx->split_key_pad_len +
363363
enckeylen, DMA_TO_DEVICE);
364364
kfree(ctx->key);
365365
}
@@ -884,11 +884,20 @@ static int aead_givencrypt(struct aead_givcrypt_request *areq)
884884
return init_aead_job(edesc, req, OP_ALG_ENCRYPT, aead_encrypt_done);
885885
}
886886

887+
#define template_aead template_u.aead
887888
struct caam_alg_template {
888889
char name[CRYPTO_MAX_ALG_NAME];
889890
char driver_name[CRYPTO_MAX_ALG_NAME];
890891
unsigned int blocksize;
891-
struct aead_alg aead;
892+
u32 type;
893+
union {
894+
struct ablkcipher_alg ablkcipher;
895+
struct aead_alg aead;
896+
struct blkcipher_alg blkcipher;
897+
struct cipher_alg cipher;
898+
struct compress_alg compress;
899+
struct rng_alg rng;
900+
} template_u;
892901
u32 class1_alg_type;
893902
u32 class2_alg_type;
894903
u32 alg_op;
@@ -900,7 +909,8 @@ static struct caam_alg_template driver_algs[] = {
900909
.name = "authenc(hmac(sha1),cbc(aes))",
901910
.driver_name = "authenc-hmac-sha1-cbc-aes-caam",
902911
.blocksize = AES_BLOCK_SIZE,
903-
.aead = {
912+
.type = CRYPTO_ALG_TYPE_AEAD,
913+
.template_aead = {
904914
.setkey = aead_setkey,
905915
.setauthsize = aead_setauthsize,
906916
.encrypt = aead_encrypt,
@@ -918,7 +928,8 @@ static struct caam_alg_template driver_algs[] = {
918928
.name = "authenc(hmac(sha256),cbc(aes))",
919929
.driver_name = "authenc-hmac-sha256-cbc-aes-caam",
920930
.blocksize = AES_BLOCK_SIZE,
921-
.aead = {
931+
.type = CRYPTO_ALG_TYPE_AEAD,
932+
.template_aead = {
922933
.setkey = aead_setkey,
923934
.setauthsize = aead_setauthsize,
924935
.encrypt = aead_encrypt,
@@ -937,7 +948,8 @@ static struct caam_alg_template driver_algs[] = {
937948
.name = "authenc(hmac(sha512),cbc(aes))",
938949
.driver_name = "authenc-hmac-sha512-cbc-aes-caam",
939950
.blocksize = AES_BLOCK_SIZE,
940-
.aead = {
951+
.type = CRYPTO_ALG_TYPE_AEAD,
952+
.template_aead = {
941953
.setkey = aead_setkey,
942954
.setauthsize = aead_setauthsize,
943955
.encrypt = aead_encrypt,
@@ -956,7 +968,8 @@ static struct caam_alg_template driver_algs[] = {
956968
.name = "authenc(hmac(sha1),cbc(des3_ede))",
957969
.driver_name = "authenc-hmac-sha1-cbc-des3_ede-caam",
958970
.blocksize = DES3_EDE_BLOCK_SIZE,
959-
.aead = {
971+
.type = CRYPTO_ALG_TYPE_AEAD,
972+
.template_aead = {
960973
.setkey = aead_setkey,
961974
.setauthsize = aead_setauthsize,
962975
.encrypt = aead_encrypt,
@@ -974,7 +987,8 @@ static struct caam_alg_template driver_algs[] = {
974987
.name = "authenc(hmac(sha256),cbc(des3_ede))",
975988
.driver_name = "authenc-hmac-sha256-cbc-des3_ede-caam",
976989
.blocksize = DES3_EDE_BLOCK_SIZE,
977-
.aead = {
990+
.type = CRYPTO_ALG_TYPE_AEAD,
991+
.template_aead = {
978992
.setkey = aead_setkey,
979993
.setauthsize = aead_setauthsize,
980994
.encrypt = aead_encrypt,
@@ -993,7 +1007,8 @@ static struct caam_alg_template driver_algs[] = {
9931007
.name = "authenc(hmac(sha512),cbc(des3_ede))",
9941008
.driver_name = "authenc-hmac-sha512-cbc-des3_ede-caam",
9951009
.blocksize = DES3_EDE_BLOCK_SIZE,
996-
.aead = {
1010+
.type = CRYPTO_ALG_TYPE_AEAD,
1011+
.template_aead = {
9971012
.setkey = aead_setkey,
9981013
.setauthsize = aead_setauthsize,
9991014
.encrypt = aead_encrypt,
@@ -1012,7 +1027,8 @@ static struct caam_alg_template driver_algs[] = {
10121027
.name = "authenc(hmac(sha1),cbc(des))",
10131028
.driver_name = "authenc-hmac-sha1-cbc-des-caam",
10141029
.blocksize = DES_BLOCK_SIZE,
1015-
.aead = {
1030+
.type = CRYPTO_ALG_TYPE_AEAD,
1031+
.template_aead = {
10161032
.setkey = aead_setkey,
10171033
.setauthsize = aead_setauthsize,
10181034
.encrypt = aead_encrypt,
@@ -1030,7 +1046,8 @@ static struct caam_alg_template driver_algs[] = {
10301046
.name = "authenc(hmac(sha256),cbc(des))",
10311047
.driver_name = "authenc-hmac-sha256-cbc-des-caam",
10321048
.blocksize = DES_BLOCK_SIZE,
1033-
.aead = {
1049+
.type = CRYPTO_ALG_TYPE_AEAD,
1050+
.template_aead = {
10341051
.setkey = aead_setkey,
10351052
.setauthsize = aead_setauthsize,
10361053
.encrypt = aead_encrypt,
@@ -1049,7 +1066,8 @@ static struct caam_alg_template driver_algs[] = {
10491066
.name = "authenc(hmac(sha512),cbc(des))",
10501067
.driver_name = "authenc-hmac-sha512-cbc-des-caam",
10511068
.blocksize = DES_BLOCK_SIZE,
1052-
.aead = {
1069+
.type = CRYPTO_ALG_TYPE_AEAD,
1070+
.template_aead = {
10531071
.setkey = aead_setkey,
10541072
.setauthsize = aead_setauthsize,
10551073
.encrypt = aead_encrypt,
@@ -1107,8 +1125,8 @@ static void caam_cra_exit(struct crypto_tfm *tfm)
11071125
desc_bytes(ctx->sh_desc), DMA_TO_DEVICE);
11081126
kfree(ctx->sh_desc);
11091127

1110-
if (!dma_mapping_error(ctx->jrdev, ctx->key_phys))
1111-
dma_unmap_single(ctx->jrdev, ctx->key_phys,
1128+
if (!dma_mapping_error(ctx->jrdev, ctx->key_dma))
1129+
dma_unmap_single(ctx->jrdev, ctx->key_dma,
11121130
ctx->split_key_pad_len + ctx->enckeylen,
11131131
DMA_TO_DEVICE);
11141132
kfree(ctx->key);
@@ -1175,12 +1193,16 @@ static struct caam_crypto_alg *caam_alg_alloc(struct device *ctrldev,
11751193
alg->cra_init = caam_cra_init;
11761194
alg->cra_exit = caam_cra_exit;
11771195
alg->cra_priority = CAAM_CRA_PRIORITY;
1178-
alg->cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC;
11791196
alg->cra_blocksize = template->blocksize;
11801197
alg->cra_alignmask = 0;
1181-
alg->cra_type = &crypto_aead_type;
11821198
alg->cra_ctxsize = sizeof(struct caam_ctx);
1183-
alg->cra_u.aead = template->aead;
1199+
alg->cra_flags = CRYPTO_ALG_ASYNC | template->type;
1200+
switch (template->type) {
1201+
case CRYPTO_ALG_TYPE_AEAD:
1202+
alg->cra_type = &crypto_aead_type;
1203+
alg->cra_aead = template->template_aead;
1204+
break;
1205+
}
11841206

11851207
t_alg->class1_alg_type = template->class1_alg_type;
11861208
t_alg->class2_alg_type = template->class2_alg_type;

0 commit comments

Comments
 (0)