Commit 26c3af6c authored by Tadeusz Struk's avatar Tadeusz Struk Committed by Herbert Xu

crypto: qat - Removed unneeded partial state

Removed additional bufer for HW state for partial requests, which are not going
to be supported.
Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 7752759d
...@@ -105,7 +105,7 @@ struct qat_alg_cd { ...@@ -105,7 +105,7 @@ struct qat_alg_cd {
#define MAX_AUTH_STATE_SIZE sizeof(struct icp_qat_hw_auth_algo_blk) #define MAX_AUTH_STATE_SIZE sizeof(struct icp_qat_hw_auth_algo_blk)
struct qat_auth_state { struct qat_auth_state {
uint8_t data[MAX_AUTH_STATE_SIZE]; uint8_t data[MAX_AUTH_STATE_SIZE + 64];
} __aligned(64); } __aligned(64);
struct qat_alg_session_ctx { struct qat_alg_session_ctx {
...@@ -113,10 +113,6 @@ struct qat_alg_session_ctx { ...@@ -113,10 +113,6 @@ struct qat_alg_session_ctx {
dma_addr_t enc_cd_paddr; dma_addr_t enc_cd_paddr;
struct qat_alg_cd *dec_cd; struct qat_alg_cd *dec_cd;
dma_addr_t dec_cd_paddr; dma_addr_t dec_cd_paddr;
struct qat_auth_state *auth_hw_state_enc;
dma_addr_t auth_state_enc_paddr;
struct qat_auth_state *auth_hw_state_dec;
dma_addr_t auth_state_dec_paddr;
struct icp_qat_fw_la_bulk_req enc_fw_req_tmpl; struct icp_qat_fw_la_bulk_req enc_fw_req_tmpl;
struct icp_qat_fw_la_bulk_req dec_fw_req_tmpl; struct icp_qat_fw_la_bulk_req dec_fw_req_tmpl;
struct qat_crypto_instance *inst; struct qat_crypto_instance *inst;
...@@ -150,8 +146,9 @@ static int qat_get_inter_state_size(enum icp_qat_hw_auth_algo qat_hash_alg) ...@@ -150,8 +146,9 @@ static int qat_get_inter_state_size(enum icp_qat_hw_auth_algo qat_hash_alg)
static int qat_alg_do_precomputes(struct icp_qat_hw_auth_algo_blk *hash, static int qat_alg_do_precomputes(struct icp_qat_hw_auth_algo_blk *hash,
struct qat_alg_session_ctx *ctx, struct qat_alg_session_ctx *ctx,
const uint8_t *auth_key, const uint8_t *auth_key,
unsigned int auth_keylen, uint8_t *auth_state) unsigned int auth_keylen)
{ {
struct qat_auth_state auth_state;
struct { struct {
struct shash_desc shash; struct shash_desc shash;
char ctx[crypto_shash_descsize(ctx->hash_tfm)]; char ctx[crypto_shash_descsize(ctx->hash_tfm)];
...@@ -161,12 +158,13 @@ static int qat_alg_do_precomputes(struct icp_qat_hw_auth_algo_blk *hash, ...@@ -161,12 +158,13 @@ static int qat_alg_do_precomputes(struct icp_qat_hw_auth_algo_blk *hash,
struct sha512_state sha512; struct sha512_state sha512;
int block_size = crypto_shash_blocksize(ctx->hash_tfm); int block_size = crypto_shash_blocksize(ctx->hash_tfm);
int digest_size = crypto_shash_digestsize(ctx->hash_tfm); int digest_size = crypto_shash_digestsize(ctx->hash_tfm);
uint8_t *ipad = auth_state; uint8_t *ipad = auth_state.data;
uint8_t *opad = ipad + block_size; uint8_t *opad = ipad + block_size;
__be32 *hash_state_out; __be32 *hash_state_out;
__be64 *hash512_state_out; __be64 *hash512_state_out;
int i, offset; int i, offset;
memset(auth_state.data, '\0', MAX_AUTH_STATE_SIZE + 64);
desc.shash.tfm = ctx->hash_tfm; desc.shash.tfm = ctx->hash_tfm;
desc.shash.flags = 0x0; desc.shash.flags = 0x0;
...@@ -298,10 +296,6 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx, ...@@ -298,10 +296,6 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx,
void *ptr = &req_tmpl->cd_ctrl; void *ptr = &req_tmpl->cd_ctrl;
struct icp_qat_fw_cipher_cd_ctrl_hdr *cipher_cd_ctrl = ptr; struct icp_qat_fw_cipher_cd_ctrl_hdr *cipher_cd_ctrl = ptr;
struct icp_qat_fw_auth_cd_ctrl_hdr *hash_cd_ctrl = ptr; struct icp_qat_fw_auth_cd_ctrl_hdr *hash_cd_ctrl = ptr;
struct icp_qat_fw_la_auth_req_params *auth_param =
(struct icp_qat_fw_la_auth_req_params *)
((char *)&req_tmpl->serv_specif_rqpars +
sizeof(struct icp_qat_fw_la_cipher_req_params));
/* CD setup */ /* CD setup */
cipher->aes.cipher_config.val = QAT_AES_HW_CONFIG_ENC(alg); cipher->aes.cipher_config.val = QAT_AES_HW_CONFIG_ENC(alg);
...@@ -312,8 +306,7 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx, ...@@ -312,8 +306,7 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx,
hash->sha.inner_setup.auth_counter.counter = hash->sha.inner_setup.auth_counter.counter =
cpu_to_be32(crypto_shash_blocksize(ctx->hash_tfm)); cpu_to_be32(crypto_shash_blocksize(ctx->hash_tfm));
if (qat_alg_do_precomputes(hash, ctx, keys->authkey, keys->authkeylen, if (qat_alg_do_precomputes(hash, ctx, keys->authkey, keys->authkeylen))
(uint8_t *)ctx->auth_hw_state_enc))
return -EFAULT; return -EFAULT;
/* Request setup */ /* Request setup */
...@@ -359,9 +352,6 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx, ...@@ -359,9 +352,6 @@ static int qat_alg_init_enc_session(struct qat_alg_session_ctx *ctx,
hash_cd_ctrl->inner_state2_offset = hash_cd_ctrl->hash_cfg_offset + hash_cd_ctrl->inner_state2_offset = hash_cd_ctrl->hash_cfg_offset +
((sizeof(struct icp_qat_hw_auth_setup) + ((sizeof(struct icp_qat_hw_auth_setup) +
round_up(hash_cd_ctrl->inner_state1_sz, 8)) >> 3); round_up(hash_cd_ctrl->inner_state1_sz, 8)) >> 3);
auth_param->u1.auth_partial_st_prefix = ctx->auth_state_enc_paddr +
sizeof(struct icp_qat_hw_auth_counter) +
round_up(hash_cd_ctrl->inner_state1_sz, 8);
ICP_QAT_FW_COMN_CURR_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_AUTH); ICP_QAT_FW_COMN_CURR_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_AUTH);
ICP_QAT_FW_COMN_NEXT_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_DRAM_WR); ICP_QAT_FW_COMN_NEXT_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_DRAM_WR);
return 0; return 0;
...@@ -399,8 +389,7 @@ static int qat_alg_init_dec_session(struct qat_alg_session_ctx *ctx, ...@@ -399,8 +389,7 @@ static int qat_alg_init_dec_session(struct qat_alg_session_ctx *ctx,
hash->sha.inner_setup.auth_counter.counter = hash->sha.inner_setup.auth_counter.counter =
cpu_to_be32(crypto_shash_blocksize(ctx->hash_tfm)); cpu_to_be32(crypto_shash_blocksize(ctx->hash_tfm));
if (qat_alg_do_precomputes(hash, ctx, keys->authkey, keys->authkeylen, if (qat_alg_do_precomputes(hash, ctx, keys->authkey, keys->authkeylen))
(uint8_t *)ctx->auth_hw_state_dec))
return -EFAULT; return -EFAULT;
/* Request setup */ /* Request setup */
...@@ -450,9 +439,6 @@ static int qat_alg_init_dec_session(struct qat_alg_session_ctx *ctx, ...@@ -450,9 +439,6 @@ static int qat_alg_init_dec_session(struct qat_alg_session_ctx *ctx,
hash_cd_ctrl->inner_state2_offset = hash_cd_ctrl->hash_cfg_offset + hash_cd_ctrl->inner_state2_offset = hash_cd_ctrl->hash_cfg_offset +
((sizeof(struct icp_qat_hw_auth_setup) + ((sizeof(struct icp_qat_hw_auth_setup) +
round_up(hash_cd_ctrl->inner_state1_sz, 8)) >> 3); round_up(hash_cd_ctrl->inner_state1_sz, 8)) >> 3);
auth_param->u1.auth_partial_st_prefix = ctx->auth_state_enc_paddr +
sizeof(struct icp_qat_hw_auth_counter) +
round_up(hash_cd_ctrl->inner_state1_sz, 8);
auth_param->auth_res_sz = digestsize; auth_param->auth_res_sz = digestsize;
ICP_QAT_FW_COMN_CURR_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_AUTH); ICP_QAT_FW_COMN_CURR_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_AUTH);
ICP_QAT_FW_COMN_NEXT_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_CIPHER); ICP_QAT_FW_COMN_NEXT_ID_SET(hash_cd_ctrl, ICP_QAT_FW_SLICE_CIPHER);
...@@ -512,10 +498,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key, ...@@ -512,10 +498,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key,
dev = &GET_DEV(ctx->inst->accel_dev); dev = &GET_DEV(ctx->inst->accel_dev);
memset(ctx->enc_cd, 0, sizeof(struct qat_alg_cd)); memset(ctx->enc_cd, 0, sizeof(struct qat_alg_cd));
memset(ctx->dec_cd, 0, sizeof(struct qat_alg_cd)); memset(ctx->dec_cd, 0, sizeof(struct qat_alg_cd));
memset(ctx->auth_hw_state_enc, 0,
sizeof(struct qat_auth_state));
memset(ctx->auth_hw_state_dec, 0,
sizeof(struct qat_auth_state));
memset(&ctx->enc_fw_req_tmpl, 0, memset(&ctx->enc_fw_req_tmpl, 0,
sizeof(struct icp_qat_fw_la_bulk_req)); sizeof(struct icp_qat_fw_la_bulk_req));
memset(&ctx->dec_fw_req_tmpl, 0, memset(&ctx->dec_fw_req_tmpl, 0,
...@@ -548,22 +530,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key, ...@@ -548,22 +530,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key,
spin_unlock(&ctx->lock); spin_unlock(&ctx->lock);
goto out_free_enc; goto out_free_enc;
} }
ctx->auth_hw_state_enc =
dma_zalloc_coherent(dev, sizeof(struct qat_auth_state),
&ctx->auth_state_enc_paddr,
GFP_ATOMIC);
if (!ctx->auth_hw_state_enc) {
spin_unlock(&ctx->lock);
goto out_free_dec;
}
ctx->auth_hw_state_dec =
dma_zalloc_coherent(dev, sizeof(struct qat_auth_state),
&ctx->auth_state_dec_paddr,
GFP_ATOMIC);
if (!ctx->auth_hw_state_dec) {
spin_unlock(&ctx->lock);
goto out_free_auth_enc;
}
} }
spin_unlock(&ctx->lock); spin_unlock(&ctx->lock);
if (qat_alg_init_sessions(ctx, key, keylen)) if (qat_alg_init_sessions(ctx, key, keylen))
...@@ -572,14 +538,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key, ...@@ -572,14 +538,6 @@ static int qat_alg_setkey(struct crypto_aead *tfm, const uint8_t *key,
return 0; return 0;
out_free_all: out_free_all:
dma_free_coherent(dev, sizeof(struct qat_auth_state),
ctx->auth_hw_state_dec, ctx->auth_state_dec_paddr);
ctx->auth_hw_state_dec = NULL;
out_free_auth_enc:
dma_free_coherent(dev, sizeof(struct qat_auth_state),
ctx->auth_hw_state_enc, ctx->auth_state_enc_paddr);
ctx->auth_hw_state_enc = NULL;
out_free_dec:
dma_free_coherent(dev, sizeof(struct qat_alg_cd), dma_free_coherent(dev, sizeof(struct qat_alg_cd),
ctx->dec_cd, ctx->dec_cd_paddr); ctx->dec_cd, ctx->dec_cd_paddr);
ctx->dec_cd = NULL; ctx->dec_cd = NULL;
...@@ -924,16 +882,6 @@ static void qat_alg_exit(struct crypto_tfm *tfm) ...@@ -924,16 +882,6 @@ static void qat_alg_exit(struct crypto_tfm *tfm)
if (ctx->dec_cd) if (ctx->dec_cd)
dma_free_coherent(dev, sizeof(struct qat_alg_cd), dma_free_coherent(dev, sizeof(struct qat_alg_cd),
ctx->dec_cd, ctx->dec_cd_paddr); ctx->dec_cd, ctx->dec_cd_paddr);
if (ctx->auth_hw_state_enc)
dma_free_coherent(dev, sizeof(struct qat_auth_state),
ctx->auth_hw_state_enc,
ctx->auth_state_enc_paddr);
if (ctx->auth_hw_state_dec)
dma_free_coherent(dev, sizeof(struct qat_auth_state),
ctx->auth_hw_state_dec,
ctx->auth_state_dec_paddr);
qat_crypto_put_instance(inst); qat_crypto_put_instance(inst);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment