xref: /dpdk/drivers/common/cnxk/cnxk_security.h (revision 930d94170e044ce1a2a2f222306c7dad50898728)
178d03027SSrujana Challa /* SPDX-License-Identifier: BSD-3-Clause
278d03027SSrujana Challa  * Copyright(C) 2021 Marvell.
378d03027SSrujana Challa  */
478d03027SSrujana Challa #ifndef _CNXK_SECURITY_H__
578d03027SSrujana Challa #define _CNXK_SECURITY_H__
678d03027SSrujana Challa 
778d03027SSrujana Challa #include <rte_crypto.h>
878d03027SSrujana Challa #include <rte_security.h>
978d03027SSrujana Challa 
10fdbec406SAnoob Joseph #include "roc_ie_on.h"
11fdbec406SAnoob Joseph #include "roc_ie_ot.h"
1278d03027SSrujana Challa 
1378d03027SSrujana Challa /* Response length calculation data */
1478d03027SSrujana Challa struct cnxk_ipsec_outb_rlens {
1578d03027SSrujana Challa 	uint16_t partial_len;
1678d03027SSrujana Challa 	uint8_t roundup_byte;
1778d03027SSrujana Challa 	int8_t roundup_len;
1878d03027SSrujana Challa 	uint16_t max_extended_len;
1978d03027SSrujana Challa };
2078d03027SSrujana Challa 
2178d03027SSrujana Challa int __roc_api
2278d03027SSrujana Challa cnxk_ipsec_outb_rlens_get(struct cnxk_ipsec_outb_rlens *rlens,
2378d03027SSrujana Challa 			  struct rte_security_ipsec_xform *ipsec_xfrm,
2478d03027SSrujana Challa 			  struct rte_crypto_sym_xform *crypto_xfrm);
2578d03027SSrujana Challa uint8_t __roc_api
2678d03027SSrujana Challa cnxk_ipsec_ivlen_get(enum rte_crypto_cipher_algorithm c_algo,
2778d03027SSrujana Challa 		     enum rte_crypto_auth_algorithm a_algo,
2878d03027SSrujana Challa 		     enum rte_crypto_aead_algorithm aead_algo);
2978d03027SSrujana Challa uint8_t __roc_api
3078d03027SSrujana Challa cnxk_ipsec_icvlen_get(enum rte_crypto_cipher_algorithm c_algo,
3178d03027SSrujana Challa 		      enum rte_crypto_auth_algorithm a_algo,
3278d03027SSrujana Challa 		      enum rte_crypto_aead_algorithm aead_algo);
3378d03027SSrujana Challa 
3478d03027SSrujana Challa uint8_t __roc_api
3578d03027SSrujana Challa cnxk_ipsec_outb_roundup_byte(enum rte_crypto_cipher_algorithm c_algo,
3678d03027SSrujana Challa 			     enum rte_crypto_aead_algorithm aead_algo);
3778d03027SSrujana Challa 
3878d03027SSrujana Challa /* [CN10K, .) */
3978d03027SSrujana Challa int __roc_api
4078d03027SSrujana Challa cnxk_ot_ipsec_inb_sa_fill(struct roc_ot_ipsec_inb_sa *sa,
4178d03027SSrujana Challa 			  struct rte_security_ipsec_xform *ipsec_xfrm,
425ece02e7SVidya Sagar Velumuri 			  struct rte_crypto_sym_xform *crypto_xfrm,
435ece02e7SVidya Sagar Velumuri 			  bool is_inline);
4478d03027SSrujana Challa int __roc_api
4578d03027SSrujana Challa cnxk_ot_ipsec_outb_sa_fill(struct roc_ot_ipsec_outb_sa *sa,
4678d03027SSrujana Challa 			   struct rte_security_ipsec_xform *ipsec_xfrm,
4778d03027SSrujana Challa 			   struct rte_crypto_sym_xform *crypto_xfrm);
4878d03027SSrujana Challa bool __roc_api cnxk_ot_ipsec_inb_sa_valid(struct roc_ot_ipsec_inb_sa *sa);
4978d03027SSrujana Challa bool __roc_api cnxk_ot_ipsec_outb_sa_valid(struct roc_ot_ipsec_outb_sa *sa);
5078d03027SSrujana Challa 
51532963b8SVidya Sagar Velumuri /* [CN9K] */
52*bcee02dcSVidya Sagar Velumuri int __roc_api cnxk_on_ipsec_inb_sa_create(struct rte_security_ipsec_xform *ipsec,
53532963b8SVidya Sagar Velumuri 					  struct rte_crypto_sym_xform *crypto_xform,
54532963b8SVidya Sagar Velumuri 					  struct roc_ie_on_inb_sa *in_sa);
55532963b8SVidya Sagar Velumuri 
56*bcee02dcSVidya Sagar Velumuri int __roc_api cnxk_on_ipsec_outb_sa_create(struct rte_security_ipsec_xform *ipsec,
57532963b8SVidya Sagar Velumuri 					   struct rte_crypto_sym_xform *crypto_xform,
58532963b8SVidya Sagar Velumuri 					   struct roc_ie_on_outb_sa *out_sa);
5978d03027SSrujana Challa #endif /* _CNXK_SECURITY_H__ */
60