cryptodev: remove unused digest-appended feature

The cryptodev API had specified that if the digest address field was
left empty on an authentication operation, then the PMD would assume
the digest was appended to the source or destination data.
This case was not handled at all by most PMDs and incorrectly handled
by the QAT PMD.
As no bugs were raised, it is assumed to be not needed, so this patch
removes it, rather than add handling for the case on all PMDs.
The digest can still be appended to the data, but its
address must now be provided in the op.

Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: John Griffin <john.griffin@intel.com>
This commit is contained in:
Fiona Trahe 2016-11-17 17:33:17 +00:00 committed by Pablo de Lara
parent eb21185d6f
commit 50d7f314de
3 changed files with 4 additions and 26 deletions

View File

@ -439,6 +439,8 @@ void qat_alg_init_common_hdr(struct icp_qat_fw_comn_req_hdr *header,
proto);
ICP_QAT_FW_LA_UPDATE_STATE_SET(header->serv_specif_flags,
ICP_QAT_FW_LA_NO_UPDATE_STATE);
ICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(header->serv_specif_flags,
ICP_QAT_FW_LA_NO_DIGEST_IN_BUFFER);
}
int qat_alg_aead_session_create_content_desc_cipher(struct qat_session *cdesc,

View File

@ -955,7 +955,6 @@ qat_write_hw_desc_entry(struct rte_crypto_op *op, uint8_t *out_msg)
uint32_t cipher_len = 0, cipher_ofs = 0;
uint32_t auth_len = 0, auth_ofs = 0;
uint32_t min_ofs = 0;
uint32_t digest_appended = 1;
uint64_t buf_start = 0;
@ -1068,14 +1067,7 @@ qat_write_hw_desc_entry(struct rte_crypto_op *op, uint8_t *out_msg)
}
min_ofs = auth_ofs;
if (op->sym->auth.digest.phys_addr) {
ICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(
qat_req->comn_hdr.serv_specif_flags,
ICP_QAT_FW_LA_NO_DIGEST_IN_BUFFER);
auth_param->auth_res_addr =
op->sym->auth.digest.phys_addr;
digest_appended = 0;
}
auth_param->auth_res_addr = op->sym->auth.digest.phys_addr;
auth_param->u1.aad_adr = op->sym->auth.aad.phys_addr;
@ -1126,14 +1118,6 @@ qat_write_hw_desc_entry(struct rte_crypto_op *op, uint8_t *out_msg)
(cipher_param->cipher_offset + cipher_param->cipher_length)
: (auth_param->auth_off + auth_param->auth_len);
if (do_auth && digest_appended) {
if (ctx->auth_op == ICP_QAT_HW_AUTH_GENERATE)
qat_req->comn_mid.dst_length
+= op->sym->auth.digest.length;
else
qat_req->comn_mid.src_length
+= op->sym->auth.digest.length;
}
/* out-of-place operation (OOP) */
if (unlikely(op->sym->m_dst != NULL)) {

View File

@ -541,8 +541,7 @@ struct rte_crypto_sym_op {
struct {
uint8_t *data;
/**< If this member of this structure is set this is a
* pointer to the location where the digest result
/**< This points to the location where the digest result
* should be inserted (in the case of digest generation)
* or where the purported digest exists (in the case of
* digest verification).
@ -560,13 +559,6 @@ struct rte_crypto_sym_op {
* @note
* For GCM (@ref RTE_CRYPTO_AUTH_AES_GCM), for
* "digest result" read "authentication tag T".
*
* If this member is not set the digest result is
* understood to be in the destination buffer for
* digest generation, and in the source buffer for
* digest verification. The location of the digest
* result in this case is immediately following the
* region over which the digest is computed.
*/
phys_addr_t phys_addr;
/**< Physical address of digest */