X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_ipsec%2Frte_ipsec.h;h=dd60d959151b446f93e7db35d5c8380ecb8b9158;hb=46ee7b23462fa7b5281243516bacb83696fa110f;hp=93e4df1bd243af8efa5d16b598dabbf97de19873;hpb=1e0ad1e36d46a76bc675bd7df39539c3dd83211a;p=dpdk.git diff --git a/lib/librte_ipsec/rte_ipsec.h b/lib/librte_ipsec/rte_ipsec.h index 93e4df1bd2..dd60d95915 100644 --- a/lib/librte_ipsec/rte_ipsec.h +++ b/lib/librte_ipsec/rte_ipsec.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2018 Intel Corporation + * Copyright(c) 2018-2020 Intel Corporation */ #ifndef _RTE_IPSEC_H_ @@ -7,9 +7,9 @@ /** * @file rte_ipsec.h - * @b EXPERIMENTAL: this API may change without prior notice * * RTE IPsec support. + * * librte_ipsec provides a framework for data-path IPsec protocol * processing (ESP/AH). */ @@ -33,10 +33,15 @@ struct rte_ipsec_session; * (see rte_ipsec_pkt_process for more details). */ struct rte_ipsec_sa_pkt_func { - uint16_t (*prepare)(const struct rte_ipsec_session *ss, + union { + uint16_t (*async)(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[], struct rte_crypto_op *cop[], uint16_t num); + uint16_t (*sync)(const struct rte_ipsec_session *ss, + struct rte_mbuf *mb[], + uint16_t num); + } prepare; uint16_t (*process)(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[], uint16_t num); @@ -62,6 +67,7 @@ struct rte_ipsec_session { union { struct { struct rte_cryptodev_sym_session *ses; + uint8_t dev_id; } crypto; struct { struct rte_security_session *ses; @@ -84,7 +90,7 @@ struct rte_ipsec_session { * - Zero if operation completed successfully. * - -EINVAL if the parameters are invalid. */ -int __rte_experimental +int rte_ipsec_session_prepare(struct rte_ipsec_session *ss); /** @@ -108,11 +114,18 @@ rte_ipsec_session_prepare(struct rte_ipsec_session *ss); * @return * Number of successfully processed packets, with error code set in rte_errno. */ -static inline uint16_t __rte_experimental +static inline uint16_t rte_ipsec_pkt_crypto_prepare(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[], struct rte_crypto_op *cop[], uint16_t num) { - return ss->pkt_func.prepare(ss, mb, cop, num); + return ss->pkt_func.prepare.async(ss, mb, cop, num); +} + +static inline uint16_t +rte_ipsec_pkt_cpu_prepare(const struct rte_ipsec_session *ss, + struct rte_mbuf *mb[], uint16_t num) +{ + return ss->pkt_func.prepare.sync(ss, mb, num); } /** @@ -138,13 +151,15 @@ rte_ipsec_pkt_crypto_prepare(const struct rte_ipsec_session *ss, * @return * Number of successfully processed packets, with error code set in rte_errno. */ -static inline uint16_t __rte_experimental +static inline uint16_t rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[], uint16_t num) { return ss->pkt_func.process(ss, mb, num); } +#include + #ifdef __cplusplus } #endif