numam-dpdk/drivers/crypto/bcmfs/bcmfs_sym_engine.h
Vikas Gupta 492a19a046 crypto/bcmfs: add crypto HW module
Add crypto h/w module to process crypto op. Crypto op is processed via
sym_engine module before submitting the crypto request to HW queues.

Signed-off-by: Vikas Gupta <vikas.gupta@broadcom.com>
Signed-off-by: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
2020-10-14 22:22:06 +02:00

116 lines
3.3 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2020 Broadcom
* All rights reserved.
*/
#ifndef _BCMFS_SYM_ENGINE_H_
#define _BCMFS_SYM_ENGINE_H_
#include <rte_crypto_sym.h>
#include "bcmfs_dev_msg.h"
#include "bcmfs_sym_defs.h"
#include "bcmfs_sym_req.h"
/* structure to hold element's arrtibutes */
struct fsattr {
void *va;
uint64_t pa;
uint64_t sz;
};
#define fsattr_va(__ptr) ((__ptr)->va)
#define fsattr_pa(__ptr) ((__ptr)->pa)
#define fsattr_sz(__ptr) ((__ptr)->sz)
/*
* Macros for Crypto h/w constraints
*/
#define BCMFS_CRYPTO_AES_BLOCK_SIZE 16
#define BCMFS_CRYPTO_AES_MIN_KEY_SIZE 16
#define BCMFS_CRYPTO_AES_MAX_KEY_SIZE 32
#define BCMFS_CRYPTO_DES_BLOCK_SIZE 8
#define BCMFS_CRYPTO_DES_KEY_SIZE 8
#define BCMFS_CRYPTO_3DES_BLOCK_SIZE 8
#define BCMFS_CRYPTO_3DES_KEY_SIZE (3 * 8)
#define BCMFS_CRYPTO_MD5_DIGEST_SIZE 16
#define BCMFS_CRYPTO_MD5_BLOCK_SIZE 64
#define BCMFS_CRYPTO_SHA1_DIGEST_SIZE 20
#define BCMFS_CRYPTO_SHA1_BLOCK_SIZE 64
#define BCMFS_CRYPTO_SHA224_DIGEST_SIZE 28
#define BCMFS_CRYPTO_SHA224_BLOCK_SIZE 64
#define BCMFS_CRYPTO_SHA256_DIGEST_SIZE 32
#define BCMFS_CRYPTO_SHA256_BLOCK_SIZE 64
#define BCMFS_CRYPTO_SHA384_DIGEST_SIZE 48
#define BCMFS_CRYPTO_SHA384_BLOCK_SIZE 128
#define BCMFS_CRYPTO_SHA512_DIGEST_SIZE 64
#define BCMFS_CRYPTO_SHA512_BLOCK_SIZE 128
#define BCMFS_CRYPTO_SHA3_224_DIGEST_SIZE (224 / 8)
#define BCMFS_CRYPTO_SHA3_224_BLOCK_SIZE (200 - 2 * \
BCMFS_CRYPTO_SHA3_224_DIGEST_SIZE)
#define BCMFS_CRYPTO_SHA3_256_DIGEST_SIZE (256 / 8)
#define BCMFS_CRYPTO_SHA3_256_BLOCK_SIZE (200 - 2 * \
BCMFS_CRYPTO_SHA3_256_DIGEST_SIZE)
#define BCMFS_CRYPTO_SHA3_384_DIGEST_SIZE (384 / 8)
#define BCMFS_CRYPTO_SHA3_384_BLOCK_SIZE (200 - 2 * \
BCMFS_CRYPTO_SHA3_384_DIGEST_SIZE)
#define BCMFS_CRYPTO_SHA3_512_DIGEST_SIZE (512 / 8)
#define BCMFS_CRYPTO_SHA3_512_BLOCK_SIZE (200 - 2 * \
BCMFS_CRYPTO_SHA3_512_DIGEST_SIZE)
enum bcmfs_crypto_aes_cipher_key {
BCMFS_CRYPTO_AES128 = 16,
BCMFS_CRYPTO_AES192 = 24,
BCMFS_CRYPTO_AES256 = 32,
};
int
bcmfs_crypto_build_cipher_req(struct bcmfs_sym_request *req,
enum rte_crypto_cipher_algorithm c_algo,
enum rte_crypto_cipher_operation cop,
struct fsattr *src, struct fsattr *dst,
struct fsattr *key, struct fsattr *iv);
int
bcmfs_crypto_build_auth_req(struct bcmfs_sym_request *req,
enum rte_crypto_auth_algorithm a_algo,
enum rte_crypto_auth_operation aop,
struct fsattr *src, struct fsattr *dst,
struct fsattr *mac, struct fsattr *key,
struct fsattr *iv);
int
bcmfs_crypto_build_chain_request(struct bcmfs_sym_request *req,
enum rte_crypto_cipher_algorithm c_algo,
enum rte_crypto_cipher_operation cop,
enum rte_crypto_auth_algorithm a_algo,
enum rte_crypto_auth_operation aop,
struct fsattr *src, struct fsattr *dst,
struct fsattr *cipher_key,
struct fsattr *auth_key,
struct fsattr *iv, struct fsattr *aad,
struct fsattr *digest, bool cipher_first);
int
bcmfs_crypto_build_aead_request(struct bcmfs_sym_request *req,
enum rte_crypto_aead_algorithm ae_algo,
enum rte_crypto_aead_operation aeop,
struct fsattr *src, struct fsattr *dst,
struct fsattr *key, struct fsattr *iv,
struct fsattr *aad, struct fsattr *digest);
#endif /* _BCMFS_SYM_ENGINE_H_ */