chcr: Add support for Inline IPSec
register xfrmdev_ops callbacks, Send IPsec tunneled data to HW for inline processing. The driver use hardware crypto accelerator to encrypt and generate ICV for the transmitted packet in Inline mode. Signed-off-by: Atul Gupta <atul.gupta@chelsio.com> Signed-off-by: Harsh Jain <harsh@chelsio.com> Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -210,8 +210,6 @@ struct dsgl_walk {
|
||||
struct phys_sge_pairs *to;
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct chcr_gcm_ctx {
|
||||
u8 ghash_h[AEAD_H_SIZE];
|
||||
};
|
||||
@@ -227,8 +225,6 @@ struct __aead_ctx {
|
||||
struct chcr_authenc_ctx authenc[0];
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct chcr_aead_ctx {
|
||||
__be32 key_ctx_hdr;
|
||||
unsigned int enckey_len;
|
||||
@@ -240,8 +236,6 @@ struct chcr_aead_ctx {
|
||||
struct __aead_ctx ctx[0];
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct hmac_ctx {
|
||||
struct crypto_shash *base_hash;
|
||||
u8 ipad[CHCR_HASH_MAX_BLOCK_SIZE_128];
|
||||
@@ -307,44 +301,29 @@ typedef struct sk_buff *(*create_wr_t)(struct aead_request *req,
|
||||
int size,
|
||||
unsigned short op_type);
|
||||
|
||||
static int chcr_aead_op(struct aead_request *req_base,
|
||||
unsigned short op_type,
|
||||
int size,
|
||||
create_wr_t create_wr_fn);
|
||||
static inline int get_aead_subtype(struct crypto_aead *aead);
|
||||
static int chcr_handle_cipher_resp(struct ablkcipher_request *req,
|
||||
unsigned char *input, int err);
|
||||
static void chcr_verify_tag(struct aead_request *req, u8 *input, int *err);
|
||||
static int chcr_aead_dma_map(struct device *dev, struct aead_request *req,
|
||||
unsigned short op_type);
|
||||
static void chcr_aead_dma_unmap(struct device *dev, struct aead_request
|
||||
*req, unsigned short op_type);
|
||||
static inline void chcr_add_aead_dst_ent(struct aead_request *req,
|
||||
struct cpl_rx_phys_dsgl *phys_cpl,
|
||||
unsigned int assoclen,
|
||||
unsigned short op_type,
|
||||
unsigned short qid);
|
||||
static inline void chcr_add_aead_src_ent(struct aead_request *req,
|
||||
struct ulptx_sgl *ulptx,
|
||||
unsigned int assoclen,
|
||||
unsigned short op_type);
|
||||
static inline void chcr_add_cipher_src_ent(struct ablkcipher_request *req,
|
||||
struct ulptx_sgl *ulptx,
|
||||
struct cipher_wr_param *wrparam);
|
||||
static int chcr_cipher_dma_map(struct device *dev,
|
||||
struct ablkcipher_request *req);
|
||||
static void chcr_cipher_dma_unmap(struct device *dev,
|
||||
struct ablkcipher_request *req);
|
||||
static inline void chcr_add_cipher_dst_ent(struct ablkcipher_request *req,
|
||||
struct cpl_rx_phys_dsgl *phys_cpl,
|
||||
struct cipher_wr_param *wrparam,
|
||||
unsigned short qid);
|
||||
void chcr_verify_tag(struct aead_request *req, u8 *input, int *err);
|
||||
int chcr_aead_dma_map(struct device *dev, struct aead_request *req,
|
||||
unsigned short op_type);
|
||||
void chcr_aead_dma_unmap(struct device *dev, struct aead_request *req,
|
||||
unsigned short op_type);
|
||||
void chcr_add_aead_dst_ent(struct aead_request *req,
|
||||
struct cpl_rx_phys_dsgl *phys_cpl,
|
||||
unsigned int assoclen, unsigned short op_type,
|
||||
unsigned short qid);
|
||||
void chcr_add_aead_src_ent(struct aead_request *req, struct ulptx_sgl *ulptx,
|
||||
unsigned int assoclen, unsigned short op_type);
|
||||
void chcr_add_cipher_src_ent(struct ablkcipher_request *req,
|
||||
struct ulptx_sgl *ulptx,
|
||||
struct cipher_wr_param *wrparam);
|
||||
int chcr_cipher_dma_map(struct device *dev, struct ablkcipher_request *req);
|
||||
void chcr_cipher_dma_unmap(struct device *dev, struct ablkcipher_request *req);
|
||||
void chcr_add_cipher_dst_ent(struct ablkcipher_request *req,
|
||||
struct cpl_rx_phys_dsgl *phys_cpl,
|
||||
struct cipher_wr_param *wrparam,
|
||||
unsigned short qid);
|
||||
int sg_nents_len_skip(struct scatterlist *sg, u64 len, u64 skip);
|
||||
static inline void chcr_add_hash_src_ent(struct ahash_request *req,
|
||||
struct ulptx_sgl *ulptx,
|
||||
struct hash_wr_param *param);
|
||||
static inline int chcr_hash_dma_map(struct device *dev,
|
||||
struct ahash_request *req);
|
||||
static inline void chcr_hash_dma_unmap(struct device *dev,
|
||||
struct ahash_request *req);
|
||||
void chcr_add_hash_src_ent(struct ahash_request *req, struct ulptx_sgl *ulptx,
|
||||
struct hash_wr_param *param);
|
||||
int chcr_hash_dma_map(struct device *dev, struct ahash_request *req);
|
||||
void chcr_hash_dma_unmap(struct device *dev, struct ahash_request *req);
|
||||
#endif /* __CHCR_CRYPTO_H__ */
|
||||
|
Reference in New Issue
Block a user